aboutsummaryrefslogtreecommitdiff
path: root/news
diff options
context:
space:
mode:
authorKris Kennaway <kris@FreeBSD.org>2002-10-12 22:08:01 +0000
committerKris Kennaway <kris@FreeBSD.org>2002-10-12 22:08:01 +0000
commit4f7ad857f3acebd0b52df83fcbc7411fa3329747 (patch)
treee2bd9183ca09d65000d35b630c581ef14c7748ca /news
parentd3fc0603a6376493ca5384af7e42fb51a860e0ed (diff)
downloadports-4f7ad857f3acebd0b52df83fcbc7411fa3329747.tar.gz
ports-4f7ad857f3acebd0b52df83fcbc7411fa3329747.zip
Notes
Diffstat (limited to 'news')
-rw-r--r--news/knews/files/patch-file.c42
1 files changed, 27 insertions, 15 deletions
diff --git a/news/knews/files/patch-file.c b/news/knews/files/patch-file.c
index 83d1cd661508..0237d12c3632 100644
--- a/news/knews/files/patch-file.c
+++ b/news/knews/files/patch-file.c
@@ -1,27 +1,39 @@
-Use mkstemp instead of tmpnam. Copied from the tmpnam implementation :)
-
- -mi
-
---- src/file.c Fri Jan 9 12:16:19 1998
-+++ src/file.c Fri Jul 13 10:41:01 2001
-@@ -187,13 +187,11 @@
- int fd;
-+ static unsigned long tmpcount;
-+ static char buf[L_tmpnam];
+--- src/file.c.orig Fri Jan 9 09:16:19 1998
++++ src/file.c Sat Sep 7 16:51:54 2002
+@@ -4,6 +4,7 @@
+
+ #include "global.h"
+ #include <sys/stat.h>
++#include <paths.h>
+ #include "expand.h"
+ #include "file.h"
+@@ -185,16 +186,18 @@
+ int create_temp_fd(char **name)
+ {
+ int fd;
+-
- *name = tmpnam(NULL);
- if (!*name)
- fd = -1;
- else {
-+ (void)snprintf(buf, L_tmpnam, "%stmp.%lu.XXXXXX", P_tmpdir, tmpcount++);
-+ *name = buf;
-+ fd = mkstemp(buf);
-+ if (fd < 0)
-+ *name = NULL;
- unlink(*name);
- fd = open(*name, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR);
- if (fd < 0)
- *name = NULL;
- }
++ char filename[FILENAME_MAX];
++ char *tmpdir;
++
++ if ((tmpdir = getenv("TMPDIR")) == NULL)
++ tmpdir = _PATH_TMP;
++ strlcpy(filename, tmpdir, FILENAME_MAX);
++ strlcat(filename, "/tmp.XXXXXX", FILENAME_MAX);
++
++ if ((fd = mkstemp(filename)) == -1)
++ *name = NULL;
++ else
++ *name = filename;
return fd;
+ }