B20.1: bug in mkstemp

John Poplett jpoplett@mindspring.com
Sat Sep 11 12:24:00 GMT 1999


mkstemp fails with an access errror when an attempt is made to 
create more than one file using the same mkstemp template. This problem was 
reported previously by Rob Mayoff.
 
In Rob's original report, he gives the following program that 
demonstrates the problem:
 
In this program, the second call to mkstemp will 
fail:
 
#include <stdio.h> #include 
<sys/param.h>
 
main() {   char 
path[MAXPATHLEN];         int fd, 
rc;
 
        sprintf(path, 
"/tmp/test.XXXXXX");         fd 
= mkstemp(path);         if (fd < 0) { 
perror("mkstemp 1"); exit(1); 
}         rc = 
unlink(path);         if (rc < 0) { 
perror("unlink"); exit(1); 
}         sprintf(path, 
"/tmp/test.XXXXXX");         fd 
= mkstemp(path);         if (fd < 0) { 
perror("mkstemp 2"); exit(1); 
}         rc = 
unlink(path);         if (rc < 0) { 
perror("unlink"); exit(1); }
 
        
exit(0); }
 
The fix should be simply to treat EACCES just like EEXIST in 
mkstemp.
 
I have applied a patch to the runtime source file, mktemp.c, 
as Rob suggests and 
verified the fix. I include the patch as an 
attachment.
 
John
 
John Poplett
jpoplett@mindspring.com
mktemp.c
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com



More information about the Cygwin mailing list