summary refs log tree commit diff
path: root/stdlib/isomac.c
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/isomac.c')
-rw-r--r--stdlib/isomac.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/stdlib/isomac.c b/stdlib/isomac.c
index ab63d1b154..f18e8d92eb 100644
--- a/stdlib/isomac.c
+++ b/stdlib/isomac.c
@@ -52,7 +52,7 @@
      preprocessor has something similar to gcc's -dM option. Tune
      PRINT_MACROS in this case. This program assumes headers are found
      under /usr/include and that there is a writable /tmp directory.
-     Tune SYSTEM_INCLUDE and TMPFILE if your system differs.
+     Tune SYSTEM_INCLUDE if your system differs.
      #define BROKEN_SYSTEM if system(NULL) bombs -- one more violation
      of ISO C, by the way.
 
@@ -75,9 +75,10 @@
 #include <stdlib.h>
 #include <string.h>
 
-#define TMPFILE             "/tmp/macros"
 #define HEADER_MAX          256
 
+static const char *macrofile;
+
 /* ISO C header names including Amendment 1 (without ".h" suffix).  */
 static char *header[] =
 {
@@ -247,8 +248,10 @@ get_null_defines (void)
   FILE *input;
   int first = 1;
 
+  macrofile = tmpnam (NULL);
+
   command = malloc (sizeof fmt + sizeof "/dev/null" + 2 * strlen (CC)
-		    + strlen (INC) + strlen (TMPFILE));
+		    + strlen (INC) + strlen (macrofile));
 
   if (command == NULL)
     {
@@ -256,7 +259,7 @@ get_null_defines (void)
       exit (1);
     }
 
-  sprintf (command, fmt, "/dev/null", CC, INC, CC, TMPFILE);
+  sprintf (command, fmt, "/dev/null", CC, INC, CC, macrofile);
 
   if (system (command))
     {
@@ -264,11 +267,11 @@ get_null_defines (void)
       return NULL;
     }
   free (command);
-  input = fopen (TMPFILE, "r");
+  input = fopen (macrofile, "r");
 
   if (input == NULL)
     {
-      printf ("Could not read %s: ", TMPFILE);
+      printf ("Could not read %s: ", macrofile);
       perror (NULL);
       return NULL;
     }
@@ -321,7 +324,7 @@ get_null_defines (void)
     }
   result[result_len] = NULL;
   fclose (input);
-  remove (TMPFILE);
+  remove (macrofile);
 
   return (const char **) result;
 }
@@ -335,7 +338,7 @@ check_header (const char *file_name, const char **except)
   int result = 0;
 
   command = malloc (sizeof fmt + strlen (file_name) + 2 * strlen (CC)
-		    + strlen (INC) + strlen (TMPFILE));
+		    + strlen (INC) + strlen (macrofile));
 
   if (command == NULL)
     {
@@ -344,7 +347,7 @@ check_header (const char *file_name, const char **except)
     }
 
   puts (file_name);
-  sprintf (command, fmt, file_name, CC, INC, CC, TMPFILE);
+  sprintf (command, fmt, file_name, CC, INC, CC, macrofile);
 
   if (system (command))
     {
@@ -352,11 +355,11 @@ check_header (const char *file_name, const char **except)
       result = 1;
     }
   free (command);
-  input = fopen (TMPFILE, "r");
+  input = fopen (macrofile, "r");
 
   if (input == NULL)
     {
-      printf ("Could not read %s: ", TMPFILE);
+      printf ("Could not read %s: ", macrofile);
       perror (NULL);
       return 1;
     }
@@ -430,7 +433,7 @@ check_header (const char *file_name, const char **except)
 	}
     }
   fclose (input);
-  remove (TMPFILE);
+  remove (macrofile);
 
   return result;
 }