aboutsummaryrefslogtreecommitdiff
path: root/sh.c
diff options
context:
space:
mode:
Diffstat (limited to 'sh.c')
-rw-r--r--sh.c17
1 files changed, 13 insertions, 4 deletions
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,
797 /* we need to remove whatever \ quoting is still present */ 797 /* we need to remove whatever \ quoting is still present */
798 src = dst = prog->argv[argc_l - 1]; 798 src = dst = prog->argv[argc_l - 1];
799 while (*src) { 799 while (*src) {
800 if (*src != '\\') 800 if (*src == '\\') {
801 src++;
802 *dst++ = process_escape_sequence(&src);
803 } else {
801 *dst++ = *src; 804 *dst++ = *src;
802 src++; 805 src++;
806 }
803 } 807 }
804 *dst = '\0'; 808 *dst = '\0';
805 } else if (!rc) { 809 } else if (!rc) {
@@ -812,11 +816,16 @@ static void globLastArgument(struct childProgram *prog, int *argcPtr,
812 }else{ 816 }else{
813 src = dst = prog->argv[argc_l - 1]; 817 src = dst = prog->argv[argc_l - 1];
814 while (*src) { 818 while (*src) {
815 if (*src != '\\') 819 if (*src == '\\') {
820 src++;
821 *dst++ = process_escape_sequence(&src);
822 } else {
816 *dst++ = *src; 823 *dst++ = *src;
817 src++; 824 src++;
825 }
818 } 826 }
819 *dst = '\0'; 827 *dst = '\0';
828
820 prog->globResult.gl_pathc=0; 829 prog->globResult.gl_pathc=0;
821 if (flags==0) 830 if (flags==0)
822 prog->globResult.gl_pathv=NULL; 831 prog->globResult.gl_pathv=NULL;