Example #1
0
static int
__num2string(int num, int sign, int setid, char *buf, size_t buflen,
             const char *const list[], size_t max, const char *def)
{
    int ret = 0;
    size_t len;

    (void *)&setid;
    if (0 <= num && num < max) {
        len = strlcpy(buf, list[num], buflen);
        if (len >= buflen)
            ret = ERANGE;
    } else {
        len = strlcpy(buf, def, buflen);
        if (len >= buflen)
            ret = ERANGE;
        else {
            ret = __itoa(num, sign, buf, len, buflen);
            if (ret == 0)
                ret = EINVAL;
        }
    }

    return ret;
}
Example #2
0
int
strerror_r(int errnum, char *strerrbuf, size_t buflen)
{
    int          save_errno;
    int          len, ret = 0;
    const char*  msg;

    save_errno = errno;
    msg        = __code_string_lookup( _sys_error_strings, errnum );
    if (msg != NULL) {
        len = strlcpy(strerrbuf, msg, buflen);
        if ((size_t)len >= buflen)
            ret = ERANGE;
    } else {
        len = strlcpy(strerrbuf, "Unknown error: ", buflen);
        if ((size_t)len >= buflen)
            ret = ERANGE;
        else {
            int  ret = __itoa(errnum, 1, strerrbuf, len, buflen);

            if (ret == 0)
                ret = EINVAL;
        }
    }
    return ret;
}
Example #3
0
char *__itoa(unsigned n, char s[])
{
	if (n / 10)
		s = __itoa(n / 10, s);	

	*s++ = n % 10 + '0';
	*s   = '\0';
}
Example #4
0
char *itoa(int n, char s[])
{
	unsigned int m;
	if (n < 0) {
		*s++ = '-';
		m = -n;
	}
	return __itoa(m, s);
}
Example #5
0
void replace(
    std::string& string
,   const std::string &search
,   const int value)
{
    // length of value for char buffer:

    const int n = _ma(1, ceil(log10(static_cast<float>(value))));
    char *buffer = new char[n + 1];

    __itoa(value, buffer, n + 1);

    replace(string, search, buffer);

    delete[] buffer;
}
Example #6
0
static int
__num2string(int num, int sign, int setid, char *buf, size_t buflen,
    char * list[], size_t max, const char *def)
{
	int ret = 0;
	size_t len;

#ifdef NLS
	nl_catd catd;
	catd = catopen("libc", NL_CAT_LOCALE);
#endif

	if (0 <= num && num < max) {
#ifdef NLS
		len = strlcpy(buf, catgets(catd, setid, num, list[num]),
		    buflen);
#else
		len = strlcpy(buf, list[num], buflen);
#endif
		if (len >= buflen)
			ret = ERANGE;
	} else {
#ifdef NLS
		len = strlcpy(buf, catgets(catd, setid, 0xffff, def), buflen);
#else
		len = strlcpy(buf, def, buflen);
#endif
		if (len >= buflen)
			ret = ERANGE;
		else {
			ret = __itoa(num, sign, buf, len, buflen);
			if (ret == 0)
				ret = EINVAL;
		}
	}

#ifdef NLS
	catclose(catd);
#endif

	return ret;
}
Example #7
0
BOOL process_costume(const CHAR *target, CHAR *source, const CHAR *format)
{
	pcostumex variables, selected, temp, last_var;
	pcostumestrx strvariables, strselected, strtemp, strlast_var;
	PCHAR pointer;
	char *_temp;
	int count, value;
	BOOL ifcon;
	CHAR *srcptr;

	pointer = format;
	srcptr = source;
	ifcon = FALSE;
	last_var = variables = costume_init();
	strlast_var = strvariables = costumestr_init();
	selected = NULL, strselected = NULL;

	for (; *pointer != _COTM_OPEN && *pointer; pointer++)
		;

	if (*pointer == '\0')
		return _CTOM_ERROR_NOT_EXIST_FORAMT;

	pointer++;

	do {
		switch (*pointer++)
		{
		case _COTM_CLOSE:
			costume_release(variables);
			return _CTOM_SUCCESS;	// end

		case _COTM_FUNCTION: // function call @var=%func%
			if (selected == NULL)
				return _CTOM_ERROR_FUNCTIONCALL_BEFOR_LVALUE;
			
			_temp = (char *)malloc(sizeof(char) * 20);
			for (count = 0; *pointer && *pointer != _COTM_FUNCTION; pointer++, count++)
				_temp[count] = *pointer;
			_temp[count] = 0;

			pointer++; // *pointer is pointer to '%'
if(ifcon == FALSE){
				// no-operate error
			selected->data = _costume_process_function(variables, _temp, target);
			selected = NULL; // abort selected variable
}
			break;

		case _COTM_VARIABLE: // @asdf, @asdf=
			temp = costume_init();

			_temp = (char *)malloc(sizeof(char) * 20);
			for (count = 0; _isalnumub((int)(*pointer)); pointer++, count++)
				_temp[count] = *pointer;
			_temp[count] = 0;

			if (NULL != (selected = _costume_find_variable(variables, _temp)))
if(ifcon == FALSE){
				return _CTOM_ERROR_ALREADY_EXIST_VARIABLE;
} else;
			
if(ifcon == FALSE){
			temp->name = _temp;
			last_var->_Next = temp;
			last_var = temp;
}
			if(*pointer == _COTM_LVALUE) {
				selected = temp;
				pointer++;
			}
			break;

		case _COTM_STRVARIABLE: // $asdf, $asdf="~~~"
			strtemp = costumestr_init();

			_temp = (char *)malloc(sizeof(char) * 20);
			for (count = 0; _isalnumub((int)(*pointer)); pointer++, count++)
				_temp[count] = *pointer;
			_temp[count] = 0;

			if (NULL != (strselected = _costume_find_strvariable(strvariables, _temp)))
if(ifcon == FALSE){
				return _CTOM_ERROR_ALREADY_EXIST_VARIABLE;
} else;
			
if(ifcon == FALSE){
			strtemp->name = _temp;
			strlast_var->_Next = strtemp;
			strlast_var = strtemp;
}
			if(*pointer == _COTM_LVALUE) {
				strselected = strtemp;
				pointer++;
			}
			break;

		case _COTM_IF:
			if (*pointer++ != _COTM_BRET_OPEN)
				return _CTOM_ERROR_NOT_FOUND_IF_SCOPE;

			value = _costume_if(variables, pointer);
			if (value)
				ifcon = FALSE;
			else
				ifcon = TRUE;

			pointer = _costume_ict;

			if (*pointer == _COTM_BRET_CLOSE)
				pointer++;
			else
				return _CTOM_ERROR_NOT_FOUND_SCOPE_CLOSE;
			break;

		case _COTM_ELSE:
			if (ifcon == FALSE)
				ifcon = TRUE;
			else
				ifcon = FALSE;
			break;

		case _COTM_DELIMITER:
			ifcon = FALSE;
			break;

		case _COTM_SHARP:
			switch(*pointer++)
			{
			case '#': *srcptr++ = '0'; *srcptr++ = 'x'; break;
			}
			break;

		case _COTM_OPTIONS: // add function
			switch(*pointer++)
			{
			case 'n': *srcptr++ = '\n'; break;
			case 'r': *srcptr++ = '\r'; break;
			case 't': *srcptr++ = '\t'; break;
			case 'f': *srcptr++ = '\f'; break;
			default: *srcptr++ = *(pointer-1); break;
			}
			break;

		case _COTM_CONNECTION:
			switch(*pointer++)
			{
			case _COTM_VARIABLE:
				_temp = (char *)malloc(sizeof(char) * 20);
				for (count = 0; _isalnumub((int)(*pointer)); pointer++, count++)
					_temp[count] = *pointer;
				_temp[count] = 0;

				if (NULL == (selected = _costume_find_variable(variables, _temp)))
					return _CTOM_ERROR_NOT_FOUND_VARIABLE;

				free(_temp);
				
if(ifcon == FALSE){
				_temp = __itoa(selected->data);

				for (; *_temp; _temp++)
					*srcptr++ = *_temp;
}
				selected = NULL;
				break;

			case _COTM_STRVARIABLE:
				_temp = (char *)malloc(sizeof(char) * 20);
				for (count = 0; _isalnumub((int)(*pointer)); pointer++, count++)
					_temp[count] = *pointer;
				_temp[count] = 0;
				
				if (NULL == (strselected = _costume_find_strvariable(strvariables, _temp)))
					return _CTOM_ERROR_NOT_FOUND_VARIABLE;

				free(_temp);
				
if(ifcon == FALSE){
				_temp = strselected->data;

				for (; *_temp; _temp++)
					*srcptr++ = *_temp;
}
				strselected = NULL;
				break;

			default:
				return _CTOM_ERROR_NOT_EXIST_FORAMT;
			}
			break;

		default:
			if(selected != NULL || strselected != NULL) {
				pointer--; // for 'pointer++'
				
				if(*pointer == _COTM_STRDELIMITER) {
					if (strselected == NULL)
						return _CTOM_ERROR_STRINGPTR_BEFOR_LVALUE;
					pointer++;

					_temp = (char *)malloc(sizeof(char) * 256);
					for (count = 0; *pointer != _COTM_STRDELIMITER; pointer++, count++)
						if(*pointer == _COTM_OPTIONS) {
							pointer++;
							_temp[count] = *pointer;
						} else {
							_temp[count] = *pointer;
						}
					_temp[count] = 0;

					pointer++;
if(ifcon == FALSE){
					strselected->data = _temp;
					strselected = NULL;
}
					break;
				} else if(*pointer == _COTM_PAREN_OPEN) {
					if (strselected == NULL)
						return _CTOM_ERROR_STRINGPTR_BEFOR_LVALUE;
					pointer++;

					_temp = _costume_get_string(strvariables, variables, target, pointer);

					pointer = ++_costume_ict;
					
if(ifcon == FALSE){
					strselected->data = _temp;
}
					break;
				} else {
					if (selected == NULL)
						return _CTOM_ERROR_INTEGERPTR_BEFOR_LVALUE;

					_temp = (char *)malloc(sizeof(char) * 20);
					for (count = 0; _isdigit(*pointer); pointer++, count++)
						_temp[count] = *pointer;
					_temp[count] = 0;
if(ifcon == FALSE){
					selected->data = _atoi(_temp);
					selected = NULL;
}
					break;
				}
			} else
				return _CTOM_ERROR_NOT_FOUND_OPTION;
		}
	} while (*pointer);

	return _CTOM_SUCCESS;
}
Example #8
0
char *_costume_get_string(const pcostumestrx cxstrlist, const pcostumex cxlist, const CHAR *target, const CHAR *format)
{
	char *ret = (char *) malloc (sizeof(char) * 1024);
	char *ptr = ret, *tmpptr, *tarptr;
	char tmp;
	char _temp[20] = {0,}; // find temp
	u32 inttmp;
	int count;
	pcostumex costmp;
	pcostumestrx cosstrtmp;
	BOOL not;

#define CONDITION(x) ((x) && not) || (!(x) && !not)
	tarptr = target;
	_costume_ict = format;
	zeroset(ret, sizeof(char) * 1024);
	
	do {
		switch(*_costume_ict++)
		{
		case '+': // add variable to ret
			switch(*_costume_ict++) {
			case _COTM_VARIABLE:
				for (count = 0; _isalnumub((int)(*_costume_ict)); _costume_ict++, count++)
					_temp[count] = *_costume_ict;
				_temp[count] = 0;
				
				if (NULL == (costmp = _costume_find_variable(cxlist, _temp)))
					return -1; // error
				inttmp = costmp->data;

				tmpptr = __itoa(inttmp);
				for (; *tmpptr; tmpptr++)
					*ptr++ = *tmpptr;

				break;

			case _COTM_STRVARIABLE:
				for (count = 0; _isalnumub((int)(*_costume_ict)); _costume_ict++, count++)
					_temp[count] = *_costume_ict;
				_temp[count] = 0;
				
				if (NULL == (cosstrtmp = _costume_find_strvariable(cxstrlist, _temp)))
					return -1; // error

				tmpptr = cosstrtmp->data;
				for (; *tmpptr; tmpptr++)
					*ptr++ = *tmpptr;

				break;

			case '*': // *x, *@int, *$str, *!x
			RE1:
				switch(*_costume_ict++) {
				case '!':
					switch(*_costume_ict++) {
					case 's': while (CONDITION(_isspace(*tarptr))) *ptr++ = *tarptr++; break;
					case 'S': while (CONDITION(!_isspace(*tarptr))) *ptr++ = *tarptr++; break;
					case 'd': while (CONDITION(_isnumeric(*tarptr))) *ptr++ = *tarptr++; break;
					case 'D': while (CONDITION(!_isnumeric(*tarptr))) *ptr++ = *tarptr++; break;
					case 'w': while (CONDITION(_isalnumub(*tarptr))) *ptr++ = *tarptr++; break;
					case 'W': while (CONDITION(!_isalnumub(*tarptr))) *ptr++ = *tarptr++; break;
					case '\\':
						switch(*_costume_ict++)
						{
						case 'n': while (CONDITION(*tarptr == '\n')) *ptr++ = *tarptr++; break;
						case 'r': while (CONDITION(*tarptr == '\r')) *ptr++ = *tarptr++; break;
						case 't': while (CONDITION(*tarptr == '\t')) *ptr++ = *tarptr++; break;
						case 'f': while (CONDITION(*tarptr == '\f')) *ptr++ = *tarptr++; break;
						default: while(CONDITION(*tarptr == *(_costume_ict-1))) *ptr++ = *tarptr++; break;
						}
						break;

					}
					not = TRUE;
					break;

				case '\\':
					switch(*_costume_ict++)
					{
					case 'n': if(CONDITION(*tarptr == '\n')) *ptr++ = *tarptr++; break;
					case 'r': if(CONDITION(*tarptr == '\r')) *ptr++ = *tarptr++; break;
					case 't': if(CONDITION(*tarptr == '\t')) *ptr++ = *tarptr++; break;
					case 'f': if(CONDITION(*tarptr == '\f')) *ptr++ = *tarptr++; break;
					default: if(CONDITION(*tarptr == *(_costume_ict-1))) *ptr++ = *tarptr++; break;
					}
					not = TRUE;
					break;

				case '^': // not
					not = FALSE;
					goto RE1;
					break;

				default:
					if(_isalnumub((int)(*_costume_ict))) {
						if(CONDITION(*tarptr == *_costume_ict)) 
							*ptr++ = *tarptr++;
						not = TRUE;
					}
					break;
				}
				break;

			}
			break;

		case '*': // *x, *@int, *$str, *!x
		RE2:
			switch(*_costume_ict++) {
			case '!':
				switch(*_costume_ict++) {
				case 's': while (CONDITION(_isspace(*tarptr))) tarptr++; break;
				case 'S': while (CONDITION(!_isspace(*tarptr))) tarptr++; break;
				case 'd': while (CONDITION(_isnumeric(*tarptr))) tarptr++; break;
				case 'D': while (CONDITION(!_isnumeric(*tarptr))) tarptr++; break;
				case 'w': while (CONDITION(_isalnumub(*tarptr))) tarptr++; break;
				case 'W': while (CONDITION(!_isalnumub(*tarptr))) tarptr++; break;
				case '\\':
					switch(*_costume_ict++)
					{
					case 'n': while (CONDITION(*tarptr == '\n')) tarptr++; break;
					case 'r': while (CONDITION(*tarptr == '\r')) tarptr++; break;
					case 't': while (CONDITION(*tarptr == '\t')) tarptr++; break;
					case 'f': while (CONDITION(*tarptr == '\f')) tarptr++; break;
					default: while(CONDITION(*tarptr == *(_costume_ict-1))) tarptr++; break;
					}
					break;

				}
				not = TRUE;
				break;

			case '\\':
				switch(*_costume_ict++)
				{
				case 'n': if(CONDITION(*tarptr == '\n')) tarptr++; break;
				case 'r': if(CONDITION(*tarptr == '\r')) tarptr++; break;
				case 't': if(CONDITION(*tarptr == '\t')) tarptr++; break;
				case 'f': if(CONDITION(*tarptr == '\f')) tarptr++; break;
				default: if(CONDITION(*tarptr == *(_costume_ict-1))) tarptr++; break;
				}
				not = TRUE;
				break;

			case '^': // not
				not = FALSE;
				goto RE2;
				break;

			default:
				if(_isalnumub((int)(*_costume_ict))) {
					if(CONDITION(*tarptr == *_costume_ict)) 
						*tarptr++;
					not = TRUE;
				}
				break;
			}
			break;

		case '/': // Delimiter
			break;

		case '\\':
			switch(*_costume_ict++)
			{
			case 'n': *ptr++ = '\n'; break;
			case 'r': *ptr++ = '\r'; break;
			case 't': *ptr++ = '\t'; break;
			case 'f': *ptr++ = '\f'; break;
			default: *ptr++ = *(_costume_ict-1); break;
			}
			break;

		default:
			if (_isalnum((int)(tmp = *(_costume_ict - 1)))) {
				*ptr++ = tmp;
				for (; _isalnum((int)*_costume_ict); _costume_ict++)
					*ptr++ = *_costume_ict;
			}
			break;
		}
	} while (*_costume_ict && *_costume_ict != ']');
	return ret;
}
Example #9
0
SDB_API int sdb_json_seti (Sdb *s, const char *k, const char *p, int v, ut32 cas) {
	char str[64];
	__itoa (v, str);
	return sdb_json_set (s, k, p, str, cas);
}