From 69ecbd0f3188be97f91cc0d6415836d23e88f7fc Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 19 Feb 2011 09:40:07 -0500 Subject: make mktemp match the historic behavior, and update functions that use it the historic mktemp is supposed to blank the template string on failure, rather than returning 0. just zero the first character so that mkstemp and mkdtemp can still retry with O(1) space requirement. --- src/temp/mkstemp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/temp/mkstemp.c') diff --git a/src/temp/mkstemp.c b/src/temp/mkstemp.c index 20019ed9..a390d427 100644 --- a/src/temp/mkstemp.c +++ b/src/temp/mkstemp.c @@ -11,14 +11,15 @@ char *__mktemp(char *); int mkstemp(char *template) { - int fd, retries = 100; + int fd, retries = 100, t0 = *template; while (retries--) { - if (!__mktemp(template)) return -1; + if (!*__mktemp(template)) return -1; if ((fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600))>=0) return fd; if (errno != EEXIST) return -1; /* this is safe because mktemp verified * that we have a valid template string */ + template[0] = t0; strcpy(template+strlen(template)-6, "XXXXXX"); } return -1; -- cgit v1.2.1