aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-04-05 22:20:26 +0200
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-09-10 19:28:28 +1000
commit7af304a473d3dc20da215dc64215b656088eb419 (patch)
treee1f6eba17f317a809af5bfcb715eb9f82dd32b2c
parentda42856b7970e9221216c88926b626f8efda4f51 (diff)
downloadbusybox-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.c12
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 */