version 1.6, 2009/08/08 21:52:43 |
version 1.7, 2009/10/26 21:42:04 |
|
|
char *buf, *t; |
char *buf, *t; |
size_t len; |
size_t len; |
|
|
buf = NULL; |
buf = NULL; |
len = 0; |
len = 0; |
|
|
while ((ch = cmd_string_getc(s, p)) != endch) { |
while ((ch = cmd_string_getc(s, p)) != endch) { |
switch (ch) { |
switch (ch) { |
case EOF: |
case EOF: |
goto error; |
goto error; |
case '\\': |
case '\\': |
if (!esc) |
if (!esc) |
break; |
break; |
switch (ch = cmd_string_getc(s, p)) { |
switch (ch = cmd_string_getc(s, p)) { |
case EOF: |
case EOF: |
goto error; |
goto error; |
case 'e': |
case 'e': |
ch = '\033'; |
ch = '\033'; |
break; |
break; |
case 'r': |
case 'r': |
ch = '\r'; |
ch = '\r'; |
break; |
break; |
case 'n': |
case 'n': |
ch = '\n'; |
ch = '\n'; |
break; |
break; |
case 't': |
case 't': |
ch = '\t'; |
ch = '\t'; |
break; |
break; |
} |
} |
break; |
break; |
case '$': |
case '$': |
if (!esc) |
if (!esc) |
break; |
break; |
|
|
len += strlen(t); |
len += strlen(t); |
xfree(t); |
xfree(t); |
continue; |
continue; |
} |
} |
|
|
if (len >= SIZE_MAX - 2) |
if (len >= SIZE_MAX - 2) |
goto error; |
goto error; |
buf = xrealloc(buf, 1, len + 1); |
buf = xrealloc(buf, 1, len + 1); |
buf[len++] = ch; |
buf[len++] = ch; |
} |
} |
|
|
buf = xrealloc(buf, 1, len + 1); |
buf = xrealloc(buf, 1, len + 1); |
buf[len] = '\0'; |
buf[len] = '\0'; |
|
|
((ch) >= 'a' && (ch) <= 'z') || ((ch) >= 'A' && (ch) <= 'Z') || \ |
((ch) >= 'a' && (ch) <= 'z') || ((ch) >= 'A' && (ch) <= 'Z') || \ |
((ch) >= '0' && (ch) <= '9')) |
((ch) >= '0' && (ch) <= '9')) |
|
|
buf = NULL; |
buf = NULL; |
len = 0; |
len = 0; |
|
|
fch = EOF; |
fch = EOF; |