ensure standard functions mk[sd]temp don't depend on removed function mktemp
This commit is contained in:
parent
c255e5542d
commit
5377715ce0
3 changed files with 9 additions and 5 deletions
|
|
@ -1,4 +1,3 @@
|
||||||
#define _GNU_SOURCE
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
@ -9,10 +8,12 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include "libc.h"
|
#include "libc.h"
|
||||||
|
|
||||||
|
char *__mktemp(char *);
|
||||||
|
|
||||||
char *mkdtemp(char *template)
|
char *mkdtemp(char *template)
|
||||||
{
|
{
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (!mktemp(template)) return 0;
|
if (!__mktemp(template)) return 0;
|
||||||
if (!mkdir(template, 0700)) return template;
|
if (!mkdir(template, 0700)) return template;
|
||||||
if (errno != EEXIST) return 0;
|
if (errno != EEXIST) return 0;
|
||||||
/* this is safe because mktemp verified
|
/* this is safe because mktemp verified
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#define _GNU_SOURCE
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
@ -8,11 +7,13 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "libc.h"
|
#include "libc.h"
|
||||||
|
|
||||||
|
char *__mktemp(char *);
|
||||||
|
|
||||||
int mkstemp(char *template)
|
int mkstemp(char *template)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
retry:
|
retry:
|
||||||
if (!mktemp(template)) return -1;
|
if (!__mktemp(template)) return -1;
|
||||||
fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600);
|
fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600);
|
||||||
if (fd >= 0) return fd;
|
if (fd >= 0) return fd;
|
||||||
if (errno == EEXIST) {
|
if (errno == EEXIST) {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "libc.h"
|
#include "libc.h"
|
||||||
|
|
||||||
char *mktemp(char *template)
|
char *__mktemp(char *template)
|
||||||
{
|
{
|
||||||
static int lock;
|
static int lock;
|
||||||
static int index;
|
static int index;
|
||||||
|
|
@ -27,3 +27,5 @@ char *mktemp(char *template)
|
||||||
UNLOCK(&lock);
|
UNLOCK(&lock);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
weak_alias(__mktemp, mktemp);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue