1 diff -ur a2ps-4.13.orig/lib/routines.c a2ps-4.13/lib/routines.c
\r
2 --- a2ps-4.13.orig/lib/routines.c Sat Oct 16 06:46:37 1999
\r
3 +++ a2ps-4.13/lib/routines.c Fri Jan 5 12:51:20 2001
\r
5 /* Don't complain if you can't unlink. Who cares of a tmp file? */
\r
10 + * Securely generate a temp file, and make sure it gets
\r
11 + * deleted upon exit.
\r
13 +static char ** tempfiles = NULL;
\r
14 +static unsigned ntempfiles = 0;
\r
17 +cleanup_tempfiles()
\r
19 + while (ntempfiles--)
\r
20 + unlink(tempfiles[ntempfiles]);
\r
24 +safe_tempnam(const char *pfx)
\r
26 + char *dirname, *filename;
\r
29 + if (!(dirname = getenv("TMPDIR")))
\r
32 + tempfiles = (char **) realloc(tempfiles,
\r
33 + (ntempfiles+1) * sizeof(char *));
\r
34 + if (tempfiles == NULL)
\r
37 + filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));
\r
41 + sprintf(filename, "%s/%sXXXXXX", dirname, pfx);
\r
43 + if ((fd = mkstemp(filename)) < 0) {
\r
49 + if (ntempfiles == 0)
\r
50 + atexit(cleanup_tempfiles);
\r
51 + tempfiles[ntempfiles++] = filename;
\r
55 diff -ur a2ps-4.13.orig/lib/routines.h a2ps-4.13/lib/routines.h
\r
56 --- a2ps-4.13.orig/lib/routines.h Mon Oct 18 22:24:41 1999
\r
57 +++ a2ps-4.13/lib/routines.h Fri Jan 5 12:37:53 2001
\r
59 /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */
\r
60 #define tempname_ensure(Str) \
\r
62 - (Str) = (Str) ? (Str) : tempnam (NULL, "a2_"); \
\r
63 + (Str) = (Str) ? (Str) : safe_tempnam("a2_"); \
\r
65 +char * safe_tempnam(const char *);
\r