OSDN Git Service

mkostemp: fix implementation
[uclinux-h8/uClibc.git] / libc / stdlib / mktemp.c
index cfdcf09..1ff93da 100644 (file)
@@ -1,40 +1,34 @@
-#include <string.h>
-#include <features.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
+/* Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
 
-char *mktemp(template)
-char *template;
-{
-       int i;
-       int num __attribute__ ((unused));       /* UNINITIALIZED */
-       int n2;
-       int l = strlen(template);
-       struct stat stbuf;
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
 
-       if (l < 6) {
-               errno = EINVAL;
-               return 0;
-       }
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
 
-       for (i = l - 6; i < l; i++)
-               if (template[i] != 'X') {
-                       errno = EINVAL;
-                       return 0;
-               }
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   see <http://www.gnu.org/licenses/>.  */
 
-  again:
-       n2 = num;
-       for (i = l - 1; i >= l - 6; i--) {
-               template[i] = '0' + n2 % 10;
-               n2 /= 10;
-       }
+#include <stdio.h>
+#include <stdlib.h>
+#include "../misc/internals/tempname.h"
 
-       if (stat(template, &stbuf) == 0) {
-               num++;
-               goto again;
-       }
+/* Generate a unique temporary file name from TEMPLATE.
+ * The last six characters of TEMPLATE must be "XXXXXX";
+ * they are replaced with a string that makes the filename unique.  */
+char *mktemp(char *template)
+{
+       if (__gen_tempname (template, __GT_NOCREATE, 0, 0) < 0)
+               /* We return the null string if we can't find a unique file name.  */
+               template[0] = '\0';
 
        return template;
 }
+
+link_warning(mktemp, "the use of `mktemp' is dangerous, better use `mkstemp'")