-diff -ur a2ps-4.13.orig/lib/routines.c a2ps-4.13/lib/routines.c\r
---- a2ps-4.13.orig/lib/routines.c Sat Oct 16 06:46:37 1999\r
-+++ a2ps-4.13/lib/routines.c Fri Jan 5 12:51:20 2001\r
-@@ -242,3 +242,50 @@\r
- /* Don't complain if you can't unlink. Who cares of a tmp file? */\r
- unlink (filename);\r
- }\r
-+\r
-+/*\r
-+ * Securely generate a temp file, and make sure it gets\r
-+ * deleted upon exit.\r
-+ */\r
-+static char ** tempfiles = NULL;\r
-+static unsigned ntempfiles = 0;\r
-+\r
-+static void\r
-+cleanup_tempfiles()\r
-+{\r
-+ while (ntempfiles--)\r
-+ unlink(tempfiles[ntempfiles]);\r
-+}\r
-+\r
-+char *\r
-+safe_tempnam(const char *pfx)\r
-+{\r
-+ char *dirname, *filename;\r
-+ int fd;\r
-+\r
-+ if (!(dirname = getenv("TMPDIR")))\r
-+ dirname = "/tmp";\r
-+\r
-+ tempfiles = (char **) realloc(tempfiles,\r
-+ (ntempfiles+1) * sizeof(char *));\r
-+ if (tempfiles == NULL)\r
-+ return NULL;\r
-+\r
-+ filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));\r
-+ if (!filename)\r
-+ return NULL;\r
-+\r
-+ sprintf(filename, "%s/%sXXXXXX", dirname, pfx);\r
-+\r
-+ if ((fd = mkstemp(filename)) < 0) {\r
-+ free(filename);\r
-+ return NULL;\r
-+ }\r
-+ close(fd);\r
-+\r
-+ if (ntempfiles == 0)\r
-+ atexit(cleanup_tempfiles);\r
-+ tempfiles[ntempfiles++] = filename;\r
-+\r
-+ return filename;\r
-+}\r
-diff -ur a2ps-4.13.orig/lib/routines.h a2ps-4.13/lib/routines.h\r
---- a2ps-4.13.orig/lib/routines.h Mon Oct 18 22:24:41 1999\r
-+++ a2ps-4.13/lib/routines.h Fri Jan 5 12:37:53 2001\r
-@@ -255,7 +255,8 @@\r
- /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */\r
- #define tempname_ensure(Str) \\r
- do { \\r
-- (Str) = (Str) ? (Str) : tempnam (NULL, "a2_"); \\r
-+ (Str) = (Str) ? (Str) : safe_tempnam("a2_"); \\r
- } while (0)\r
-+char * safe_tempnam(const char *);\r
- \r
- #endif\r
+--- a2ps-4.13/lib/routines.c~ 1999-10-16 06:46:37.000000000 +0200
++++ a2ps-4.13/lib/routines.c 2003-08-21 09:58:57.361425544 +0200
+@@ -242,3 +242,50 @@
+ /* Don't complain if you can't unlink. Who cares of a tmp file? */
+ unlink (filename);
+ }
++
++/*
++ * Securely generate a temp file, and make sure it gets
++ * deleted upon exit.
++ */
++static char ** tempfiles = NULL;
++static unsigned ntempfiles = 0;
++
++static void
++cleanup_tempfiles()
++{
++ while (ntempfiles--)
++ unlink(tempfiles[ntempfiles]);
++}
++
++char *
++safe_tempnam(const char *pfx)
++{
++ char *dirname, *filename;
++ int fd;
++
++ if (!(dirname = getenv("TMPDIR")))
++ dirname = "/tmp";
++
++ tempfiles = (char **) realloc(tempfiles,
++ (ntempfiles+1) * sizeof(char *));
++ if (tempfiles == NULL)
++ return NULL;
++
++ filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));
++ if (!filename)
++ return NULL;
++
++ sprintf(filename, "%s/%sXXXXXX", dirname, pfx);
++
++ if ((fd = mkstemp(filename)) < 0) {
++ free(filename);
++ return NULL;
++ }
++ close(fd);
++
++ if (ntempfiles == 0)
++ atexit(cleanup_tempfiles);
++ tempfiles[ntempfiles++] = filename;
++
++ return filename;
++}
+--- a2ps-4.13/lib/routines.h~ 1999-10-18 22:24:41.000000000 +0200
++++ a2ps-4.13/lib/routines.h 2003-08-21 09:55:11.500761584 +0200
+@@ -255,7 +255,7 @@
+ /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */
+ #define tempname_ensure(Str) \
+ do { \
+- (Str) = (Str) ? (Str) : tempnam (NULL, "a2_"); \
++ (Str) = (Str) ? (Str) : safe_tempnam("a2_"); \
+ } while (0)
+-
++char * safe_tempnam(const char *);
+ #endif