changeset 21733:a373669e1196

(main): Only set environment size for real shell, and provide extra directory argument, when running on Windows 95.
author Geoff Voelker <voelker@cs.washington.edu>
date Thu, 23 Apr 1998 23:38:28 +0000
parents 2cd3f6e8089e
children 807f4e7fa560
files nt/cmdproxy.c
diffstat 1 files changed, 27 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/nt/cmdproxy.c	Thu Apr 23 23:38:13 1998 +0000
+++ b/nt/cmdproxy.c	Thu Apr 23 23:38:28 1998 +0000
@@ -543,7 +543,7 @@
 #else
   /* Probably a mistake for there to be extra args; not fatal.  */
   if (argc > 0)
-    warn ("warning: extra args ignored after %s\n", argv[-1]);
+    warn ("warning: extra args ignored after '%s'\n", argv[-1]);
 #endif
 
   pass_through_args[num_pass_through_args] = NULL;
@@ -578,7 +578,7 @@
 	}
     }
 
-pass_to_shell:
+ pass_to_shell:
   if (need_shell)
     {
       char * p;
@@ -620,22 +620,32 @@
 	  for (argv = pass_through_args; *argv != NULL; ++argv)
 	    p += wsprintf (p, " %s", *argv);
 
-	  /* Always set environment size to something reasonable.  */
-	  wsprintf(p, " /e:%d /c %s", envsize, cmdline);
+	  if (GetVersion () & 0x80000000)
+	    /* Set environment size to something reasonable on Windows 95.  */
+	    wsprintf(p, " /e:%d /c %s", envsize, cmdline);
+	  else
+	    wsprintf(p, " /c %s", cmdline);
 	  cmdline = buf;
 	}
       else
 	{
-	  /* 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 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.  */
-	  GetShortPathName (progname, path, sizeof (path));
-	  p = strrchr (path, '\\');
-	  /* Trailing slash is acceptable, so always leave it.  */
-	  *(++p) = '\0';
+	  if (GetVersion () & 0x80000000)
+	    {
+	      /* 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
+		 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.  */
+	      GetShortPathName (progname, path, sizeof (path));
+	      p = strrchr (path, '\\');
+	      /* Trailing slash is acceptable, so always leave it.  */
+	      *(++p) = '\0';
+	    }
+	  else
+	    /* Dir arg not needed on NT.  */
+	    path[0] = '\0';
 
 	  cmdline = p = alloca (strlen (progname) + extra_arg_space +
 				strlen (path) + 13);
@@ -648,9 +658,9 @@
 	  for (argv = pass_through_args; *argv != NULL; ++argv)
 	    p += wsprintf (p, " %s", *argv);
 
-	  /* Always set environment size to something reasonable - again
-             cmd.exe ignores this silently.  */
-	  wsprintf (p, " /e:%d", envsize);
+	  if (GetVersion () & 0x80000000)
+	    /* Set environment size to something reasonable on Windows 95.  */
+	    wsprintf (p, " /e:%d", envsize);
 	}
     }