From 8de1edce6aa5c394c5b20168d9e4c1cd3205e1fd Mon Sep 17 00:00:00 2001 From: Geoff Voelker Date: Tue, 10 Nov 1998 21:07:13 +0000 Subject: [PATCH] (main): Set environment size only when running command.com. --- nt/cmdproxy.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/nt/cmdproxy.c b/nt/cmdproxy.c index 312d6f6b3c..ce72ba129c 100644 --- a/nt/cmdproxy.c +++ b/nt/cmdproxy.c @@ -583,6 +583,7 @@ main (int argc, char ** argv) { char * p; int extra_arg_space = 0; + int run_command_dot_com; progname = getenv ("COMSPEC"); if (!progname) @@ -594,6 +595,10 @@ main (int argc, char ** argv) if (progname == NULL || strchr (progname, '\\') == NULL) fail ("error: the program %s could not be found.\n", getenv ("COMSPEC")); + /* Need to set environment size when running command.com. */ + run_command_dot_com = + (stricmp (strrchr (progname, '\\'), "command.com") == 0); + /* Work out how much extra space is required for pass_through_args. */ for (argv = pass_through_args; *argv != NULL; ++argv) @@ -620,8 +625,7 @@ main (int argc, char ** argv) for (argv = pass_through_args; *argv != NULL; ++argv) p += wsprintf (p, " %s", *argv); - if (GetVersion () & 0x80000000) - /* Set environment size to something reasonable on Windows 95. */ + if (run_command_dot_com) wsprintf(p, " /e:%d /c %s", envsize, cmdline); else wsprintf(p, " /c %s", cmdline); @@ -629,12 +633,10 @@ main (int argc, char ** argv) } else { - if (GetVersion () & 0x80000000) + if (run_command_dot_com) { /* Provide dir arg expected by command.com when first - started interactively (the "command search path"). - cmd.exe does not require it, but accepts it silently - - presumably other DOS compatible shells do the same. To + started interactively (the "command search path"). To avoid potential problems with spaces in command dir (which cannot be quoted - command.com doesn't like it), we always use the 8.3 form. */ @@ -644,7 +646,6 @@ main (int argc, char ** argv) *(++p) = '\0'; } else - /* Dir arg not needed on NT. */ path[0] = '\0'; cmdline = p = alloca (strlen (progname) + extra_arg_space + @@ -658,8 +659,7 @@ main (int argc, char ** argv) for (argv = pass_through_args; *argv != NULL; ++argv) p += wsprintf (p, " %s", *argv); - if (GetVersion () & 0x80000000) - /* Set environment size to something reasonable on Windows 95. */ + if (run_command_dot_com) wsprintf (p, " /e:%d", envsize); } } -- 2.20.1