diff options
author | Jeffrey A Law <law@cygnus.com> | 1998-09-05 11:10:11 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-09-05 05:10:11 -0600 |
commit | 423f265c7049465b70da965e6075911001fed88f (patch) | |
tree | 8c883b00c23fbd1bd538dc5cd74ab34152b595f4 | |
parent | 16ba4214ee315678d2dabe417a71d09a9b867662 (diff) | |
download | gcc-423f265c7049465b70da965e6075911001fed88f.zip gcc-423f265c7049465b70da965e6075911001fed88f.tar.gz gcc-423f265c7049465b70da965e6075911001fed88f.tar.bz2 |
Makefile.in (pexecute.o): Use pexecute.c from libiberty.
* Makefile.in (pexecute.o): Use pexecute.c from libiberty. Provide
explicit rules for building. Similarly for alloca, vfprintf,
choose-temp and mkstemp.
* pexecute.c, alloca.c, vfprintf.c, choose-temp.c, mkstemp.c: Delete.
From-SVN: r22253
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/Makefile.in | 13 | ||||
-rw-r--r-- | gcc/choose-temp.c | 211 | ||||
-rw-r--r-- | gcc/mkstemp.c | 122 |
4 files changed, 14 insertions, 337 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fc6aaca..00ef1f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,9 @@ Sat Sep 5 03:23:05 1998 Jeffrey A Law (law@cygnus.com) * Makefile.in (pexecute.o): Use pexecute.c from libiberty. Provide - explicit rules for building. Similarly for alloca and vfprintf. - * pexecute.c, alloca.c, vfprintf.c: Delete. + explicit rules for building. Similarly for alloca, vfprintf, + choose-temp and mkstemp. + * pexecute.c, alloca.c, vfprintf.c, choose-temp.c, mkstemp.c: Delete. Fri Sep 4 11:57:50 1998 Tom Tromey <tromey@cygnus.com> diff --git a/gcc/Makefile.in b/gcc/Makefile.in index ab1b04b..bf83117 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1370,8 +1370,17 @@ dumpvers: dumpvers.c version.o: version.c obstack.o: obstack.c $(CONFIG_H) -choose-temp.o: choose-temp.c $(CONFIG_H) gansidecl.h system.h -mkstemp.o: mkstemp.c $(CONFIG_H) gansidecl.h system.h +choose-temp.o: $(srcdir)/../libiberty/choose-temp.c $(CONFIG_H) gansidecl.h \ + system.h + rm -f choose-temp.c + $(LN_S) $(srcdir)/../libiberty/choose-temp.c choose-temp.c + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) choose-temp.c + +mkstemp.o: $(srcdir)/../libiberty/mkstemp.c $(CONFIG_H) gansidecl.h system.h + rm -f mkstemp.c + $(LN_S) $(srcdir)/../libiberty/mkstemp.c mkstemp.c + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) mkstemp.c + prefix.o: prefix.c $(CONFIG_H) system.h gansidecl.h Makefile $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DPREFIX=\"$(prefix)\" \ diff --git a/gcc/choose-temp.c b/gcc/choose-temp.c deleted file mode 100644 index 4629336..0000000 --- a/gcc/choose-temp.c +++ /dev/null @@ -1,211 +0,0 @@ -/* Utility to pick a temporary filename prefix. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. - -This file is part of the libiberty library. -Libiberty 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. - -Libiberty 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. - -You should have received a copy of the GNU Library General Public -License along with libiberty; see the file COPYING.LIB. If not, -write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* This file exports two functions: choose_temp_base and make_temp_file. */ - -/* This file lives in at least two places: libiberty and gcc. - Don't change one without the other. */ - -#if defined (IN_GCC) || defined (HAVE_CONFIG_H) -#include "config.h" -#endif - -#ifdef IN_GCC -#include "system.h" -#else - -/* If we are in gcc, system.h has handled everything. When not in - gcc, if we have a config.h we assume that HAVE_SYS_FILE_H tells us - whether to include sys/file.h. However, libiberty does not have a - config.h, and instead arranges to define NO_SYS_FILE_H on the - command line when there is no sys/file.h. */ - -#if defined (HAVE_CONFIG_H) ? defined (HAVE_SYS_FILE_H) : ! defined (NO_SYS_FILE_H) -#include <sys/types.h> -#include <sys/file.h> /* May get R_OK, etc. on some systems. */ -#endif - -#ifndef R_OK -#define R_OK 4 -#define W_OK 2 -#define X_OK 1 -#endif - -#include <stdio.h> /* May get P_tmpdir. */ -#endif /* IN_GCC */ - -#ifdef IN_GCC -#include "gansidecl.h" -extern char *xmalloc (); -#else -#include "ansidecl.h" -#include "libiberty.h" -#if defined (__MSDOS__) || defined (_WIN32) -#define DIR_SEPARATOR '\\' -#endif -#endif - -#ifndef DIR_SEPARATOR -#define DIR_SEPARATOR '/' -#endif - -/* On MSDOS, write temp files in current dir - because there's no place else we can expect to use. */ -/* ??? Although the current directory is tried as a last resort, - this is left in so that on MSDOS it is preferred to /tmp on the - off chance that someone requires this, since that was the previous - behaviour. */ -#ifdef __MSDOS__ -#ifndef P_tmpdir -#define P_tmpdir "." -#endif -#endif - -/* Name of temporary file. - mktemp requires 6 trailing X's. */ -#define TEMP_FILE "ccXXXXXX" - -/* Subroutine of choose_temp_base. - If BASE is non-NULL, return it. - Otherwise it checks if DIR is a usable directory. - If success, DIR is returned. - Otherwise NULL is returned. */ - -static char * -try (dir, base) - char *dir, *base; -{ - if (base != 0) - return base; - if (dir != 0 - && access (dir, R_OK | W_OK | X_OK) == 0) - return dir; - return 0; -} - -/* Return a prefix for temporary file names or NULL if unable to find one. - The current directory is chosen if all else fails so the program is - exited if a temporary directory can't be found (mktemp fails). - The buffer for the result is obtained with xmalloc. - - This function is provided for backwards compatability only. It use - is not recommended. */ - -char * -choose_temp_base () -{ - char *base = 0; - char *temp_filename; - int len; - static char tmp[] = { DIR_SEPARATOR, 't', 'm', 'p', 0 }; - static char usrtmp[] = { DIR_SEPARATOR, 'u', 's', 'r', DIR_SEPARATOR, 't', 'm', 'p', 0 }; - - base = try (getenv ("TMPDIR"), base); - base = try (getenv ("TMP"), base); - base = try (getenv ("TEMP"), base); - -#ifdef P_tmpdir - base = try (P_tmpdir, base); -#endif - - /* Try /usr/tmp, then /tmp. */ - base = try (usrtmp, base); - base = try (tmp, base); - - /* If all else fails, use the current directory! */ - if (base == 0) - base = "."; - - len = strlen (base); - temp_filename = xmalloc (len + 1 /*DIR_SEPARATOR*/ - + strlen (TEMP_FILE) + 1); - strcpy (temp_filename, base); - - if (len != 0 - && temp_filename[len-1] != '/' - && temp_filename[len-1] != DIR_SEPARATOR) - temp_filename[len++] = DIR_SEPARATOR; - strcpy (temp_filename + len, TEMP_FILE); - - mktemp (temp_filename); - if (strlen (temp_filename) == 0) - abort (); - return temp_filename; -} -/* Return a temporary file name (as a string) or NULL if unable to create - one. */ - -char * -make_temp_file (suffix) - char *suffix; -{ - char *base = 0; - char *temp_filename; - int base_len, suffix_len; - int fd; - static char tmp[] = { DIR_SEPARATOR, 't', 'm', 'p', 0 }; - static char usrtmp[] = { DIR_SEPARATOR, 'u', 's', 'r', DIR_SEPARATOR, 't', 'm', 'p', 0 }; - - base = try (getenv ("TMPDIR"), base); - base = try (getenv ("TMP"), base); - base = try (getenv ("TEMP"), base); - -#ifdef P_tmpdir - base = try (P_tmpdir, base); -#endif - - /* Try /usr/tmp, then /tmp. */ - base = try (usrtmp, base); - base = try (tmp, base); - - /* If all else fails, use the current directory! */ - if (base == 0) - base = "."; - - base_len = strlen (base); - - if (suffix) - suffix_len = strlen (suffix); - else - suffix_len = 0; - - temp_filename = xmalloc (base_len + 1 /*DIR_SEPARATOR*/ - + strlen (TEMP_FILE) - + suffix_len + 1); - strcpy (temp_filename, base); - - if (base_len != 0 - && temp_filename[base_len-1] != '/' - && temp_filename[base_len-1] != DIR_SEPARATOR) - temp_filename[base_len++] = DIR_SEPARATOR; - strcpy (temp_filename + base_len, TEMP_FILE); - - if (suffix) - strcat (temp_filename, suffix); - - fd = mkstemps (temp_filename, suffix_len); - /* If mkstemps failed, then something bad is happening. Maybe we should - issue a message about a possible security attack in progress? */ - if (fd == -1) - abort (); - /* Similarly if we can not close the file. */ - if (close (fd)) - abort (); - return temp_filename; -} diff --git a/gcc/mkstemp.c b/gcc/mkstemp.c deleted file mode 100644 index d55e583..0000000 --- a/gcc/mkstemp.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright (C) 1991, 1992, 1996, 1998 Free Software Foundation, Inc. - This file is derived from mkstemp.c from 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 Library General Public License as - published by the Free Software Foundation; either version 2 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 - Library General Public License for more details. - - 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, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef IN_GCC -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include <stdint.h> -#include <stdio.h> -#include <fcntl.h> -#include <unistd.h> -#include <sys/time.h> -#else -#include "config.h" -#include "system.h" -#include "gansidecl.h" - -/* We need to provide a type for gcc_uint64_t. */ -#ifdef __GNUC__ -typedef unsigned long long gcc_uint64_t; -#else -typedef unsigned long gcc_uint64_t; -#endif - -#ifndef TMP_MAX -#define TMP_MAX 16384 -#endif -#endif - -/* Generate a unique temporary file name from TEMPLATE. - - TEMPLATE has the form: - - <path>/ccXXXXXX<suffix> - - SUFFIX_LEN tells us how long <suffix> is (it can be zero length). - - The last six characters of TEMPLATE before <suffix> must be "XXXXXX"; - they are replaced with a string that makes the filename unique. - - Returns a file descriptor open on the file for reading and writing. */ -int -mkstemps (template, suffix_len) - char *template; - int suffix_len; -{ - static const char letters[] - = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - static gcc_uint64_t value; -#ifdef HAVE_GETTIMEOFDAY - struct timeval tv; -#endif - char *XXXXXX; - size_t len; - int count; - - len = strlen (template); - - if (len < 6 + suffix_len - || strncmp (&template[len - 6 - suffix_len], "XXXXXX", 6)) - { - return -1; - } - - XXXXXX = &template[len - 6 - suffix_len]; - -#ifdef HAVE_GETTIMEOFDAY - /* Get some more or less random data. */ - gettimeofday (&tv, NULL); - value += ((gcc_uint64_t) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid (); -#else - value += getpid (); -#endif - - for (count = 0; count < TMP_MAX; ++count) - { - gcc_uint64_t v = value; - int fd; - - /* Fill in the random bits. */ - XXXXXX[0] = letters[v % 62]; - v /= 62; - XXXXXX[1] = letters[v % 62]; - v /= 62; - XXXXXX[2] = letters[v % 62]; - v /= 62; - XXXXXX[3] = letters[v % 62]; - v /= 62; - XXXXXX[4] = letters[v % 62]; - v /= 62; - XXXXXX[5] = letters[v % 62]; - - fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600); - if (fd >= 0) - /* The file does not exist. */ - return fd; - - /* This is a random value. It is only necessary that the next - TMP_MAX values generated by adding 7777 to VALUE are different - with (module 2^32). */ - value += 7777; - } - - /* We return the null string if we can't find a unique file name. */ - template[0] = '\0'; - return -1; -} |