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-04-20 19:14:16 +0200
commite9ec86e8a8b1425a770baf2b726e7023a7c07aa1 (patch)
treebc587647bf0197124c528ad0d17df9e6ecb6b952
parent0166faa685355d9cf1a0610727253687dbe99a31 (diff)
downloadbusybox-w32-e9ec86e8a8b1425a770baf2b726e7023a7c07aa1.tar.gz
busybox-w32-e9ec86e8a8b1425a770baf2b726e7023a7c07aa1.tar.bz2
busybox-w32-e9ec86e8a8b1425a770baf2b726e7023a7c07aa1.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. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
-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 */