version 1.2.6.1, 2012/07/31 11:56:16
|
version 1.2.6.2, 2012/07/31 22:59:33
|
Line 103 www_cmptype(const char *ct, const char *type)
|
Line 103 www_cmptype(const char *ct, const char *type)
|
* |
* |
* @str = query string |
* @str = query string |
* @delim = delimiter |
* @delim = delimiter |
* return: NULL error or AV pair, must be free() after use! | * return: NULL error or AV pair, must be io_free() after use! |
*/ |
*/ |
char * | ait_val_t * |
www_getpair(char ** __restrict str, const char *delim) |
www_getpair(char ** __restrict str, const char *delim) |
{ |
{ |
char *tr, *s = NULL; | char *tr; |
int cx; |
int cx; |
|
ait_val_t *s; |
|
|
assert(str && *str && delim); |
assert(str && *str && delim); |
|
|
|
s = io_allocVar(); |
|
if (!s) { |
|
www_SetErr(io_GetErrno(), "%s", io_GetError()); |
|
return NULL; |
|
} |
|
|
cx = strcspn(*str, delim); |
cx = strcspn(*str, delim); |
tr = *str + cx; |
tr = *str + cx; |
|
if (*tr) |
|
*tr++ = 0; |
|
|
s = malloc(cx + 1); | AIT_SET_STR(s, *str); |
if (!s) { | |
LOGERR; | |
return NULL; | |
} else | |
strlcpy(s, *str, cx + 1); | |
|
|
*str = tr; |
*str = tr; |
if (**str) |
|
(*str)++; |
|
|
|
return s; |
return s; |
} |
} |
|
|