aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2019-03-18 08:14:28 +0000
committerRon Yorston <rmy@pobox.com>2019-03-18 08:14:28 +0000
commitd8043af0769250a480e324b51687fb2a994e3496 (patch)
tree2cab4f24dbe836c753d95e98dbc04ea0a6048b63
parentc01300361c7db148ea4c3971877c7dba5e4ba7f3 (diff)
downloadbusybox-w32-d8043af0769250a480e324b51687fb2a994e3496.tar.gz
busybox-w32-d8043af0769250a480e324b51687fb2a994e3496.tar.bz2
busybox-w32-d8043af0769250a480e324b51687fb2a994e3496.zip
ash: rewrite PATH update to save a few bytes
-rw-r--r--shell/ash.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 248f3f017..cd6196640 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -2507,19 +2507,14 @@ setvareq(char *s, int flags)
2507 struct var *vp, **vpp; 2507 struct var *vp, **vpp;
2508 2508
2509#if ENABLE_PLATFORM_MINGW32 2509#if ENABLE_PLATFORM_MINGW32
2510 struct pathname { 2510 const char *paths = "PATH=\0""CDPATH=\0""MANPATH=\0";
2511 const char *name; 2511 const char *p;
2512 const int len; 2512 int len;
2513 } paths[] = {
2514 { "PATH=", sizeof("PATH=")-1 },
2515 { "CDPATH=", sizeof("CDPATH=")-1 },
2516 { "MANPATH=", sizeof("MANPATH=")-1 },
2517 };
2518 int i;
2519 2513
2520 for (i = 0; i < ARRAY_SIZE(paths); ++i) { 2514 for (p = paths; *p; p += len + 1) {
2521 if (strncmp(s, paths[i].name, paths[i].len) == 0) { 2515 len = strlen(p);
2522 char *newpath = fix_pathvar(s, paths[i].len); 2516 if (strncmp(s, p, len) == 0) {
2517 char *newpath = fix_pathvar(s, len);
2523 if (newpath) { 2518 if (newpath) {
2524 if ((flags & (VTEXTFIXED|VSTACK|VNOSAVE)) == VNOSAVE) 2519 if ((flags & (VTEXTFIXED|VSTACK|VNOSAVE)) == VNOSAVE)
2525 free(s); 2520 free(s);
@@ -2527,6 +2522,7 @@ setvareq(char *s, int flags)
2527 flags &= ~(VTEXTFIXED|VSTACK); 2522 flags &= ~(VTEXTFIXED|VSTACK);
2528 s = newpath; 2523 s = newpath;
2529 } 2524 }
2525 break;
2530 } 2526 }
2531 } 2527 }
2532#endif 2528#endif