aboutsummaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2024-11-19 09:18:56 +0000
committerRon Yorston <rmy@pobox.com>2024-11-19 09:18:56 +0000
commit90c87dc65452889cd79debdc58d46fee76d17726 (patch)
treeae877f6fd1a6b1843c3a34d279ca1f9a9961fece /shell/ash.c
parent0e958a72e1780138e68c799792190085cf505ee7 (diff)
downloadbusybox-w32-90c87dc65452889cd79debdc58d46fee76d17726.tar.gz
busybox-w32-90c87dc65452889cd79debdc58d46fee76d17726.tar.bz2
busybox-w32-90c87dc65452889cd79debdc58d46fee76d17726.zip
ash: match behaviour of cmd.exe in cd builtin
The Windows API strips trailing dots and spaces from the last component of a path. cmd.exe handles this quirk when changing directory by adjusting its idea of the current directory to match reality. The shell in busybox-w32 didn't do this, leading to some confusion. Fix the shell's cd builtin so it works more like cmd.exe. Adds 64-80 bytes. (GitHub issue #478)
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 1fc2a44b1..3919118f0 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -3338,6 +3338,7 @@ updatepwd(const char *dir)
3338 if (new > lim) 3338 if (new > lim)
3339 STUNPUTC(new); 3339 STUNPUTC(new);
3340 *new = 0; 3340 *new = 0;
3341 strip_dot_space((char *)stackblock());
3341 fix_path_case((char *)stackblock()); 3342 fix_path_case((char *)stackblock());
3342 return bs_to_slash((char *)stackblock()); 3343 return bs_to_slash((char *)stackblock());
3343#else 3344#else