version 1.16, 2012/07/22 20:39:45
|
version 1.17, 2012/08/01 00:37:08
|
Line 303 io_FreeNullTerm(char *** __restrict arr)
|
Line 303 io_FreeNullTerm(char *** __restrict arr)
|
} |
} |
|
|
/* |
/* |
|
* io_argsNum() Parse and calculate number of arguments |
|
* |
|
* @csArgs = Input arguments line |
|
* @csDelim = Delimiter(s) for separate |
|
* return: 0 error format; -1 error:: can`t read; >0 ok, number of items |
|
*/ |
|
inline int |
|
io_argsNum(const char *csArgs, const char *csDelim) |
|
{ |
|
register int res; |
|
char *pos; |
|
|
|
assert(csArgs); |
|
assert(csDelim); |
|
if (!csArgs || !csDelim) |
|
return -1; |
|
|
|
for (res = 1, pos = (char*) csArgs; (pos = strpbrk(pos, csDelim)); res++, pos++); |
|
return res; |
|
} |
|
|
|
/* |
|
* io_MakeAV() Parse and make attribute/value pair |
|
* |
|
* @csArgs = Input argument line |
|
* @csDelim = Delimiter for separate |
|
* @psAttr = Output Attribute |
|
* @attrLen = Size of attribute array |
|
* @psValue = Output Value, if ==NULL this element not present value or not wanted for return |
|
* @valLen = Size of value array |
|
* return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items |
|
*/ |
|
int |
|
io_MakeAV(const char * __restrict csArgs, const char *csDelim, |
|
char * __restrict psAttr, int attrLen, char * __restrict psValue, int valLen) |
|
{ |
|
register int ret = 0; |
|
char *pos, *psBuf; |
|
|
|
if (!csArgs || !csDelim || !psAttr || !attrLen) |
|
return -1; |
|
if (psValue && !valLen) |
|
return -1; |
|
else |
|
memset(psValue, 0, valLen); |
|
psBuf = io_strdup(csArgs); |
|
if (!psBuf) { |
|
LOGERR; |
|
return -1; |
|
} |
|
|
|
pos = strpbrk(psBuf, csDelim); |
|
if (pos) |
|
*pos++ = 0; |
|
ret++; |
|
strlcpy(psAttr, psBuf, attrLen); |
|
|
|
if (pos && *pos) { |
|
ret++; |
|
if (psValue) |
|
strlcpy(psValue, pos, valLen); |
|
} |
|
|
|
io_free(psBuf); |
|
return ret; |
|
} |
|
|
|
/* |
|
* io_MakeAV2() Parse and make attribute/value pair over input string |
|
* |
|
* @csArgs = Input argument line, will be modified! |
|
* @csDelim = Delimiter for separate |
|
* @psAttr = Output Attribute |
|
* @psValue = Output Value, if ==NULL this element not present value or not wanted for return |
|
* return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items |
|
*/ |
|
int |
|
io_MakeAV2(char * __restrict psArgs, const char *csDelim, |
|
char ** __restrict psAttr, char ** __restrict psValue) |
|
{ |
|
register int ret = 0; |
|
char *pos; |
|
|
|
if (!psArgs || !csDelim) |
|
return -1; |
|
|
|
pos = strpbrk(psArgs, csDelim); |
|
if (pos) { |
|
*pos++ = 0; |
|
ret++; |
|
if (psAttr) |
|
*psAttr = psArgs; |
|
} else |
|
return 0; |
|
|
|
if (psValue) { |
|
if (pos && *pos) { |
|
ret++; |
|
*psValue = pos; |
|
} else |
|
*psValue = NULL; |
|
} |
|
|
|
return ret; |
|
} |
|
|
|
/* |
* io_Path2File() - Parse and make path/filename pair |
* io_Path2File() - Parse and make path/filename pair |
* |
* |
* @csArgs = Input argument line |
* @csArgs = Input argument line |