aboutsummaryrefslogtreecommitdiff
path: root/stdio-common
diff options
context:
space:
mode:
Diffstat (limited to 'stdio-common')
-rw-r--r--stdio-common/tempnam.c17
-rw-r--r--stdio-common/tmpfile.c18
-rw-r--r--stdio-common/tmpfile64.c23
-rw-r--r--stdio-common/tmpnam.c22
-rw-r--r--stdio-common/tmpnam_r.c16
5 files changed, 46 insertions, 50 deletions
diff --git a/stdio-common/tempnam.c b/stdio-common/tempnam.c
index 987fbbbabe..8683643c76 100644
--- a/stdio-common/tempnam.c
+++ b/stdio-common/tempnam.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,13 +16,9 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#include <errno.h>
-#include <stddef.h>
#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
-
/* Generate a unique temporary filename using up to five characters of PFX
if it is not NULL. The directory to put this file in is searched for
as follows: First the environment variable "TMPDIR" is checked.
@@ -34,17 +30,12 @@ char *
tempnam (const char *dir, const char *pfx)
{
char buf[FILENAME_MAX];
- size_t len;
- char *s;
- char *t = __stdio_gen_tempname (buf, sizeof (buf), dir, pfx, 1,
- &len, (FILE **) NULL, 0);
- if (t == NULL)
+ if (__path_search (buf, FILENAME_MAX, dir, pfx))
return NULL;
- s = (char *) malloc (len);
- if (s == NULL)
+ if (__gen_tempname (buf, 0, 0))
return NULL;
- return (char *) memcpy (s, t, len);
+ return strdup (buf);
}
diff --git a/stdio-common/tmpfile.c b/stdio-common/tmpfile.c
index c3afd3f78b..488b43b1f7 100644
--- a/stdio-common/tmpfile.c
+++ b/stdio-common/tmpfile.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -18,6 +18,9 @@
#include <stdio.h>
+#ifdef _USE_IN_LIBIO
+# define fdopen _IO_new_fdopen
+#endif
/* This returns a new stream opened on a temporary file (generated
by tmpnam) The file is opened with mode "w+b" (binary read/write).
@@ -27,17 +30,20 @@ FILE *
tmpfile ()
{
char buf[FILENAME_MAX];
- char *filename;
+ int fd;
FILE *f;
- filename = __stdio_gen_tempname (buf, sizeof (buf), (char *) NULL, "tmpf", 0,
- (size_t *) NULL, &f, 0);
- if (filename == NULL)
+ if (__path_search (buf, FILENAME_MAX, NULL, "tmpf"))
+ return NULL;
+ if ((fd = __gen_tempname (buf, 1, 0)) < 0)
return NULL;
/* Note that this relies on the Unix semantics that
a file is not really removed until it is closed. */
- (void) remove (filename);
+ (void) remove (buf);
+
+ if ((f = fdopen (fd, "w+b")) == NULL)
+ close (fd);
return f;
}
diff --git a/stdio-common/tmpfile64.c b/stdio-common/tmpfile64.c
index 5a6e3238fc..5854f1451d 100644
--- a/stdio-common/tmpfile64.c
+++ b/stdio-common/tmpfile64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -19,6 +19,9 @@
#include <errno.h>
#include <stdio.h>
+#ifdef _USE_IN_LIBIO
+# define fdopen _IO_new_fdopen
+#endif
/* This returns a new stream opened on a temporary file (generated
by tmpnam) The file is opened with mode "w+b" (binary read/write).
@@ -27,23 +30,21 @@
FILE *
tmpfile64 ()
{
-#ifdef _G_OPEN64
char buf[FILENAME_MAX];
- char *filename;
+ int fd;
FILE *f;
- filename = __stdio_gen_tempname (buf, sizeof (buf), (char *) NULL, "tmpf", 0,
- (size_t *) NULL, &f, 1);
- if (filename == NULL)
+ if (__path_search (buf, FILENAME_MAX, NULL, "tmpf"))
+ return NULL;
+ if ((fd = __gen_tempname (buf, 1, 1)) < 0)
return NULL;
/* Note that this relies on the Unix semantics that
a file is not really removed until it is closed. */
- (void) remove (filename);
+ (void) remove (buf);
+
+ if ((f = fdopen (fd, "w+b")) == NULL)
+ close (fd);
return f;
-#else
- __set_errno (ENOSYS);
- return NULL;
-#endif
}
diff --git a/stdio-common/tmpnam.c b/stdio-common/tmpnam.c
index 3389ff57b4..e5c6bf166d 100644
--- a/stdio-common/tmpnam.c
+++ b/stdio-common/tmpnam.c
@@ -19,7 +19,6 @@
#include <stdio.h>
#include <string.h>
-
/* Generate a unique filename in P_tmpdir.
This function is *not* thread safe! */
@@ -30,20 +29,21 @@ tmpnam (char *s)
where S != NULL. */
static char buf[L_tmpnam];
char tmpbuf[L_tmpnam];
- char *result;
/* In the following call we use the buffer pointed to by S if
non-NULL although we don't know the size. But we limit the size
- to FILENAME_MAX characters in any case. */
- result = __stdio_gen_tempname (s ?: tmpbuf, L_tmpnam, (const char *) NULL,
- (const char *) NULL, 0,
- (size_t *) NULL, (FILE **) NULL, 0);
+ to L_tmpnam characters in any case. */
+ if (__path_search (s ? : tmpbuf, L_tmpnam, NULL, NULL))
+ return NULL;
+
+ if (__gen_tempname (s ? : tmpbuf, 0, 0))
+ return NULL;
- if (result != NULL && s == NULL)
+ if (s == NULL)
{
- memcpy (buf, result, L_tmpnam);
- result = buf;
+ memcpy (buf, tmpbuf, L_tmpnam);
+ return buf;
}
-
- return result;
+ else
+ return s;
}
diff --git a/stdio-common/tmpnam_r.c b/stdio-common/tmpnam_r.c
index 5e67cc6845..07c4650cc0 100644
--- a/stdio-common/tmpnam_r.c
+++ b/stdio-common/tmpnam_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -17,8 +17,6 @@
Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include <string.h>
-
/* Generate a unique filename in P_tmpdir. If S is NULL return NULL.
This makes this function thread safe. */
@@ -28,10 +26,10 @@ tmpnam_r (char *s)
if (s == NULL)
return NULL;
- /* In the following call we use the buffer pointed to by S if
- non-NULL although we don't know the size. But we limit the size
- to L_tmpnam characters in any case. */
- return __stdio_gen_tempname (s, L_tmpnam, (const char *) NULL,
- (const char *) NULL, 0,
- (size_t *) NULL, (FILE **) NULL, 0);
+ if (__path_search (s, L_tmpnam, NULL, NULL))
+ return NULL;
+ if (__gen_tempname (s, 0, 0))
+ return NULL;
+
+ return s;
}