common.c | common.c | |||
---|---|---|---|---|
skipping to change at line 129 | skipping to change at line 129 | |||
{ | { | |||
switch (state) | switch (state) | |||
{ | { | |||
case 0: | case 0: | |||
/*** Skip spaces ***/ | /*** Skip spaces ***/ | |||
while (isspace((unsigned char)*p)) | while (isspace((unsigned char)*p)) | |||
{ | { | |||
p++; | p++; | |||
} | } | |||
state = 1; | ||||
case 1: | ||||
/*** Start segment ***/ | /*** Start segment ***/ | |||
result[cnt] = w; | result[cnt] = w; | |||
cnt++; | cnt++; | |||
state = 2; | state = 1; | |||
case 2: | /*** fall through **/ | |||
case 1: | ||||
/*** Unquoted segment ***/ | /*** Unquoted segment ***/ | |||
while (*p) | while (*p) | |||
{ | { | |||
if (isspace((unsigned char)*p)) | if (isspace((unsigned char)*p)) | |||
{ | { | |||
*w++ = '\0'; | *w++ = '\0'; | |||
p++; | p++; | |||
state = 0; | state = 0; | |||
break; | break; | |||
} | } | |||
else if (*p == '\'') | else if (*p == '\'') | |||
{ | { | |||
/*** Start quotation ***/ | /*** Start quotation ***/ | |||
p++; | p++; | |||
state = 3; | state = 2; | |||
break; | break; | |||
} | } | |||
else if (*p == '\\' && p[1]) | else if (*p == '\\' && p[1]) | |||
{ | { | |||
/*** Escape ***/ | /*** Escape ***/ | |||
p++; | p++; | |||
*w++ = *p++; | *w++ = *p++; | |||
} | } | |||
else | else | |||
{ | { | |||
*w++ = *p++; | *w++ = *p++; | |||
} | } | |||
} | } | |||
break; | break; | |||
case 3: | case 2: | |||
/*** Inside quotes ***/ | /*** Inside quotes ***/ | |||
while (*p) | while (*p) | |||
{ | { | |||
if (*p == '\'') | if (*p == '\'') | |||
{ | { | |||
p++; | p++; | |||
break; | break; | |||
} | } | |||
else if (*p == '\\' && p[1]) | else if (*p == '\\' && p[1]) | |||
{ | { | |||
/*** Escape ***/ | /*** Escape ***/ | |||
p++; | p++; | |||
*w++ = *p++; | *w++ = *p++; | |||
} | } | |||
else | else | |||
{ | { | |||
*w++ = *p++; | *w++ = *p++; | |||
} | } | |||
} | } | |||
state = 2; | state = 1; | |||
break; | break; | |||
} | } | |||
} | } | |||
if (!*p) | if (!*p) | |||
{ | { | |||
*w = '\0'; | *w = '\0'; | |||
return cnt; | return cnt; | |||
} | } | |||
End of changes. 7 change blocks. | ||||
7 lines changed or deleted | 7 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |