diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-08-11 02:48:28 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-08-11 02:48:28 +0000 |
commit | d7e23b02a40384be1eaf00762ea36fd117c462cd (patch) | |
tree | f86b91f34427435c681737868d122ecda195af11 /misc | |
parent | aa132749c85c62b1e28ae885b84c9fa8aed45dfb (diff) | |
download | glibc-d7e23b02a40384be1eaf00762ea36fd117c462cd.tar.gz |
* nscd/connections.c: Use O_CLOEXEC is possible. Use mkostemp
instead of mkstemp.
* misc/Makefile (routines): Add mkostemp and mkostemp64.
* misc/Versions: Export mkostemp and mkostemp64 for GLIBC_2.7.
* misc/mkostemp.c: New file.
* misc/mkostemp64.c: New file.
* stdlib/stdlib.h: Declare the new functions.
* sysdeps/posix/tempname.c: Add new parameter which is added to
the flags for open. Remove __GT_BIGFILE handling.
* stdio-common/tempname.c: Likewise.
* include/stdio.h: Adjust __gen_tempname prototype.
Renumber __GT_* constants.
* libio/oldtmpfile.c: Adjust for __gen_tempname interface change.
* misc/mkdtemp.c: Likewise.
* misc/mkstemp.c: Likewise.
* misc/mkstemp64.c: Likewise.
* misc/mktemp.c: Likewise.
* stdio-common/tempnam.c: Likewise.
* stdio-common/tmpfile.c: Likewise.
* stdio-common/tmpfile64.c: Likewise.
* stdio-common/tmpnam.c: Likewise.
* stdio-common/tmpnam_r.c: Likewise.
Diffstat (limited to 'misc')
-rw-r--r-- | misc/Makefile | 3 | ||||
-rw-r--r-- | misc/Versions | 3 | ||||
-rw-r--r-- | misc/mkdtemp.c | 4 | ||||
-rw-r--r-- | misc/mkostemp.c | 36 | ||||
-rw-r--r-- | misc/mkostemp64.c | 33 | ||||
-rw-r--r-- | misc/mkstemp.c | 4 | ||||
-rw-r--r-- | misc/mkstemp64.c | 5 | ||||
-rw-r--r-- | misc/mktemp.c | 4 |
8 files changed, 83 insertions, 9 deletions
diff --git a/misc/Makefile b/misc/Makefile index 9eac1b6275..a9709f96db 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2002,2003,2004,2005,2006 Free Software Foundation, Inc. +# Copyright (C) 1991-2006, 2007 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 @@ -45,6 +45,7 @@ routines := brk sbrk sstk ioctl \ gethostid sethostid \ revoke vhangup \ swapon swapoff mktemp mkstemp mkstemp64 mkdtemp \ + mkostemp mkostemp64 \ ualarm usleep \ gtty stty \ ptrace \ diff --git a/misc/Versions b/misc/Versions index fdf2d9d2af..b182f12311 100644 --- a/misc/Versions +++ b/misc/Versions @@ -134,4 +134,7 @@ libc { futimesat; __syslog_chk; __vsyslog_chk; } + GLIBC_2.7 { + mkostemp; mkostemp64; + } } diff --git a/misc/mkdtemp.c b/misc/mkdtemp.c index abb9a35ceb..7cd3a44f94 100644 --- a/misc/mkdtemp.c +++ b/misc/mkdtemp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2007 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 @@ -28,7 +28,7 @@ char * mkdtemp (template) char *template; { - if (__gen_tempname (template, __GT_DIR)) + if (__gen_tempname (template, 0, __GT_DIR)) return NULL; else return template; diff --git a/misc/mkostemp.c b/misc/mkostemp.c new file mode 100644 index 0000000000..372e4f3c0f --- /dev/null +++ b/misc/mkostemp.c @@ -0,0 +1,36 @@ +/* Copyright (C) 1998, 1999, 2001, 2007 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <stdio.h> +#include <stdlib.h> + +#ifndef __GT_FILE +# define __GT_FILE 0 +#endif + +/* 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. + Then open the file and return a fd. */ +int +mkostemp (template, flags) + char *template; + int flags; +{ + return __gen_tempname (template, flags, __GT_FILE); +} diff --git a/misc/mkostemp64.c b/misc/mkostemp64.c new file mode 100644 index 0000000000..2ae730991e --- /dev/null +++ b/misc/mkostemp64.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2000, 2007 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> + +/* 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. + Then open the file and return a fd. */ +int +mkostemp64 (template, flags) + char *template; + int flags; +{ + return __gen_tempname (template, flags | O_LARGEFILE, __GT_FILE); +} diff --git a/misc/mkstemp.c b/misc/mkstemp.c index ff0ffa2d01..d3edca0791 100644 --- a/misc/mkstemp.c +++ b/misc/mkstemp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2001, 2007 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 @@ -31,5 +31,5 @@ int mkstemp (template) char *template; { - return __gen_tempname (template, __GT_FILE); + return __gen_tempname (template, 0, __GT_FILE); } diff --git a/misc/mkstemp64.c b/misc/mkstemp64.c index 93c2a3ee45..400bf47d06 100644 --- a/misc/mkstemp64.c +++ b/misc/mkstemp64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2007 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,6 +16,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <fcntl.h> #include <stdio.h> #include <stdlib.h> @@ -27,5 +28,5 @@ int mkstemp64 (template) char *template; { - return __gen_tempname (template, __GT_BIGFILE); + return __gen_tempname (template, O_LARGEFILE, __GT_FILE); } diff --git a/misc/mktemp.c b/misc/mktemp.c index 20dfc74e5e..f600d7ea7c 100644 --- a/misc/mktemp.c +++ b/misc/mktemp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000, 2007 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 @@ -26,7 +26,7 @@ char * mktemp (template) char *template; { - if (__gen_tempname (template, __GT_NOCREATE) < 0) + if (__gen_tempname (template, 0, __GT_NOCREATE) < 0) /* We return the null string if we can't find a unique file name. */ template[0] = '\0'; |