1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-31 05:41:08 +00:00

Fix build on -current (use TMPDIR environment variable to get preferred

tmp directory, and fall back to _PATH_TMP, instead of using header
definitions that are no longer visible by default.)

Submitted by:	Steven G. Kargl <kargl@troutmask.apl.washington.edu> (based on)
PR:		ports/42510
This commit is contained in:
Kris Kennaway 2002-10-12 22:08:01 +00:00
parent d3fc0603a6
commit 4f7ad857f3
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=67906

View File

@ -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;
}