Commit a8785551 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(run_msdos_command): When testing whether a shell

belongs to the MSDOS family, convert its name to lower-case.
parent ea3165c7
...@@ -2682,7 +2682,7 @@ run_msdos_command (argv, dir, tempin, tempout, temperr) ...@@ -2682,7 +2682,7 @@ run_msdos_command (argv, dir, tempin, tempout, temperr)
Lisp_Object dir; Lisp_Object dir;
int tempin, tempout, temperr; int tempin, tempout, temperr;
{ {
char *saveargv1, *saveargv2, **envv; char *saveargv1, *saveargv2, **envv, *lowcase_argv0, *pa, *pl;
char oldwd[MAXPATHLEN + 1]; /* Fixed size is safe on MSDOS. */ char oldwd[MAXPATHLEN + 1]; /* Fixed size is safe on MSDOS. */
int msshell, result = -1; int msshell, result = -1;
int in, out, inbak, outbak, errbak; int in, out, inbak, outbak, errbak;
...@@ -2692,7 +2692,19 @@ run_msdos_command (argv, dir, tempin, tempout, temperr) ...@@ -2692,7 +2692,19 @@ run_msdos_command (argv, dir, tempin, tempout, temperr)
/* Get current directory as MSDOS cwd is not per-process. */ /* Get current directory as MSDOS cwd is not per-process. */
getwd (oldwd); getwd (oldwd);
cmd = Ffile_name_nondirectory (build_string (argv[0])); /* If argv[0] is the shell, it might come in any lettercase.
Since `Fmember' is case-sensitive, we need to downcase
argv[0], even if we are on case-preserving filesystems. */
lowcase_argv0 = alloca (strlen (argv[0]) + 1);
for (pa = argv[0], pl = lowcase_argv0; *pa; pl++)
{
*pl = *pa++;
if (*pl >= 'A' && *pl <= 'Z')
*pl += 'a' - 'A';
}
*pl = '\0';
cmd = Ffile_name_nondirectory (build_string (lowcase_argv0));
msshell = !NILP (Fmember (cmd, Fsymbol_value (intern ("msdos-shells")))) msshell = !NILP (Fmember (cmd, Fsymbol_value (intern ("msdos-shells"))))
&& !strcmp ("-c", argv[1]); && !strcmp ("-c", argv[1]);
if (msshell) if (msshell)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment