diff options
-rw-r--r-- | lash.c | 17 | ||||
-rw-r--r-- | sh.c | 17 | ||||
-rw-r--r-- | shell/lash.c | 17 |
3 files changed, 39 insertions, 12 deletions
@@ -797,9 +797,13 @@ static void globLastArgument(struct childProgram *prog, int *argcPtr, /* we need to remove whatever \ quoting is still present */ src = dst = prog->argv[argc_l - 1]; while (*src) { - if (*src != '\\') + if (*src == '\\') { + src++; + *dst++ = process_escape_sequence(&src); + } else { *dst++ = *src; - src++; + src++; + } } *dst = '\0'; } else if (!rc) { @@ -812,11 +816,16 @@ static void globLastArgument(struct childProgram *prog, int *argcPtr, }else{ src = dst = prog->argv[argc_l - 1]; while (*src) { - if (*src != '\\') + if (*src == '\\') { + src++; + *dst++ = process_escape_sequence(&src); + } else { *dst++ = *src; - src++; + src++; + } } *dst = '\0'; + prog->globResult.gl_pathc=0; if (flags==0) prog->globResult.gl_pathv=NULL; @@ -797,9 +797,13 @@ static void globLastArgument(struct childProgram *prog, int *argcPtr, /* we need to remove whatever \ quoting is still present */ src = dst = prog->argv[argc_l - 1]; while (*src) { - if (*src != '\\') + if (*src == '\\') { + src++; + *dst++ = process_escape_sequence(&src); + } else { *dst++ = *src; - src++; + src++; + } } *dst = '\0'; } else if (!rc) { @@ -812,11 +816,16 @@ static void globLastArgument(struct childProgram *prog, int *argcPtr, }else{ src = dst = prog->argv[argc_l - 1]; while (*src) { - if (*src != '\\') + if (*src == '\\') { + src++; + *dst++ = process_escape_sequence(&src); + } else { *dst++ = *src; - src++; + src++; + } } *dst = '\0'; + prog->globResult.gl_pathc=0; if (flags==0) prog->globResult.gl_pathv=NULL; diff --git a/shell/lash.c b/shell/lash.c index 7f5b90602..87d4fbfbd 100644 --- a/shell/lash.c +++ b/shell/lash.c @@ -797,9 +797,13 @@ static void globLastArgument(struct childProgram *prog, int *argcPtr, /* we need to remove whatever \ quoting is still present */ src = dst = prog->argv[argc_l - 1]; while (*src) { - if (*src != '\\') + if (*src == '\\') { + src++; + *dst++ = process_escape_sequence(&src); + } else { *dst++ = *src; - src++; + src++; + } } *dst = '\0'; } else if (!rc) { @@ -812,11 +816,16 @@ static void globLastArgument(struct childProgram *prog, int *argcPtr, }else{ src = dst = prog->argv[argc_l - 1]; while (*src) { - if (*src != '\\') + if (*src == '\\') { + src++; + *dst++ = process_escape_sequence(&src); + } else { *dst++ = *src; - src++; + src++; + } } *dst = '\0'; + prog->globResult.gl_pathc=0; if (flags==0) prog->globResult.gl_pathv=NULL; |