# HG changeset patch # User Eli Zaretskii # Date 965024661 0 # Node ID 788ce16426e377e0c769783a5c9064107d780837 # Parent 01b106cfeb806c6bd8896b60cee08bc4ac40464d (run_msdos_command): Save and restore the master environment, for the case that child_setup signals an error. When mirroring slashes in DOS shell commands, don't fail if argv[2] has embedded blanks. diff -r 01b106cfeb80 -r 788ce16426e3 src/msdos.c --- a/src/msdos.c Sun Jul 30 14:03:38 2000 +0000 +++ b/src/msdos.c Mon Jul 31 06:24:21 2000 +0000 @@ -4651,18 +4651,23 @@ saveargv1 = argv[1]; saveargv2 = argv[2]; argv[1] = "/c"; - if (argv[2]) + /* We only need to mirror slashes if a DOS shell will be invoked + not via `system' (which does the mirroring itself). Yes, that + means DJGPP v1.x will lose here. */ + if (argv[2] && argv[3]) { char *p = alloca (strlen (argv[2]) + 1); strcpy (argv[2] = p, saveargv2); while (*p && isspace (*p)) p++; - while (*p && !isspace (*p)) - if (*p == '/') - *p++ = '\\'; - else - p++; + while (*p) + { + if (*p == '/') + *p++ = '\\'; + else + p++; + } } } @@ -4703,6 +4708,7 @@ if (*cmnd) { extern char **environ; + char **save_env = environ; int save_system_flags = __system_flags; /* Request the most powerful version of `system'. We need @@ -4717,6 +4723,7 @@ environ = envv; result = system (cmnd); __system_flags = save_system_flags; + environ = save_env; } else result = 0; /* emulate Unixy shell behavior with empty cmd line */