aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2020-08-13 13:56:17 +0100
committerRon Yorston <rmy@pobox.com>2020-08-13 14:58:01 +0100
commit6059723900f2af1fbd394c457d1feae342e344f6 (patch)
tree146c10c821977a8af0942cc930d3a4550cf4a624 /include
parent7d639339e0c46311f8873d560e6f168e71473cd9 (diff)
downloadbusybox-w32-6059723900f2af1fbd394c457d1feae342e344f6.tar.gz
busybox-w32-6059723900f2af1fbd394c457d1feae342e344f6.tar.bz2
busybox-w32-6059723900f2af1fbd394c457d1feae342e344f6.zip
win32: handle Unix-style absolute paths for executables
As noted in commit 548ec7045 (win32: interpret absolute paths as relative to %SYSTEMDRIVE%) a path starting with a '/' in the Unix world is treated as relative to the current drive by Windows. To avoid ambiguity that commit considered certain such paths to be relative to %SYSTEMDRIVE%. Extend this to paths representing executables. Add the functions need_system_drive() and auto_add_system_drive() to detect the need for a system drive prefix and to add it if necessary. Use these functions in: - the 'which' applet - the find_executable() function - tab-completion code - PATH look-up, shellexec(), describe_command() and find_command() in ash - parse_interpreter() and mingw_spawn_1() With these changes executable paths starting with a slash are handled consistently, whatever the current drive.
Diffstat (limited to 'include')
-rw-r--r--include/mingw.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/mingw.h b/include/mingw.h
index 91e4dc1a5..434f3a474 100644
--- a/include/mingw.h
+++ b/include/mingw.h
@@ -547,6 +547,8 @@ void hide_console(void);
547int unc_root_len(const char *dir); 547int unc_root_len(const char *dir);
548int root_len(const char *path); 548int root_len(const char *path);
549const char *get_system_drive(void); 549const char *get_system_drive(void);
550const char *need_system_drive(const char *path);
551char *auto_add_system_drive(const char *path);
550int chdir_system_drive(void); 552int chdir_system_drive(void);
551char *xabsolute_path(char *path); 553char *xabsolute_path(char *path);
552char *get_drive_cwd(const char *path, char *buffer, int size); 554char *get_drive_cwd(const char *path, char *buffer, int size);