aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 0d188e1e6..afa9f271b 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -297,6 +297,7 @@ static const char *const optletters_optnames[] = {
297#endif 297#endif
298#if ENABLE_PLATFORM_MINGW32 298#if ENABLE_PLATFORM_MINGW32
299 ,"\0" "noconsole" 299 ,"\0" "noconsole"
300 ,"X" "winxp"
300#endif 301#endif
301}; 302};
302 303
@@ -380,6 +381,7 @@ struct globals_misc {
380#endif 381#endif
381#if ENABLE_PLATFORM_MINGW32 382#if ENABLE_PLATFORM_MINGW32
382# define noconsole optlist[14 + ENABLE_ASH_BASH_COMPAT + 2*DEBUG] 383# define noconsole optlist[14 + ENABLE_ASH_BASH_COMPAT + 2*DEBUG]
384# define winxp optlist[15 + ENABLE_ASH_BASH_COMPAT + 2*DEBUG]
383#endif 385#endif
384 386
385 /* trap handler commands */ 387 /* trap handler commands */
@@ -13453,7 +13455,11 @@ exitshell(void)
13453} 13455}
13454 13456
13455static void 13457static void
13458#if ENABLE_PLATFORM_MINGW32
13459init(int xp)
13460#else
13456init(void) 13461init(void)
13462#endif
13457{ 13463{
13458 /* from input.c: */ 13464 /* from input.c: */
13459 /* we will never free this */ 13465 /* we will never free this */
@@ -13502,8 +13508,7 @@ init(void)
13502 struct passwd *pw; 13508 struct passwd *pw;
13503 13509
13504 for (envp = environ; envp && *envp; envp++) { 13510 for (envp = environ; envp && *envp; envp++) {
13505 end = strchr(*envp, '='); 13511 if (!(end=strchr(*envp, '=')))
13506 if (!end)
13507 continue; 13512 continue;
13508 13513
13509 /* make all variable names uppercase */ 13514 /* make all variable names uppercase */
@@ -13511,9 +13516,11 @@ init(void)
13511 *start = toupper(*start); 13516 *start = toupper(*start);
13512 13517
13513 /* convert backslashes to forward slashes */ 13518 /* convert backslashes to forward slashes */
13514 for ( ++end; *end; ++end ) { 13519 if (!xp) {
13515 if ( *end == '\\' ) { 13520 for ( ++end; *end; ++end ) {
13516 *end = '/'; 13521 if ( *end == '\\' ) {
13522 *end = '/';
13523 }
13517 } 13524 }
13518 } 13525 }
13519 } 13526 }
@@ -13739,7 +13746,7 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
13739#endif 13746#endif
13740 rootpid = getpid(); 13747 rootpid = getpid();
13741 13748
13742 init(); 13749 init(IF_PLATFORM_MINGW32(argc >= 2 && strcmp(argv[1], "-X") == 0));
13743 setstackmark(&smark); 13750 setstackmark(&smark);
13744 13751
13745#if ENABLE_PLATFORM_MINGW32 13752#if ENABLE_PLATFORM_MINGW32