Use __path_search and __gen_tempname.
authordrepper <drepper>
Mon, 3 Aug 1998 16:44:07 +0000 (16:44 +0000)
committerdrepper <drepper>
Mon, 3 Aug 1998 16:44:07 +0000 (16:44 +0000)
stdio-common/tempnam.c
stdio-common/tmpfile.c
stdio-common/tmpfile64.c
stdio-common/tmpnam.c
stdio-common/tmpnam_r.c

index 987fbbb..8683643 100644 (file)
@@ -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
    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);
 }
index c3afd3f..488b43b 100644 (file)
@@ -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;
 }
index 5a6e323..5854f14 100644 (file)
@@ -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).
 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
 }
index 3389ff5..e5c6bf1 100644 (file)
@@ -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;
 }
index 5e67cc6..07c4650 100644 (file)
@@ -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;
 }