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-04-20 19:14:16 +0200 |
commit | e9ec86e8a8b1425a770baf2b726e7023a7c07aa1 (patch) | |
tree | bc587647bf0197124c528ad0d17df9e6ecb6b952 | |
parent | 0166faa685355d9cf1a0610727253687dbe99a31 (diff) | |
download | busybox-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.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 */ |