From 06e6f06ee02e26926a5152e25ae942744beb09da Mon Sep 17 00:00:00 2001
From: Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Date: Wed, 1 Jan 2025 16:46:11 +0000
Subject: [PATCH] Fix #110

---
 server/configure.ac |  2 +-
 server/epdfinfo.c   | 18 ++++++++++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/server/configure.ac b/server/configure.ac
index 9a8c46db..0789a3e3 100644
--- a/server/configure.ac
+++ b/server/configure.ac
@@ -84,7 +84,7 @@ AC_C_BIGENDIAN
 # Checks for library functions.
 AC_FUNC_ERROR_AT_LINE
 AC_FUNC_STRTOD
-AC_CHECK_FUNCS([strcspn strtol getline])
+AC_CHECK_FUNCS([strcspn strtol getline _tempnam])
 
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
diff --git a/server/epdfinfo.c b/server/epdfinfo.c
index b3925d0e..29793d6b 100644
--- a/server/epdfinfo.c
+++ b/server/epdfinfo.c
@@ -346,12 +346,13 @@ strchomp (char *str)
 static char*
 mktempfile()
 {
+#if defined (HAVE__TEMPNAM)
   char *filename = NULL;
   int tries = 3;
   while (! filename && tries-- > 0)
     {
 
-      filename =  tempnam(NULL, "epdfinfo");
+      filename =  _tempnam(NULL, "epdfinfo");
       if (filename)
         {
           int fd = open(filename, O_CREAT | O_EXCL | O_RDONLY, S_IRUSR | S_IWUSR);
@@ -366,7 +367,20 @@ mktempfile()
     }
   if (! filename)
     fprintf (stderr, "Unable to create tempfile");
-
+#else
+  char template[] = P_tmpdir "/epdfinfoXXXXXX";
+  char *filename = malloc(sizeof(template));
+  memcpy(filename, template, sizeof(template));
+  int fd = mkstemp(filename);
+  if (fd == -1)
+    {
+      fprintf (stderr, "Unable to create tempfile");
+      free(filename);
+      filename = NULL;
+    }
+  else
+    close(fd);
+#endif
   return filename;
 }