ash: expand: Do not quote backslashes in unquoted parameter expansion
No binary (build failed)
—
(log yok)
| @@ -6236,9 +6236,7 @@ memtodest(const char *p, size_t len, int syntax, int quotes) | |
| if (quotes & QUOTES_ESC) { | |
| int n = SIT(c, syntax); | |
| if (n == CCTL | |
| - | || (((quotes & EXP_FULL) || syntax != BASESYNTAX) |
| - | && n == CBACK |
| - | ) |
| + | || (syntax != BASESYNTAX && n == CBACK) |
| ) { | |
| USTPUTC(CTLESC, q); | |
| } | |
| @@ -7639,7 +7637,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len) | |
| } | |
| } | |
| } else { | |
| - | if (*p == '\\') |
| + | if (*p == '\\' && p[1]) |
| esc++; | |
| if (p[esc] == '/') { | |
| if (metaflag) | |
| @@ -7653,7 +7651,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len) | |
| return; | |
| p = name; | |
| do { | |
| - | if (*p == '\\') |
| + | if (*p == '\\' && p[1]) |
| p++; | |
| *enddir++ = *p; | |
| } while (*p++); | |
| @@ -7665,7 +7663,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len) | |
| if (name < start) { | |
| p = name; | |
| do { | |
| - | if (*p == '\\') |
| + | if (*p == '\\' && p[1]) |
| p++; | |
| *enddir++ = *p++; | |
| } while (p < start); | |
| @@ -0,0 +1,4 @@ | |
| + | Unquoted non-matching glob in var:'test*.TMP/\name_doesnt_exist' |
| + | Unquoted matching glob in var: 'testdir.TMP/name' |
| + | Quoted non-matching glob in var: 'test*.TMP/\name_doesnt_exist' |
| + | Quoted matching glob in var: 'test*.TMP/\name' |
| @@ -0,0 +1,10 @@ | |
| + | mkdir testdir.TMP |
| + | >testdir.TMP/name |
| + | a="test*.TMP/\name_doesnt_exist" |
| + | b="test*.TMP/\name" |
| + | printf "Unquoted non-matching glob in var:'%s'\n" $a |
| + | printf "Unquoted matching glob in var: '%s'\n" $b |
| + | printf "Quoted non-matching glob in var: '%s'\n" "$a" |
| + | printf "Quoted matching glob in var: '%s'\n" "$b" |
| + | rm -f testdir.TMP/name |
| + | rmdir testdir.TMP |
| @@ -0,0 +1,4 @@ | |
| + | Unquoted non-matching glob in var:'test*.TMP/\name_doesnt_exist' |
| + | Unquoted matching glob in var: 'testdir.TMP/name' |
| + | Quoted non-matching glob in var: 'test*.TMP/\name_doesnt_exist' |
| + | Quoted matching glob in var: 'test*.TMP/\name' |
| @@ -0,0 +1,10 @@ | |
| + | mkdir testdir.TMP |
| + | >testdir.TMP/name |
| + | a="test*.TMP/\name_doesnt_exist" |
| + | b="test*.TMP/\name" |
| + | printf "Unquoted non-matching glob in var:'%s'\n" $a |
| + | printf "Unquoted matching glob in var: '%s'\n" $b |
| + | printf "Quoted non-matching glob in var: '%s'\n" "$a" |
| + | printf "Quoted matching glob in var: '%s'\n" "$b" |
| + | rm -f testdir.TMP/name |
| + | rmdir testdir.TMP |