diff options
author | Ron Yorston <rmy@pobox.com> | 2018-12-14 15:27:54 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2018-12-14 17:41:29 +0000 |
commit | a236242374daf911a01e998fabb1cc1268b2be7b (patch) | |
tree | 5e30a868b8580a645f94003e27bf96d6ebcd0ee1 /libbb/lineedit.c | |
parent | 575581082befff0e049ef67fa36bbdd2ca737e29 (diff) | |
download | busybox-w32-a236242374daf911a01e998fabb1cc1268b2be7b.tar.gz busybox-w32-a236242374daf911a01e998fabb1cc1268b2be7b.tar.bz2 busybox-w32-a236242374daf911a01e998fabb1cc1268b2be7b.zip |
win32: special treatment for PATH
The PATH shell variable is a special case. It can be exported to
the environment where it might be interpreted by native applications
which assume the separator is ';'. Hence:
- require that the separator used in PATH is ';'
- enforce this by intercepting calls to setvareq() that set PATH
and adjusting its value if necessary.
As a result of this the code to parse PATH can be simplified by
replacing the hardcoded Unix ':' path separator by the platform-
dependent macro PATH_SEP.
The MANPATH variable is also required to use ';' as its separator
but since it's less likely to be used this isn't enforced.
Diffstat (limited to 'libbb/lineedit.c')
-rw-r--r-- | libbb/lineedit.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/libbb/lineedit.c b/libbb/lineedit.c index 89178bbc3..6513219ce 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c | |||
@@ -798,11 +798,7 @@ static int path_parse(char ***p) | |||
798 | tmp = (char*)pth; | 798 | tmp = (char*)pth; |
799 | npth = 1; /* path component count */ | 799 | npth = 1; /* path component count */ |
800 | while (1) { | 800 | while (1) { |
801 | #if ENABLE_PLATFORM_MINGW32 | 801 | tmp = strchr(tmp, PATH_SEP); |
802 | tmp = (char *)next_path_sep(tmp); | ||
803 | #else | ||
804 | tmp = strchr(tmp, ':'); | ||
805 | #endif | ||
806 | if (!tmp) | 802 | if (!tmp) |
807 | break; | 803 | break; |
808 | tmp++; | 804 | tmp++; |
@@ -815,11 +811,7 @@ static int path_parse(char ***p) | |||
815 | res[0] = tmp = xstrdup(pth); | 811 | res[0] = tmp = xstrdup(pth); |
816 | npth = 1; | 812 | npth = 1; |
817 | while (1) { | 813 | while (1) { |
818 | #if ENABLE_PLATFORM_MINGW32 | 814 | tmp = strchr(tmp, PATH_SEP); |
819 | tmp = (char *)next_path_sep(tmp); | ||
820 | #else | ||
821 | tmp = strchr(tmp, ':'); | ||
822 | #endif | ||
823 | if (!tmp) | 815 | if (!tmp) |
824 | break; | 816 | break; |
825 | *tmp++ = '\0'; /* ':' -> '\0' */ | 817 | *tmp++ = '\0'; /* ':' -> '\0' */ |