diff options
Diffstat (limited to 'sh.c')
-rw-r--r-- | sh.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -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; |