use mktmpname(), not tmpnam().
[swftools.git] / pdf2swf / xpdf / gfile.cc
index d6d2363..9c7d789 100644 (file)
@@ -9,6 +9,7 @@
 //========================================================================
 
 #include <aconf.h>
+#include "../../config.h"
 
 #ifdef WIN32
    extern "C" {
@@ -442,6 +443,23 @@ time_t getModTime(char *fileName) {
   return statBuf.st_mtime;
 #endif
 }
+static char tmpbuf[128];
+
+char* mktmpname(char*ptr) {
+ //   used to be mktemp. This does remove the warnings, but
+ //   It's not exactly an improvement.
+#ifdef HAVE_LRAND48
+    sprintf(tmpbuf, "/tmp/%08x%08x",lrand48(),lrand48());
+#else
+#   ifdef HAVE_RAND
+       sprintf(tmpbuf, "/tmp/%08x%08x",rand(),rand());
+#   else
+       sprintf(tmpbuf, "/tmp/%08x%08x",time(0),(unsigned int)tmpbuf);
+#   endif
+#endif
+     return tmpbuf;
+}
 
 GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
 #if defined(WIN32)
@@ -471,7 +489,7 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
   // with this file name after the tmpnam call and before the fopen
   // call.  I will happily accept fixes to this function for non-Unix
   // OSs.
-  if (!(s = tmpnam(NULL))) {
+  if (!(s = mktmpname(NULL))) { //was: tmpnam
     return gFalse;
   }
   *name = new GString(s);
@@ -498,7 +516,7 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
     (*name)->append("/XXXXXX")->append(ext);
     fd = mkstemps((*name)->getCString(), strlen(ext));
 #else
-    if (!(s = tmpnam(NULL))) {
+    if (!(s = mktmpname(NULL))) { //was: tmpnam
       return gFalse;
     }
     *name = new GString(s);
@@ -515,7 +533,7 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
     (*name)->append("/XXXXXX");
     fd = mkstemp((*name)->getCString());
 #else // HAVE_MKSTEMP
-    if (!(s = tmpnam(NULL))) {
+    if (!(s = mktmpname(NULL))) { //was: tmpnam
       return gFalse;
     }
     *name = new GString(s);