overhaul tmpfile, tmpnam, and tempnam functions
these all now use the shared __randname function internally, rather than duplicating logic for producing a random name. incorrect usage of the access syscall (which works with real uid/gid, not effective) has been removed, along with unnecessary heavy dependencies like snprintf.
This commit is contained in:
+4
-4
@@ -1,19 +1,19 @@
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include "stdio_impl.h"
|
||||
|
||||
#define MAXTRIES 100
|
||||
|
||||
char *__randname(char *);
|
||||
|
||||
FILE *tmpfile(void)
|
||||
{
|
||||
char buf[L_tmpnam], *s;
|
||||
char s[] = "/tmp/tmpfile_XXXXXX";
|
||||
int fd;
|
||||
FILE *f;
|
||||
int try;
|
||||
for (try=0; try<MAXTRIES; try++) {
|
||||
s = tmpnam(buf);
|
||||
if (!s) return 0;
|
||||
__randname(s+13);
|
||||
fd = sys_open(s, O_RDWR|O_CREAT|O_EXCL, 0600);
|
||||
if (fd >= 0) {
|
||||
f = __fdopen(fd, "w+");
|
||||
|
||||
Reference in New Issue
Block a user