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')