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): change return type of Var_Value to FStr



details:   https://anonhg.NetBSD.org/src/rev/6f1f6242caa7
branches:  trunk
changeset: 948194:6f1f6242caa7
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Dec 20 14:32:13 2020 +0000

description:
make(1): change return type of Var_Value to FStr

diffstat:

 usr.bin/make/cond.c    |  10 +++---
 usr.bin/make/main.c    |  66 ++++++++++++++++++++++---------------------------
 usr.bin/make/meta.c    |  64 ++++++++++++++++++++++-------------------------
 usr.bin/make/nonints.h |   4 +-
 usr.bin/make/parse.c   |  42 +++++++++++++++---------------
 usr.bin/make/trace.c   |   9 +++---
 usr.bin/make/var.c     |  17 ++++++------
 7 files changed, 101 insertions(+), 111 deletions(-)

diffs (truncated from 520 to 300 lines):

diff -r 34bd607516e3 -r 6f1f6242caa7 usr.bin/make/cond.c
--- a/usr.bin/make/cond.c       Sun Dec 20 13:50:10 2020 +0000
+++ b/usr.bin/make/cond.c       Sun Dec 20 14:32:13 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cond.c,v 1.229 2020/12/20 13:38:43 rillig Exp $        */
+/*     $NetBSD: cond.c,v 1.230 2020/12/20 14:32:13 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -94,7 +94,7 @@
 #include "dir.h"
 
 /*     "@(#)cond.c     8.2 (Berkeley) 1/2/94"  */
-MAKE_RCSID("$NetBSD: cond.c,v 1.229 2020/12/20 13:38:43 rillig Exp $");
+MAKE_RCSID("$NetBSD: cond.c,v 1.230 2020/12/20 14:32:13 rillig Exp $");
 
 /*
  * The parsing of conditional expressions is based on this grammar:
@@ -286,9 +286,9 @@
 static Boolean
 FuncDefined(size_t argLen MAKE_ATTR_UNUSED, const char *arg)
 {
-       void *freeIt;
-       Boolean result = Var_Value(arg, VAR_CMDLINE, &freeIt) != NULL;
-       bmake_free(freeIt);
+       FStr value = Var_Value(arg, VAR_CMDLINE);
+       Boolean result = value.str != NULL;
+       FStr_Done(&value);
        return result;
 }
 
diff -r 34bd607516e3 -r 6f1f6242caa7 usr.bin/make/main.c
--- a/usr.bin/make/main.c       Sun Dec 20 13:50:10 2020 +0000
+++ b/usr.bin/make/main.c       Sun Dec 20 14:32:13 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.498 2020/12/13 20:14:48 rillig Exp $        */
+/*     $NetBSD: main.c,v 1.499 2020/12/20 14:32:13 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -109,7 +109,7 @@
 #include "trace.h"
 
 /*     "@(#)main.c     8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: main.c,v 1.498 2020/12/13 20:14:48 rillig Exp $");
+MAKE_RCSID("$NetBSD: main.c,v 1.499 2020/12/20 14:32:13 rillig Exp $");
 #if defined(MAKE_NATIVE) && !defined(lint)
 __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 "
            "The Regents of the University of California.  "
@@ -690,10 +690,9 @@
                return;
 
        {
-               void *freeIt;
-               const char *argv0 = Var_Value(".MAKE", VAR_GLOBAL, &freeIt);
-               buf = str_concat3(argv0, " ", line);
-               free(freeIt);
+               FStr argv0 = Var_Value(".MAKE", VAR_GLOBAL);
+               buf = str_concat3(argv0.str, " ", line);
+               FStr_Done(&argv0);
        }
 
        words = Str_Words(buf, TRUE);
@@ -751,29 +750,27 @@
 static Boolean
 SetVarObjdir(Boolean writable, const char *var, const char *suffix)
 {
-       void *path_freeIt;
-       const char *path = Var_Value(var, VAR_CMDLINE, &path_freeIt);
-       const char *xpath;
-       char *xpath_freeIt;
+       FStr path = Var_Value(var, VAR_CMDLINE);
+       FStr xpath;
 
-       if (path == NULL || path[0] == '\0') {
-               bmake_free(path_freeIt);
+       if (path.str == NULL || path.str[0] == '\0') {
+               FStr_Done(&path);
                return FALSE;
        }
 
        /* expand variable substitutions */
-       xpath = path;
-       xpath_freeIt = NULL;
-       if (strchr(path, '$') != 0) {
-               (void)Var_Subst(path, VAR_GLOBAL, VARE_WANTRES, &xpath_freeIt);
+       xpath = FStr_InitRefer(path.str);
+       if (strchr(path.str, '$') != 0) {
+               char *expanded;
+               (void)Var_Subst(path.str, VAR_GLOBAL, VARE_WANTRES, &expanded);
                /* TODO: handle errors */
-               xpath = xpath_freeIt;
+               xpath = FStr_InitOwn(expanded);
        }
 
-       (void)Main_SetObjdir(writable, "%s%s", xpath, suffix);
+       (void)Main_SetObjdir(writable, "%s%s", xpath.str, suffix);
 
-       bmake_free(xpath_freeIt);
-       bmake_free(path_freeIt);
+       FStr_Done(&xpath);
+       FStr_Done(&path);
        return TRUE;
 }
 
@@ -859,10 +856,9 @@
                bmake_free(evalue);
 
        } else {
-               void *freeIt;
-               const char *value = Var_Value(varname, VAR_GLOBAL, &freeIt);
-               printf("%s\n", value ? value : "");
-               bmake_free(freeIt);
+               FStr value = Var_Value(varname, VAR_GLOBAL);
+               printf("%s\n", value.str != NULL ? value.str : "");
+               FStr_Done(&value);
        }
 }
 
@@ -1047,21 +1043,20 @@
 HandlePWD(const struct stat *curdir_st)
 {
        char *pwd;
-       void *prefix_freeIt, *makeobjdir_freeIt;
-       const char *makeobjdir;
+       FStr prefix, makeobjdir;
        struct stat pwd_st;
 
        if (ignorePWD || (pwd = getenv("PWD")) == NULL)
                return;
 
-       if (Var_Value("MAKEOBJDIRPREFIX", VAR_CMDLINE, &prefix_freeIt) !=
-           NULL) {
-               bmake_free(prefix_freeIt);
+       prefix = Var_Value("MAKEOBJDIRPREFIX", VAR_CMDLINE);
+       if (prefix.str != NULL) {
+               FStr_Done(&prefix);
                return;
        }
 
-       makeobjdir = Var_Value("MAKEOBJDIR", VAR_CMDLINE, &makeobjdir_freeIt);
-       if (makeobjdir != NULL && strchr(makeobjdir, '$') != NULL)
+       makeobjdir = Var_Value("MAKEOBJDIR", VAR_CMDLINE);
+       if (makeobjdir.str != NULL && strchr(makeobjdir.str, '$') != NULL)
                goto ignore_pwd;
 
        if (stat(pwd, &pwd_st) == 0 &&
@@ -1070,7 +1065,7 @@
                (void)strncpy(curdir, pwd, MAXPATHLEN);
 
 ignore_pwd:
-       bmake_free(makeobjdir_freeIt);
+       FStr_Done(&makeobjdir);
 }
 #endif
 
@@ -1554,10 +1549,9 @@
        MakeMode(NULL);
 
        {
-               void *freeIt;
-               Var_Append("MFLAGS", Var_Value(MAKEFLAGS, VAR_GLOBAL, &freeIt),
-                   VAR_GLOBAL);
-               bmake_free(freeIt);
+               FStr makeflags = Var_Value(MAKEFLAGS, VAR_GLOBAL);
+               Var_Append("MFLAGS", makeflags.str, VAR_GLOBAL);
+               FStr_Done(&makeflags);
        }
 
        InitMaxJobs();
diff -r 34bd607516e3 -r 6f1f6242caa7 usr.bin/make/meta.c
--- a/usr.bin/make/meta.c       Sun Dec 20 13:50:10 2020 +0000
+++ b/usr.bin/make/meta.c       Sun Dec 20 14:32:13 2020 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.c,v 1.160 2020/12/13 21:27:45 rillig Exp $ */
+/*      $NetBSD: meta.c,v 1.161 2020/12/20 14:32:13 rillig Exp $ */
 
 /*
  * Implement 'meta' mode.
@@ -323,8 +323,7 @@
     Boolean rc = FALSE;
 
     if (p_make == NULL) {
-       void *dontFreeIt;
-       p_make = Var_Value(".MAKE", gn, &dontFreeIt);
+       p_make = Var_Value(".MAKE", gn).str;
        p_len = strlen(p_make);
     }
     cp = strchr(cmd, '$');
@@ -473,21 +472,20 @@
     char buf[MAXPATHLEN];
     char objdir_realpath[MAXPATHLEN];
     char **ptr;
-    const char *dname;
+    FStr dname;
     const char *tname;
     char *fname;
     const char *cp;
-    void *dname_freeIt;
 
     fp = NULL;
 
-    dname = Var_Value(".OBJDIR", gn, &dname_freeIt);
+    dname = Var_Value(".OBJDIR", gn);
     tname = GNode_VarTarget(gn);
 
     /* if this succeeds objdir_realpath is realpath of dname */
-    if (!meta_needed(gn, dname, objdir_realpath, TRUE))
+    if (!meta_needed(gn, dname.str, objdir_realpath, TRUE))
        goto out;
-    dname = objdir_realpath;
+    dname.str = objdir_realpath;
 
     if (metaVerbose) {
        char *mp;
@@ -509,7 +507,7 @@
        goto out;
 
     fname = meta_name(pbm->meta_fname, sizeof pbm->meta_fname,
-                     dname, tname, objdir_realpath);
+                     dname.str, tname, objdir_realpath);
 
 #ifdef DEBUG_META_MODE
     DEBUG1(META, "meta_create: %s\n", fname);
@@ -544,7 +542,7 @@
            gn->type |= OP_SILENT;
     }
  out:
-    bmake_free(dname_freeIt);
+    FStr_Done(&dname);
 
     return fp;
 }
@@ -588,7 +586,7 @@
 {
     static Boolean once = FALSE;
     char *cp;
-    void *freeIt;
+    FStr value;
 
     useMeta = TRUE;
     useFilemon = TRUE;
@@ -644,15 +642,15 @@
     /*
      * We ignore any paths that match ${.MAKE.META.IGNORE_PATTERNS}
      */
-    freeIt = NULL;
-    if (Var_Value(MAKE_META_IGNORE_PATTERNS, VAR_GLOBAL, &freeIt)) {
+    value = Var_Value(MAKE_META_IGNORE_PATTERNS, VAR_GLOBAL);
+    if (value.str != NULL) {
        metaIgnorePatterns = TRUE;
-       bmake_free(freeIt);
+       FStr_Done(&value);
     }
-    freeIt = NULL;
-    if (Var_Value(MAKE_META_IGNORE_FILTER, VAR_GLOBAL, &freeIt)) {
+    value = Var_Value(MAKE_META_IGNORE_FILTER, VAR_GLOBAL);
+    if (value.str != NULL) {
        metaIgnoreFilter = TRUE;
-       bmake_free(freeIt);
+       FStr_Done(&value);
     }
 }
 
@@ -1075,7 +1073,7 @@
     char fname1[MAXPATHLEN];
     char fname2[MAXPATHLEN];
     char fname3[MAXPATHLEN];
-    const char *dname;
+    FStr dname;
     const char *tname;
     char *p;
     char *cp;
@@ -1087,18 +1085,17 @@
     Boolean needOODATE = FALSE;
     StringList missingFiles;
     Boolean have_filemon = FALSE;
-    void *objdir_freeIt;
 
     if (oodate)
        return oodate;          /* we're done */
 
-    dname = Var_Value(".OBJDIR", gn, &objdir_freeIt);
+    dname = Var_Value(".OBJDIR", gn);
     tname = GNode_VarTarget(gn);
 
     /* if this succeeds fname3 is realpath of dname */
-    if (!meta_needed(gn, dname, fname3, FALSE))
+    if (!meta_needed(gn, dname.str, fname3, FALSE))
        goto oodate_out;
-    dname = fname3;
+    dname.str = fname3;
 
     Lst_Init(&missingFiles);
 
@@ -1110,7 +1107,7 @@
      */
     Make_DoAllVar(gn);
 
-    meta_name(fname, sizeof fname, dname, tname, dname);



Home | Main Index | Thread Index | Old Index