Mercurial > emacs
changeset 16310:c987c025d448
(run_msdos_command): When testing whether a shell
belongs to the MSDOS family, convert its name to lower-case.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 24 Sep 1996 19:40:24 +0000 |
parents | fea88c3fb20c |
children | a56a8c6f2d8f |
files | src/msdos.c |
diffstat | 1 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/msdos.c Tue Sep 24 06:56:29 1996 +0000 +++ b/src/msdos.c Tue Sep 24 19:40:24 1996 +0000 @@ -2682,7 +2682,7 @@ Lisp_Object dir; 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. */ int msshell, result = -1; int in, out, inbak, outbak, errbak; @@ -2692,7 +2692,19 @@ /* Get current directory as MSDOS cwd is not per-process. */ 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")))) && !strcmp ("-c", argv[1]); if (msshell)