Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): clean up Var_Export



details:   https://anonhg.NetBSD.org/src/rev/cff5c1f74535
branches:  trunk
changeset: 947191:cff5c1f74535
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Dec 13 01:41:12 2020 +0000

description:
make(1): clean up Var_Export

diffstat:

 usr.bin/make/nonints.h |  13 +++++++++++--
 usr.bin/make/parse.c   |  16 ++++++++++------
 usr.bin/make/var.c     |  41 +++++++----------------------------------
 3 files changed, 28 insertions(+), 42 deletions(-)

diffs (153 lines):

diff -r 2f37e056344b -r cff5c1f74535 usr.bin/make/nonints.h
--- a/usr.bin/make/nonints.h    Sun Dec 13 01:33:17 2020 +0000
+++ b/usr.bin/make/nonints.h    Sun Dec 13 01:41:12 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nonints.h,v 1.168 2020/12/12 21:20:30 rillig Exp $     */
+/*     $NetBSD: nonints.h,v 1.169 2020/12/13 01:41:12 rillig Exp $     */
 
 /*-
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -311,6 +311,15 @@
     VPR_UNKNOWN                = 0x0008
 } VarParseResult;
 
+typedef enum VarExportMode {
+       /* .export-env */
+       VEM_NORMAL,
+       /* .export: Initial export or update an already exported variable. */
+       VEM_PARENT,
+       /* .export-literal: Do not expand the variable value. */
+       VEM_LITERAL
+} VarExportMode;
+
 void Var_Delete(const char *, GNode *);
 void Var_Set(const char *, const char *, GNode *);
 void Var_SetWithFlags(const char *, const char *, GNode *, VarSetFlags);
@@ -324,7 +333,7 @@
 void Var_Stats(void);
 void Var_Dump(GNode *);
 void Var_ReexportVars(void);
-void Var_Export(const char *);
+void Var_Export(VarExportMode, const char *);
 void Var_ExportVars(const char *);
 void Var_UnExport(const char *);
 
diff -r 2f37e056344b -r cff5c1f74535 usr.bin/make/parse.c
--- a/usr.bin/make/parse.c      Sun Dec 13 01:33:17 2020 +0000
+++ b/usr.bin/make/parse.c      Sun Dec 13 01:41:12 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: parse.c,v 1.475 2020/12/13 01:07:54 rillig Exp $       */
+/*     $NetBSD: parse.c,v 1.476 2020/12/13 01:41:12 rillig Exp $       */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -117,7 +117,7 @@
 #include "pathnames.h"
 
 /*     "@(#)parse.c    8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: parse.c,v 1.475 2020/12/13 01:07:54 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.476 2020/12/13 01:41:12 rillig Exp $");
 
 /* types and constants */
 
@@ -2988,10 +2988,14 @@
                /* TODO: undefine all variables, not only the first */
                /* TODO: use Str_Words, like everywhere else */
                return TRUE;
-       } else if (IsDirective(dir, dirlen, "export") ||
-                  IsDirective(dir, dirlen, "export-env") ||
-                  IsDirective(dir, dirlen, "export-literal")) {
-               Var_Export(dir + strlen("export"));
+       } else if (IsDirective(dir, dirlen, "export")) {
+               Var_Export(VEM_PARENT, arg);
+               return TRUE;
+       } else if (IsDirective(dir, dirlen, "export-env")) {
+               Var_Export(VEM_NORMAL, arg);
+               return TRUE;
+       } else if (IsDirective(dir, dirlen, "export-literal")) {
+               Var_Export(VEM_LITERAL, arg);
                return TRUE;
        } else if (IsDirective(dir, dirlen, "unexport") ||
                   IsDirective(dir, dirlen, "unexport-env")) {
diff -r 2f37e056344b -r cff5c1f74535 usr.bin/make/var.c
--- a/usr.bin/make/var.c        Sun Dec 13 01:33:17 2020 +0000
+++ b/usr.bin/make/var.c        Sun Dec 13 01:41:12 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: var.c,v 1.730 2020/12/13 01:33:17 rillig Exp $ */
+/*     $NetBSD: var.c,v 1.731 2020/12/13 01:41:12 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -131,7 +131,7 @@
 #include "metachar.h"
 
 /*     "@(#)var.c      8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.730 2020/12/13 01:33:17 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.731 2020/12/13 01:41:12 rillig Exp $");
 
 /* A string that may need to be freed after use. */
 typedef struct FStr {
@@ -212,14 +212,6 @@
        VarFlags flags;
 } Var;
 
-typedef enum VarExportMode {
-       VEM_NORMAL,
-       /* Initial export or updating an already exported variable. */
-       VEM_PARENT,
-       /* Do not expand the variable value. */
-       VEM_LITERAL
-} VarExportMode;
-
 /*
  * Exporting vars is expensive so skip it if we can
  */
@@ -578,7 +570,7 @@
                return FALSE;   /* nothing to do */
 
        val = Buf_GetAll(&v->val, NULL);
-       if (!(mode == VEM_LITERAL) && strchr(val, '$') != NULL) {
+       if (mode != VEM_LITERAL && strchr(val, '$') != NULL) {
                char *expr;
 
                if (parent) {
@@ -700,35 +692,16 @@
        free(xvarnames);
 }
 
-/*
- * This is called when .export is seen or .MAKE.EXPORTED is modified.
- *
- * It is also called when any exported variable is modified.
- * XXX: Is it really?
- *
- * str has the format "[-env|-literal] varname...".
- */
+/* Export the named variables, or all variables. */
 void
-Var_Export(const char *str)
+Var_Export(VarExportMode mode, const char *varnames)
 {
-       VarExportMode mode;
-
-       if (str[0] == '\0') {
+       if (mode == VEM_PARENT && varnames[0] == '\0') {
                var_exportedVars = VAR_EXPORTED_ALL; /* use with caution! */
                return;
        }
 
-       if (strncmp(str, "-env", 4) == 0) {
-               str += 4;
-               mode = VEM_NORMAL;
-       } else if (strncmp(str, "-literal", 8) == 0) {
-               str += 8;
-               mode = VEM_LITERAL;
-       } else {
-               mode = VEM_PARENT;
-       }
-
-       ExportVarsExpand(str, TRUE, mode);
+       ExportVarsExpand(varnames, TRUE, mode);
 }
 
 void



Home | Main Index | Thread Index | Old Index