Module Name:    src
Committed By:   rillig
Date:           Fri Dec  4 22:47:57 UTC 2020

Modified Files:
        src/usr.bin/make: var.c

Log Message:
make(1): extract UnexportEnv from Var_UnExport


To generate a diff of this commit:
cvs rdiff -u -r1.700 -r1.701 src/usr.bin/make/var.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.700 src/usr.bin/make/var.c:1.701
--- src/usr.bin/make/var.c:1.700	Fri Dec  4 22:35:40 2020
+++ src/usr.bin/make/var.c	Fri Dec  4 22:47:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.700 2020/12/04 22:35:40 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.701 2020/12/04 22:47:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -130,7 +130,7 @@
 #include "metachar.h"
 
 /*	"@(#)var.c	8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.700 2020/12/04 22:35:40 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.701 2020/12/04 22:47:57 rillig Exp $");
 
 #define VAR_DEBUG1(fmt, arg1) DEBUG1(VAR, fmt, arg1)
 #define VAR_DEBUG2(fmt, arg1, arg2) DEBUG2(VAR, fmt, arg1, arg2)
@@ -670,6 +670,32 @@ Var_Export(const char *str, Boolean isEx
 extern char **environ;
 
 static void
+UnexportEnv(void)
+{
+	const char *cp;
+	char **newenv;
+
+	cp = getenv(MAKE_LEVEL_ENV);	/* we should preserve this */
+	if (environ == savedEnv) {
+		/* we have been here before! */
+		newenv = bmake_realloc(environ, 2 * sizeof(char *));
+	} else {
+		if (savedEnv != NULL) {
+			free(savedEnv);
+			savedEnv = NULL;
+		}
+		newenv = bmake_malloc(2 * sizeof(char *));
+	}
+
+	/* Note: we cannot safely free() the original environ. */
+	environ = savedEnv = newenv;
+	newenv[0] = NULL;
+	newenv[1] = NULL;
+	if (cp && *cp)
+		setenv(MAKE_LEVEL_ENV, cp, 1);
+}
+
+static void
 UnexportVar(const char *varname, Boolean unexport_env, Boolean adjust)
 {
 	Var *v = VarFind(varname, VAR_GLOBAL, FALSE);
@@ -715,27 +741,7 @@ Var_UnExport(const char *str)
     str += strlen("unexport");
     unexport_env = strncmp(str, "-env", 4) == 0;
     if (unexport_env) {
-	const char *cp;
-	char **newenv;
-
-	cp = getenv(MAKE_LEVEL_ENV);	/* we should preserve this */
-	if (environ == savedEnv) {
-	    /* we have been here before! */
-	    newenv = bmake_realloc(environ, 2 * sizeof(char *));
-	} else {
-	    if (savedEnv != NULL) {
-		free(savedEnv);
-		savedEnv = NULL;
-	    }
-	    newenv = bmake_malloc(2 * sizeof(char *));
-	}
-
-	/* Note: we cannot safely free() the original environ. */
-	environ = savedEnv = newenv;
-	newenv[0] = NULL;
-	newenv[1] = NULL;
-	if (cp && *cp)
-	    setenv(MAKE_LEVEL_ENV, cp, 1);
+    	UnexportEnv();
     } else {
 	cpp_skip_whitespace(&str);
 	if (str[0] != '\0')

Reply via email to