diff options
| author | Ron Yorston <rmy@pobox.com> | 2024-11-19 09:18:56 +0000 |
|---|---|---|
| committer | Ron Yorston <rmy@pobox.com> | 2024-11-19 09:18:56 +0000 |
| commit | 90c87dc65452889cd79debdc58d46fee76d17726 (patch) | |
| tree | ae877f6fd1a6b1843c3a34d279ca1f9a9961fece /shell | |
| parent | 0e958a72e1780138e68c799792190085cf505ee7 (diff) | |
| download | busybox-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')
| -rw-r--r-- | shell/ash.c | 1 |
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 |
