Mercurial > flash_v2
diff packages/redboot/current/src/parse.c @ 143:6b5f480c6929 ecos-sw-2000-12-08
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
| author | jlarmour |
|---|---|
| date | Fri, 08 Dec 2000 03:30:06 +0000 |
| parents | eb9fd8c04db3 |
| children | ac086aa3217e |
line wrap: on
line diff
--- a/packages/redboot/current/src/parse.c +++ b/packages/redboot/current/src/parse.c @@ -64,6 +64,7 @@ struct cmd * parse(char *line, int *argc, char **argv) { char *cp = line; + char *pp; int indx = 0; while (*cp) { @@ -82,10 +83,19 @@ parse(char *line, int *argc, char **argv if (argv[indx-1] == cp) { argv[indx-1] = ++cp; } - while (*cp && *cp != '"') cp++; + pp = cp; + while (*cp && *cp != '"') { + if (*cp == '\\') { + // Skip over escape - allows for escaped '"' + cp++; + } + // Move string to swallow escapes + *pp++ = *cp++; + } if (!*cp) { printf("Unbalanced string!\n"); } else { + if (pp != cp) *pp = '\0'; *cp++ = '\0'; break; } @@ -298,7 +308,17 @@ parse_num(char *s, unsigned long *val, c c = *s++; if (_is_hex(c) && ((digit = _from_hex(c)) < radix)) { // Valid digit +#ifdef CYGPKG_HAL_MIPS + // FIXME: tx49 compiler generates 0x2539018 for MUL which + // isn't any good. + if (16 == radix) + result = result << 4; + else + result = 10 * result; + result += digit; +#else result = (result * radix) + digit; +#endif } else { if (delim != (char *)0) { // See if this character is one of the delimiters
