changeset 55198:dabd7326e596

(init_environment): If one of the TMP... environment variables is set to a drive letter without a trailing slash, append a slash.
author Eli Zaretskii <eliz@gnu.org>
date Tue, 27 Apr 2004 14:22:05 +0000
parents 048eee9ae6ae
children 5248a5a7365b
files src/msdos.c
diffstat 1 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/msdos.c	Tue Apr 27 14:03:10 2004 +0000
+++ b/src/msdos.c	Tue Apr 27 14:22:05 2004 +0000
@@ -4408,9 +4408,28 @@
   for (i = 0; i < imax ; i++)
     {
       const char *tmp = tempdirs[i];
+      char buf[FILENAME_MAX];
 
       if (*tmp == '$')
-	tmp = getenv (tmp + 1);
+	{
+	  int tmp_len;
+
+	  tmp = getenv (tmp + 1);
+	  if (!tmp)
+	    continue;
+
+	  /* Some lusers set TMPDIR=e:, probably because some losing
+	     programs cannot handle multiple slashes if they use e:/.
+	     e: fails in `access' below, so we interpret e: as e:/.  */
+	  tmp_len = strlen(tmp);
+	  if (tmp[tmp_len - 1] != '/' && tmp[tmp_len - 1] != '\\')
+	    {
+	      strcpy(buf, tmp);
+	      buf[tmp_len++] = '/', buf[tmp_len] = 0;
+	      tmp = buf;
+	    }
+	}
+
       /* Note that `access' can lie to us if the directory resides on a
 	 read-only filesystem, like CD-ROM or a write-protected floppy.
 	 The only way to be really sure is to actually create a file and