diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2010-04-05 22:20:26 +0200 |
---|---|---|
committer | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2010-09-10 19:28:28 +1000 |
commit | 7af304a473d3dc20da215dc64215b656088eb419 (patch) | |
tree | e1f6eba17f317a809af5bfcb715eb9f82dd32b2c | |
parent | da42856b7970e9221216c88926b626f8efda4f51 (diff) | |
download | busybox-w32-7af304a473d3dc20da215dc64215b656088eb419.tar.gz busybox-w32-7af304a473d3dc20da215dc64215b656088eb419.tar.bz2 busybox-w32-7af304a473d3dc20da215dc64215b656088eb419.zip |
win32: appletlib: special way to recognize applet name on Windows
argv[0] on Windows is always the executable path. We can't rely on it
to extract the applet name. For single busybox executable, just pass
an environment variable, BUSYBOX_APPLET_NAME.
Also strip .exe suffix when looking for applet name.
-rw-r--r-- | libbb/appletlib.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 2d52c3db9..f287e4522 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
@@ -806,6 +806,18 @@ int main(int argc UNUSED_PARAM, char **argv) | |||
806 | applet_name = argv[0]; | 806 | applet_name = argv[0]; |
807 | if (applet_name[0] == '-') | 807 | if (applet_name[0] == '-') |
808 | applet_name++; | 808 | applet_name++; |
809 | if (ENABLE_PLATFORM_MINGW32) { | ||
810 | const char *applet_name_env = getenv("BUSYBOX_APPLET_NAME"); | ||
811 | if (applet_name_env && *applet_name_env) { | ||
812 | applet_name = applet_name_env; | ||
813 | unsetenv("BUSYBOX_APPLET_NAME"); | ||
814 | } | ||
815 | else { | ||
816 | int len = strlen(applet_name); | ||
817 | if (len > 4 && !strcmp(applet_name+len-4, ".exe")) | ||
818 | argv[0][applet_name-argv[0]+len-4] = '\0'; | ||
819 | } | ||
820 | } | ||
809 | applet_name = bb_basename(applet_name); | 821 | applet_name = bb_basename(applet_name); |
810 | 822 | ||
811 | parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */ | 823 | parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */ |