diff options
author | Ron Yorston <rmy@pobox.com> | 2020-06-29 11:46:43 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2020-06-29 11:46:43 +0100 |
commit | 9114e110a59a77909132af6d97bccdf5056adfa4 (patch) | |
tree | dc731daf69d0d92d4c08231f97bc0a7b433097ea /libbb | |
parent | 4f4e9e0d3366ec607d8765278b9753e41bdd544f (diff) | |
download | busybox-w32-9114e110a59a77909132af6d97bccdf5056adfa4.tar.gz busybox-w32-9114e110a59a77909132af6d97bccdf5056adfa4.tar.bz2 busybox-w32-9114e110a59a77909132af6d97bccdf5056adfa4.zip |
ash: avoid duplicated slashes in output of type/command builtins
Microsoft developers have a penchant for adding trailing slashes to
entries in PATH:
C:/Windows/System32/WindowsPowerShell/v1.0/
C:/Windows/System32/OpenSSH/
The 'type' and 'command -v' shell builtins return paths with duplicated
slashes for executables in those directories. See GitHub issue #191.
Bonus fixes:
- handle backslashes as well as slashes in concat_path_file()
- convert backslashes to slashes in the output of 'type', 'command -v'
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/concat_path_file.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libbb/concat_path_file.c b/libbb/concat_path_file.c index 5b4b7f113..81c7481ca 100644 --- a/libbb/concat_path_file.c +++ b/libbb/concat_path_file.c | |||
@@ -21,8 +21,14 @@ char* FAST_FUNC concat_path_file(const char *path, const char *filename) | |||
21 | 21 | ||
22 | if (!path) | 22 | if (!path) |
23 | path = ""; | 23 | path = ""; |
24 | #if ENABLE_PLATFORM_MINGW32 | ||
25 | lc = last_char_is(path, '/') ?: last_char_is(path, '\\'); | ||
26 | while (*filename == '/' || *filename == '\\') | ||
27 | filename++; | ||
28 | #else | ||
24 | lc = last_char_is(path, '/'); | 29 | lc = last_char_is(path, '/'); |
25 | while (*filename == '/') | 30 | while (*filename == '/') |
26 | filename++; | 31 | filename++; |
32 | #endif | ||
27 | return xasprintf("%s%s%s", path, (lc==NULL ? "/" : ""), filename); | 33 | return xasprintf("%s%s%s", path, (lc==NULL ? "/" : ""), filename); |
28 | } | 34 | } |