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 /miscutils | |
| 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 'miscutils')
| -rw-r--r-- | miscutils/man.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/miscutils/man.c b/miscutils/man.c index 567323a88..4ff58a9a0 100644 --- a/miscutils/man.c +++ b/miscutils/man.c | |||
| @@ -199,19 +199,10 @@ static char **add_MANPATH(char **man_path_list, int *count_mp, char *path) | |||
| 199 | if (path) while (*path) { | 199 | if (path) while (*path) { |
| 200 | char *next_path; | 200 | char *next_path; |
| 201 | char **path_element; | 201 | char **path_element; |
| 202 | #if ENABLE_PLATFORM_MINGW32 | 202 | next_path = strchr(path, PATH_SEP); |
| 203 | char save; | ||
| 204 | |||
| 205 | next_path = (char *)next_path_sep(path); | ||
| 206 | #else | ||
| 207 | next_path = strchr(path, ':'); | ||
| 208 | #endif | ||
| 209 | if (next_path) { | 203 | if (next_path) { |
| 210 | if (next_path == path) /* "::"? */ | 204 | if (next_path == path) /* "::"? */ |
| 211 | goto next; | 205 | goto next; |
| 212 | #if ENABLE_PLATFORM_MINGW32 | ||
| 213 | save = *next_path; | ||
| 214 | #endif | ||
| 215 | *next_path = '\0'; | 206 | *next_path = '\0'; |
| 216 | } | 207 | } |
| 217 | /* Do we already have path? */ | 208 | /* Do we already have path? */ |
| @@ -230,11 +221,7 @@ static char **add_MANPATH(char **man_path_list, int *count_mp, char *path) | |||
| 230 | if (!next_path) | 221 | if (!next_path) |
| 231 | break; | 222 | break; |
| 232 | /* "path" may be a result of getenv(), be nice and don't mangle it */ | 223 | /* "path" may be a result of getenv(), be nice and don't mangle it */ |
| 233 | #if ENABLE_PLATFORM_MINGW32 | 224 | *next_path = PATH_SEP; |
| 234 | *next_path = save; | ||
| 235 | #else | ||
| 236 | *next_path = ':'; | ||
| 237 | #endif | ||
| 238 | next: | 225 | next: |
| 239 | path = next_path + 1; | 226 | path = next_path + 1; |
| 240 | } | 227 | } |
