diff options
Diffstat (limited to 'shell/ash.c')
-rw-r--r-- | shell/ash.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/shell/ash.c b/shell/ash.c index ad50537a1..dc1a55a6b 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -6236,9 +6236,7 @@ memtodest(const char *p, size_t len, int syntax, int quotes) | |||
6236 | if (quotes & QUOTES_ESC) { | 6236 | if (quotes & QUOTES_ESC) { |
6237 | int n = SIT(c, syntax); | 6237 | int n = SIT(c, syntax); |
6238 | if (n == CCTL | 6238 | if (n == CCTL |
6239 | || (((quotes & EXP_FULL) || syntax != BASESYNTAX) | 6239 | || (syntax != BASESYNTAX && n == CBACK) |
6240 | && n == CBACK | ||
6241 | ) | ||
6242 | ) { | 6240 | ) { |
6243 | USTPUTC(CTLESC, q); | 6241 | USTPUTC(CTLESC, q); |
6244 | } | 6242 | } |
@@ -7639,7 +7637,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len) | |||
7639 | } | 7637 | } |
7640 | } | 7638 | } |
7641 | } else { | 7639 | } else { |
7642 | if (*p == '\\') | 7640 | if (*p == '\\' && p[1]) |
7643 | esc++; | 7641 | esc++; |
7644 | if (p[esc] == '/') { | 7642 | if (p[esc] == '/') { |
7645 | if (metaflag) | 7643 | if (metaflag) |
@@ -7653,7 +7651,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len) | |||
7653 | return; | 7651 | return; |
7654 | p = name; | 7652 | p = name; |
7655 | do { | 7653 | do { |
7656 | if (*p == '\\') | 7654 | if (*p == '\\' && p[1]) |
7657 | p++; | 7655 | p++; |
7658 | *enddir++ = *p; | 7656 | *enddir++ = *p; |
7659 | } while (*p++); | 7657 | } while (*p++); |
@@ -7665,7 +7663,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len) | |||
7665 | if (name < start) { | 7663 | if (name < start) { |
7666 | p = name; | 7664 | p = name; |
7667 | do { | 7665 | do { |
7668 | if (*p == '\\') | 7666 | if (*p == '\\' && p[1]) |
7669 | p++; | 7667 | p++; |
7670 | *enddir++ = *p++; | 7668 | *enddir++ = *p++; |
7671 | } while (p < start); | 7669 | } while (p < start); |