aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lash.c17
-rw-r--r--sh.c17
-rw-r--r--shell/lash.c17
3 files changed, 39 insertions, 12 deletions
diff --git a/lash.c b/lash.c
index 7f5b90602..87d4fbfbd 100644
--- a/lash.c
+++ b/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;
diff --git a/sh.c b/sh.c
index 7f5b90602..87d4fbfbd 100644
--- a/sh.c
+++ b/sh.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;
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;