Loading...
stdio/FreeBSD/tempnam.c.patch Libc-498.1.7 /dev/null
--- Libc/Libc-498.1.7/stdio/FreeBSD/tempnam.c.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- tempnam.c.orig	2006-09-15 00:33:51.000000000 -0700
-+++ tempnam.c	2006-09-15 01:19:22.000000000 -0700
-@@ -38,6 +38,7 @@
- __FBSDID("$FreeBSD: src/lib/libc/stdio/tempnam.c,v 1.10 2002/03/22 21:53:04 obrien Exp $");
- 
- #include <sys/param.h>
-+#include <sys/stat.h>
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -57,35 +58,61 @@
- 	int sverrno;
- 	char *f, *name;
- 
--	if (!(name = malloc(MAXPATHLEN)))
-+#if __DARWIN_UNIX03
-+	struct stat sb;
-+#endif /* __DARWIN_UNIX03 */
-+	if (!(name = malloc(MAXPATHLEN))) {
- 		return(NULL);
-+	}
- 
- 	if (!pfx)
- 		pfx = "tmp.";
- 
-+#if !__DARWIN_UNIX03
- 	if (issetugid() == 0 && (f = getenv("TMPDIR"))) {
- 		(void)snprintf(name, MAXPATHLEN, "%s%s%sXXXXXX", f,
- 		    *(f + strlen(f) - 1) == '/'? "": "/", pfx);
--		if ((f = _mktemp(name)))
-+		if ((f = _mktemp(name))) {
- 			return(f);
-+		}
- 	}
--
-+#endif /* !__DARWIN_UNIX03 */
- 	if ((f = (char *)dir)) {
-+#if __DARWIN_UNIX03
-+		if (!access(dir, W_OK)) {
-+#endif /* __DARWIN_UNIX03 */
- 		(void)snprintf(name, MAXPATHLEN, "%s%s%sXXXXXX", f,
- 		    *(f + strlen(f) - 1) == '/'? "": "/", pfx);
--		if ((f = _mktemp(name)))
-+		if ((f = _mktemp(name))) {
- 			return(f);
-+		}
-+#if __DARWIN_UNIX03
-+	}
-+#endif /* __DARWIN_UNIX03 */
- 	}
- 
- 	f = P_tmpdir;
-+#if __DARWIN_UNIX03
-+	if (stat(f, &sb) == 0) {	/* directory accessible? */
-+#endif /* __DARWIN_UNIX03 */
- 	(void)snprintf(name, MAXPATHLEN, "%s%sXXXXXX", f, pfx);
--	if ((f = _mktemp(name)))
-+	if ((f = _mktemp(name))) {
- 		return(f);
-+	}
- 
-+#if __DARWIN_UNIX03
-+	}
-+#endif /* __DARWIN_UNIX03 */
- 	f = _PATH_TMP;
-+#if __DARWIN_UNIX03
-+	if (stat(f, &sb) < 0) {	
-+		f = "./";	/* directory inaccessible */
-+	}
-+#endif /* __DARWIN_UNIX03 */
- 	(void)snprintf(name, MAXPATHLEN, "%s%sXXXXXX", f, pfx);
--	if ((f = _mktemp(name)))
-+	if ((f = _mktemp(name))) {
- 		return(f);
-+	}
- 
- 	sverrno = errno;
- 	free(name);