changeset 15618:5da6a61ce827

(dostounix_filename): On caseless filesystems, downcase the filename. (unixtodos_filename): Downcase the drive letter. (init_environment): Downcase the pathnames in the environment only when running on caseless filesystems.
author Miles Bader <miles@gnu.org>
date Sun, 07 Jul 1996 01:59:51 +0000
parents 69c516d109e7
children f698fc246195
files src/msdos.c
diffstat 1 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/msdos.c	Sun Jul 07 01:59:35 1996 +0000
+++ b/src/msdos.c	Sun Jul 07 01:59:51 1996 +0000
@@ -2130,12 +2130,16 @@
 
 /* ----------------------- DOS / UNIX conversion --------------------- */
 
+void msdos_downcase_filename (unsigned char *);
+
 /* Destructively turn backslashes into slashes.  */
 
 void
 dostounix_filename (p)
      register char *p;
 {
+  msdos_downcase_filename (p);
+
   while (*p)
     {
       if (*p == '\\')
@@ -2150,6 +2154,12 @@
 unixtodos_filename (p)
      register char *p;
 {
+  if (p[1] == ':' && *p >= 'A' && *p <= 'Z')
+    {
+      *p += 'a' - 'A';
+      p += 2;
+    }
+
   while (*p)
     {
       if (*p == '/')
@@ -2159,7 +2169,6 @@
 }
 
 /* Get the default directory for a given drive.  0=def, 1=A, 2=B, ...  */
-void msdos_downcase_filename (unsigned char *);
 
 int
 getdefdir (drive, dst)
@@ -2376,7 +2385,7 @@
      "c:/emacs/bin/emacs.exe" our root will be "c:/emacs".  */
   root = alloca (MAXPATHLEN + 20);
   _fixpath (argv[0], root);
-  strlwr (root);
+  msdos_downcase_filename (root);
   len = strlen (root);
   while (len > 0 && root[len] != '/' && root[len] != ':')
     len--;
@@ -2410,7 +2419,6 @@
   if (!s) s = "c:/command.com";
   t = alloca (strlen (s) + 1);
   strcpy (t, s);
-  strlwr (t);
   dostounix_filename (t);
   setenv ("SHELL", t, 0);
 
@@ -2421,7 +2429,6 @@
   /* Current directory is always considered part of MsDos's path but it is
      not normally mentioned.  Now it is.  */
   strcat (strcpy (t, ".;"), s);
-  strlwr (t);
   dostounix_filename (t); /* Not a single file name, but this should work.  */
   setenv ("PATH", t, 1);