make next_arg() more readable & efficient
This commit is contained in:
parent
3ceb553102
commit
c0bf867669
|
@ -458,33 +458,37 @@ imap_refcounted_done_box( imap_store_t *ctx ATTR_UNUSED, struct imap_cmd *cmd, i
|
|||
}
|
||||
|
||||
static char *
|
||||
next_arg( char **s )
|
||||
next_arg( char **ps )
|
||||
{
|
||||
char *ret;
|
||||
char *ret, *s;
|
||||
|
||||
if (!s || !*s)
|
||||
assert( ps );
|
||||
s = *ps;
|
||||
if (!s)
|
||||
return 0;
|
||||
while (isspace( (unsigned char) **s ))
|
||||
(*s)++;
|
||||
if (!**s) {
|
||||
*s = 0;
|
||||
while (isspace( (unsigned char)*s ))
|
||||
s++;
|
||||
if (!*s) {
|
||||
*ps = 0;
|
||||
return 0;
|
||||
}
|
||||
if (**s == '"') {
|
||||
++*s;
|
||||
ret = *s;
|
||||
*s = strchr( *s, '"' );
|
||||
if (*s == '"') {
|
||||
++s;
|
||||
ret = s;
|
||||
s = strchr( s, '"' );
|
||||
} else {
|
||||
ret = *s;
|
||||
while (**s && !isspace( (unsigned char) **s ))
|
||||
(*s)++;
|
||||
ret = s;
|
||||
while (*s && !isspace( (unsigned char)*s ))
|
||||
s++;
|
||||
}
|
||||
if (*s) {
|
||||
if (**s)
|
||||
*(*s)++ = 0;
|
||||
if (!**s)
|
||||
*s = 0;
|
||||
if (s) {
|
||||
if (*s)
|
||||
*s++ = 0;
|
||||
if (!*s)
|
||||
s = 0;
|
||||
}
|
||||
|
||||
*ps = s;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user