]> git.gag.com Git - fw/sdcc/blobdiff - src/SDCCglue.c
src/SDCCmain.c (tempfileandname): added check for missing TMP/TEMP/TMPDIR variable
[fw/sdcc] / src / SDCCglue.c
index 1f410e788b459e96d3a64218b6be01f5334f5c10..9b58776a875091436ab962e67943a084aea3c1e7 100644 (file)
@@ -1800,12 +1800,23 @@ tempfileandname(char *fname, size_t len)
 
   const char *tmpdir = NULL;
   int fd;
+  static int warning_emitted;
 
   if ((tmpdir = getenv ("TMP")) == NULL)
     if ((tmpdir = getenv ("TEMP")) == NULL)
       tmpdir = getenv ("TMPDIR");
 
-#ifndef _WIN32
+#if defined(_WIN32)
+  if (tmpdir == NULL)
+    {
+      tmpdir = "c:\\";
+      if (!warning_emitted)
+        {
+          fprintf (stderr, "TMP not defined in environment, using %s for temporary files\n", tmpdir);
+         warning_emitted = 1;
+       }
+    }
+#else
   {
     /* try with /usr/tmp and /tmp on Un*x systems */
     struct stat statbuf;
@@ -1815,6 +1826,10 @@ tempfileandname(char *fname, size_t len)
         tmpdir = "/usr/tmp";
       else if (stat("/tmp", &statbuf) != -1)
         tmpdir = "/tmp";
+      if (!warning_emitted)                                                                                                {
+          fprintf (stderr, "TMP not defined in environment, using %s for temporary files\n", tmpdir);
+          warning_emitted = 1;
+        }
     }
   }
 #endif