diff options
author | Ron Yorston <rmy@pobox.com> | 2017-02-04 10:19:31 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2017-02-04 10:19:31 +0000 |
commit | e1a1a3db00f1333793f348bfc550a4463fe7f244 (patch) | |
tree | fb9a25d6378773e478281766d781ba84d41b3b58 | |
parent | c6ec14a39aa1a6fe98fe4bec1ee3d545be9d5410 (diff) | |
download | busybox-w32-noconsole.tar.gz busybox-w32-noconsole.tar.bz2 busybox-w32-noconsole.zip |
ash: make the noconsole option configurable at build timenoconsole
The noconsole option depends on APIs that aren't available in
all incarnations of Microsoft Windows. Allow it to be disabled
at build time.
-rw-r--r-- | configs/mingw32_defconfig | 1 | ||||
-rw-r--r-- | configs/mingw64_defconfig | 1 | ||||
-rw-r--r-- | shell/ash.c | 24 |
3 files changed, 22 insertions, 4 deletions
diff --git a/configs/mingw32_defconfig b/configs/mingw32_defconfig index 2d0e24891..6857cf22d 100644 --- a/configs/mingw32_defconfig +++ b/configs/mingw32_defconfig | |||
@@ -1036,6 +1036,7 @@ CONFIG_ASH_BUILTIN_PRINTF=y | |||
1036 | CONFIG_ASH_BUILTIN_TEST=y | 1036 | CONFIG_ASH_BUILTIN_TEST=y |
1037 | CONFIG_ASH_HELP=y | 1037 | CONFIG_ASH_HELP=y |
1038 | CONFIG_ASH_CMDCMD=y | 1038 | CONFIG_ASH_CMDCMD=y |
1039 | CONFIG_ASH_NOCONSOLE=y | ||
1039 | # CONFIG_ASH_MAIL is not set | 1040 | # CONFIG_ASH_MAIL is not set |
1040 | # CONFIG_CTTYHACK is not set | 1041 | # CONFIG_CTTYHACK is not set |
1041 | # CONFIG_HUSH is not set | 1042 | # CONFIG_HUSH is not set |
diff --git a/configs/mingw64_defconfig b/configs/mingw64_defconfig index 7ee4e58f9..4818556a9 100644 --- a/configs/mingw64_defconfig +++ b/configs/mingw64_defconfig | |||
@@ -1036,6 +1036,7 @@ CONFIG_ASH_BUILTIN_PRINTF=y | |||
1036 | CONFIG_ASH_BUILTIN_TEST=y | 1036 | CONFIG_ASH_BUILTIN_TEST=y |
1037 | CONFIG_ASH_HELP=y | 1037 | CONFIG_ASH_HELP=y |
1038 | CONFIG_ASH_CMDCMD=y | 1038 | CONFIG_ASH_CMDCMD=y |
1039 | CONFIG_ASH_NOCONSOLE=y | ||
1039 | # CONFIG_ASH_MAIL is not set | 1040 | # CONFIG_ASH_MAIL is not set |
1040 | # CONFIG_CTTYHACK is not set | 1041 | # CONFIG_CTTYHACK is not set |
1041 | # CONFIG_HUSH is not set | 1042 | # CONFIG_HUSH is not set |
diff --git a/shell/ash.c b/shell/ash.c index fe185f5d9..e21c4433d 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -161,6 +161,18 @@ | |||
161 | //config: help | 161 | //config: help |
162 | //config: Enable "check for new mail" function in the ash shell. | 162 | //config: Enable "check for new mail" function in the ash shell. |
163 | //config: | 163 | //config: |
164 | //config: | ||
165 | //config:config ASH_NOCONSOLE | ||
166 | //config: bool "'noconsole' option" | ||
167 | //config: default y | ||
168 | //config: depends on (ASH || SH_IS_ASH || BASH_IS_ASH) && PLATFORM_MINGW32 | ||
169 | //config: help | ||
170 | //config: Enable support for the 'noconsole' option, which attempts to | ||
171 | //config: hide the console normally associated with a command line | ||
172 | //config: application. This may be useful when running a shell script | ||
173 | //config: from a GUI application. Disable this if your platform doesn't | ||
174 | //config: support the required APIs. | ||
175 | //config: | ||
164 | //config:endif # ash options | 176 | //config:endif # ash options |
165 | 177 | ||
166 | //applet:IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP)) | 178 | //applet:IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP)) |
@@ -334,9 +346,11 @@ static const char *const optletters_optnames[] = { | |||
334 | ,"\0" "debug" | 346 | ,"\0" "debug" |
335 | #endif | 347 | #endif |
336 | #if ENABLE_PLATFORM_MINGW32 | 348 | #if ENABLE_PLATFORM_MINGW32 |
337 | ,"\0" "noconsole" | ||
338 | ,"X" "winxp" | 349 | ,"X" "winxp" |
339 | #endif | 350 | #endif |
351 | #if ENABLE_ASH_NOCONSOLE | ||
352 | ,"\0" "noconsole" | ||
353 | #endif | ||
340 | }; | 354 | }; |
341 | 355 | ||
342 | #define optletters(n) optletters_optnames[n][0] | 356 | #define optletters(n) optletters_optnames[n][0] |
@@ -417,8 +431,10 @@ struct globals_misc { | |||
417 | # define debug optlist[15 + ENABLE_ASH_BASH_COMPAT] | 431 | # define debug optlist[15 + ENABLE_ASH_BASH_COMPAT] |
418 | #endif | 432 | #endif |
419 | #if ENABLE_PLATFORM_MINGW32 | 433 | #if ENABLE_PLATFORM_MINGW32 |
420 | # define noconsole optlist[14 + ENABLE_ASH_BASH_COMPAT + 2*DEBUG] | 434 | # define winxp optlist[14 + ENABLE_ASH_BASH_COMPAT + 2*DEBUG] |
421 | # define winxp optlist[15 + ENABLE_ASH_BASH_COMPAT + 2*DEBUG] | 435 | #endif |
436 | #if ENABLE_ASH_NOCONSOLE | ||
437 | # define noconsole optlist[15 + ENABLE_ASH_BASH_COMPAT + 2*DEBUG] | ||
422 | #endif | 438 | #endif |
423 | 439 | ||
424 | /* trap handler commands */ | 440 | /* trap handler commands */ |
@@ -14097,7 +14113,7 @@ int ash_main(int argc UNUSED_PARAM, char **argv) | |||
14097 | trace_puts_args(argv); | 14113 | trace_puts_args(argv); |
14098 | #endif | 14114 | #endif |
14099 | 14115 | ||
14100 | #if ENABLE_PLATFORM_MINGW32 | 14116 | #if ENABLE_ASH_NOCONSOLE |
14101 | if ( noconsole ) { | 14117 | if ( noconsole ) { |
14102 | DWORD dummy; | 14118 | DWORD dummy; |
14103 | 14119 | ||