aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2020-06-29 11:46:43 +0100
committerRon Yorston <rmy@pobox.com>2020-06-29 11:46:43 +0100
commit9114e110a59a77909132af6d97bccdf5056adfa4 (patch)
treedc731daf69d0d92d4c08231f97bc0a7b433097ea /libbb
parent4f4e9e0d3366ec607d8765278b9753e41bdd544f (diff)
downloadbusybox-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.c6
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}