1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

sysdeps/posix/tempname.c: Merge from gnulib

Partial merge from gnulib which fixes a number of -Wundef warnings.
The parts that differ from gnulib are the header comment, use of
__glibc_unlikely, a #define of __secure_getenv and the use of tabs.
The majority of the patch is cosmetic comment changes, the only runtime
change is an abort if an unknown kind is passed to __gen_tempname.

ChangeLog:

2014-06-25  Will Newton  <will.newton@linaro.org>

	* sysdeps/posix/tempname.c: Merge from gnulib, cosmetic
	comment changes throughout the file.  Remove checks
	for HAVE_*_H definitions that are not required.
	(__gen_tempname): Call abort if an unknown kind value is
	passed.
This commit is contained in:
Will Newton
2014-06-24 14:19:36 +01:00
parent c5241f9575
commit c7aec4beb1
2 changed files with 30 additions and 62 deletions

View File

@ -1,3 +1,11 @@
2014-06-25 Will Newton <will.newton@linaro.org>
* sysdeps/posix/tempname.c: Merge from gnulib, cosmetic
comment changes throughout the file. Remove checks
for HAVE_*_H definitions that are not required.
(__gen_tempname): Call abort if an unknown kind value is
passed.
2014-06-25 Andreas Schwab <schwab@suse.de> 2014-06-25 Andreas Schwab <schwab@suse.de>
[BZ #17086] [BZ #17086]

View File

@ -15,8 +15,9 @@
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#if HAVE_CONFIG_H #if !_LIBC
# include <config.h> # include <config.h>
# include "tempname.h"
#endif #endif
#include <sys/types.h> #include <sys/types.h>
@ -39,74 +40,34 @@
# define __GT_DIR 1 # define __GT_DIR 1
# define __GT_NOCREATE 2 # define __GT_NOCREATE 2
#endif #endif
#if !_LIBC && (GT_FILE != __GT_FILE || GT_DIR != __GT_DIR \
#if STDC_HEADERS || _LIBC || GT_NOCREATE != __GT_NOCREATE)
# include <stddef.h> # error report this to bug-gnulib@gnu.org
# include <stdlib.h>
# include <string.h>
#endif #endif
#if HAVE_FCNTL_H || _LIBC #include <stddef.h>
# include <fcntl.h> #include <stdlib.h>
#endif #include <string.h>
#if HAVE_SYS_TIME_H || _LIBC #include <fcntl.h>
# include <sys/time.h> #include <sys/time.h>
#endif #include <stdint.h>
#include <unistd.h>
#if HAVE_STDINT_H || _LIBC
# include <stdint.h>
#endif
#if HAVE_UNISTD_H || _LIBC
# include <unistd.h>
#endif
#include <sys/stat.h> #include <sys/stat.h>
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined S_ISDIR && defined S_IFDIR
# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
#endif
#if !S_IRUSR && S_IREAD
# define S_IRUSR S_IREAD
#endif
#if !S_IRUSR
# define S_IRUSR 00400
#endif
#if !S_IWUSR && S_IWRITE
# define S_IWUSR S_IWRITE
#endif
#if !S_IWUSR
# define S_IWUSR 00200
#endif
#if !S_IXUSR && S_IEXEC
# define S_IXUSR S_IEXEC
#endif
#if !S_IXUSR
# define S_IXUSR 00100
#endif
#if _LIBC #if _LIBC
# define struct_stat64 struct stat64 # define struct_stat64 struct stat64
# define __secure_getenv __libc_secure_getenv
#else #else
# define struct_stat64 struct stat # define struct_stat64 struct stat
# define __gen_tempname gen_tempname
# define __getpid getpid # define __getpid getpid
# define __gettimeofday gettimeofday # define __gettimeofday gettimeofday
# define __mkdir mkdir # define __mkdir mkdir
# define __open open # define __open open
# define __open64 open # define __lxstat64(version, file, buf) lstat (file, buf)
# define __lxstat64(version, path, buf) lstat (path, buf) # define __secure_getenv secure_getenv
# define __xstat64(version, path, buf) stat (path, buf)
#endif
#if ! (HAVE_SECURE_GETENV || _LIBC)
# ifdef HAVE___SECURE_GETENV
# define __libc_secure_getenv __secure_getenv
# else
# define __libc_secure_getenv getenv
# endif
#endif #endif
#ifdef _LIBC #ifdef _LIBC
@ -137,6 +98,7 @@
# define uint64_t uintmax_t # define uint64_t uintmax_t
#endif #endif
#if _LIBC
/* Return nonzero if DIR is an existent directory. */ /* Return nonzero if DIR is an existent directory. */
static int static int
direxists (const char *dir) direxists (const char *dir)
@ -172,7 +134,7 @@ __path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
if (try_tmpdir) if (try_tmpdir)
{ {
d = __libc_secure_getenv ("TMPDIR"); d = __secure_getenv ("TMPDIR");
if (d != NULL && direxists (d)) if (d != NULL && direxists (d))
dir = d; dir = d;
else if (dir != NULL && direxists (dir)) else if (dir != NULL && direxists (dir))
@ -207,8 +169,9 @@ __path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx); sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx);
return 0; return 0;
} }
#endif /* _LIBC */
/* These are the characters used in temporary filenames. */ /* These are the characters used in temporary file names. */
static const char letters[] = static const char letters[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
@ -240,7 +203,7 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
/* A lower bound on the number of temporary files to attempt to /* A lower bound on the number of temporary files to attempt to
generate. The maximum total number of temporary file names that generate. The maximum total number of temporary file names that
can exist for a given template is 62**6. It should never be can exist for a given template is 62**6. It should never be
necessary to try all these combinations. Instead if a reasonable necessary to try all of these combinations. Instead if a reasonable
number of names is tried (we define reasonable as 62**3) fail to number of names is tried (we define reasonable as 62**3) fail to
give the system administrator the chance to remove the problems. */ give the system administrator the chance to remove the problems. */
#define ATTEMPTS_MIN (62 * 62 * 62) #define ATTEMPTS_MIN (62 * 62 * 62)
@ -267,15 +230,11 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
#ifdef RANDOM_BITS #ifdef RANDOM_BITS
RANDOM_BITS (random_time_bits); RANDOM_BITS (random_time_bits);
#else #else
# if HAVE_GETTIMEOFDAY || _LIBC
{ {
struct timeval tv; struct timeval tv;
__gettimeofday (&tv, NULL); __gettimeofday (&tv, NULL);
random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
} }
# else
random_time_bits = time (NULL);
# endif
#endif #endif
value += random_time_bits ^ __getpid (); value += random_time_bits ^ __getpid ();
@ -328,6 +287,7 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
default: default:
assert (! "invalid KIND in __gen_tempname"); assert (! "invalid KIND in __gen_tempname");
abort ();
} }
if (fd >= 0) if (fd >= 0)