This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Patch to remove putenv definition from gcc.c [take-2]


Here's take-2 of getting rid of putenv in gcc.c.  The change over the
previous patch is the code in vax/xm-vms.h, which addresses concerns
raised for VMS.

Bootstrapped on solaris2.7, Ok to install?

		--Kaveh



2001-03-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Don't check for putenv.
	* configure: Regenerate.
	* gcc.c (putenv): Don't define.
	* vax/xm-vms.h: Handle putenv.

diff -rup orig/egcs-CVS20010328/gcc/configure.in egcs-CVS20010328/gcc/configure.in
--- orig/egcs-CVS20010328/gcc/configure.in	Wed Mar 28 07:41:28 2001
+++ egcs-CVS20010328/gcc/configure.in	Wed Mar 28 22:01:52 2001
@@ -544,7 +544,7 @@ fi
 dnl Disabled until we have a complete test for buggy enum bitfields.
 dnl gcc_AC_C_ENUM_BF_UNSIGNED
 
-AC_CHECK_FUNCS(strtoul bsearch putenv popen \
+AC_CHECK_FUNCS(strtoul bsearch popen \
 	strchr strrchr kill getrlimit setrlimit atoll atoq \
 	sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \
 	fputs_unlocked getrusage iconv nl_langinfo)
diff -rup orig/egcs-CVS20010328/gcc/gcc.c egcs-CVS20010328/gcc/gcc.c
--- orig/egcs-CVS20010328/gcc/gcc.c	Tue Mar 20 07:42:26 2001
+++ egcs-CVS20010328/gcc/gcc.c	Wed Mar 28 21:59:50 2001
@@ -2009,60 +2009,6 @@ clear_failure_queue ()
   failure_delete_queue = 0;
 }
 
-/* Routine to add variables to the environment.  We do this to pass
-   the pathname of the gcc driver, and the directories search to the
-   collect2 program, which is being run as ld.  This way, we can be
-   sure of executing the right compiler when collect2 wants to build
-   constructors and destructors.  Since the environment variables we
-   use come from an obstack, we don't have to worry about allocating
-   space for them.  */
-
-#ifndef HAVE_PUTENV
-
-void
-putenv (str)
-     char *str;
-{
-#ifndef VMS			/* nor about VMS */
-
-  extern char **environ;
-  char **old_environ = environ;
-  char **envp;
-  int num_envs = 0;
-  int name_len = 1;
-  int str_len = strlen (str);
-  char *p = str;
-  int ch;
-
-  while ((ch = *p++) != '\0' && ch != '=')
-    name_len++;
-
-  if (!ch)
-    abort ();
-
-  /* Search for replacing an existing environment variable, and
-     count the number of total environment variables.  */
-  for (envp = old_environ; *envp; envp++)
-    {
-      num_envs++;
-      if (!strncmp (str, *envp, name_len))
-	{
-	  *envp = str;
-	  return;
-	}
-    }
-
-  /* Add a new environment variable */
-  environ = (char **) xmalloc (sizeof (char *) * (num_envs + 2));
-  *environ = str;
-  memcpy ((char *) (environ + 1), (char *) old_environ,
-	  sizeof (char *) * (num_envs + 1));
-
-#endif	/* VMS */
-}
-
-#endif /* HAVE_PUTENV */
-
 /* Build a list of search directories from PATHS.
    PREFIX is a string to prepend to the list.
    If CHECK_DIR_P is non-zero we ensure the directory exists.
diff -rup orig/egcs-CVS20010328/gcc/config/vax/xm-vms.h egcs-CVS20010328/gcc/config/vax/xm-vms.h
--- orig/egcs-CVS20010328/gcc/config/vax/xm-vms.h	Thu Mar 15 07:43:33 2001
+++ egcs-CVS20010328/gcc/config/vax/xm-vms.h	Wed Mar 28 22:04:56 2001
@@ -101,6 +101,14 @@ Boston, MA 02111-1307, USA.  */
 /* vprintf() has been available since VMS V4.6.  */
 
 #define HAVE_VPRINTF
+
+/* Early versions of VAX C for VMS do not have putenv.  Comment out
+   the following define if your system doesn't have putenv.  */
+#define HAVE_PUTENV
+
+#ifndef HAVE_PUTENV
+#define putenv(x)
+#endif
 
 #if defined(VAXC) || defined(__DECC)
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]