Module Name: src Committed By: rillig Date: Wed Feb 3 08:00:36 UTC 2021
Modified Files: src/usr.bin/make: dir.c job.c main.c meta.c nonints.h parse.c suff.c targ.c util.c var.c Log Message: make: use shortcut functions Global_SetExpand and Global_AppendExpand There are many places where global variables are set or appended to. To reduce clutter and code size, encode the VAR_GLOBAL in the function name. The word Expand in the function names says that the variable name is expanded. In most of the cases, this is not necessary, but there are no corresponding functions Global_Set or Global_Append yet. Encoding the information whether the name is expanded or not in the function name will make inconsistencies obvious in future manual code reviews. Letting the compiler check this by using different types for unexpanded and expanded variable names is probably not worth the effort. There are still a few bugs to be fixed, such as in SetVar, which expands the variable name twice in a row. To generate a diff of this commit: cvs rdiff -u -r1.265 -r1.266 src/usr.bin/make/dir.c cvs rdiff -u -r1.412 -r1.413 src/usr.bin/make/job.c cvs rdiff -u -r1.526 -r1.527 src/usr.bin/make/main.c cvs rdiff -u -r1.170 -r1.171 src/usr.bin/make/meta.c cvs rdiff -u -r1.190 -r1.191 src/usr.bin/make/nonints.h cvs rdiff -u -r1.538 -r1.539 src/usr.bin/make/parse.c cvs rdiff -u -r1.341 -r1.342 src/usr.bin/make/suff.c cvs rdiff -u -r1.161 -r1.162 src/usr.bin/make/targ.c cvs rdiff -u -r1.75 -r1.76 src/usr.bin/make/util.c cvs rdiff -u -r1.790 -r1.791 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/dir.c diff -u src/usr.bin/make/dir.c:1.265 src/usr.bin/make/dir.c:1.266 --- src/usr.bin/make/dir.c:1.265 Sat Jan 30 20:53:29 2021 +++ src/usr.bin/make/dir.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dir.c,v 1.265 2021/01/30 20:53:29 rillig Exp $ */ +/* $NetBSD: dir.c,v 1.266 2021/02/03 08:00:36 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -138,7 +138,7 @@ #include "job.h" /* "@(#)dir.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: dir.c,v 1.265 2021/01/30 20:53:29 rillig Exp $"); +MAKE_RCSID("$NetBSD: dir.c,v 1.266 2021/02/03 08:00:36 rillig Exp $"); /* * A search path is a list of CachedDir structures. A CachedDir has in it the @@ -555,15 +555,15 @@ Dir_SetPATH(void) CachedDir *dir = ln->datum; if (dir == dotLast) { seenDotLast = TRUE; - Var_Append(".PATH", dotLast->name, VAR_GLOBAL); + Global_AppendExpand(".PATH", dotLast->name); } } if (!seenDotLast) { if (dot != NULL) - Var_Append(".PATH", dot->name, VAR_GLOBAL); + Global_AppendExpand(".PATH", dot->name); if (cur != NULL) - Var_Append(".PATH", cur->name, VAR_GLOBAL); + Global_AppendExpand(".PATH", cur->name); } for (ln = dirSearchPath.dirs.first; ln != NULL; ln = ln->next) { @@ -572,14 +572,14 @@ Dir_SetPATH(void) continue; if (dir == dot && seenDotLast) continue; - Var_Append(".PATH", dir->name, VAR_GLOBAL); + Global_AppendExpand(".PATH", dir->name); } if (seenDotLast) { if (dot != NULL) - Var_Append(".PATH", dot->name, VAR_GLOBAL); + Global_AppendExpand(".PATH", dot->name); if (cur != NULL) - Var_Append(".PATH", cur->name, VAR_GLOBAL); + Global_AppendExpand(".PATH", cur->name); } } Index: src/usr.bin/make/job.c diff -u src/usr.bin/make/job.c:1.412 src/usr.bin/make/job.c:1.413 --- src/usr.bin/make/job.c:1.412 Mon Feb 1 21:09:25 2021 +++ src/usr.bin/make/job.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.412 2021/02/01 21:09:25 rillig Exp $ */ +/* $NetBSD: job.c,v 1.413 2021/02/03 08:00:36 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -142,7 +142,7 @@ #include "trace.h" /* "@(#)job.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: job.c,v 1.412 2021/02/01 21:09:25 rillig Exp $"); +MAKE_RCSID("$NetBSD: job.c,v 1.413 2021/02/03 08:00:36 rillig Exp $"); /* * A shell defines how the commands are run. All commands for a target are @@ -2177,7 +2177,7 @@ Job_SetPrefix(void) if (targPrefix != NULL) { free(targPrefix); } else if (!Var_Exists(MAKE_JOB_PREFIX, VAR_GLOBAL)) { - Var_Set(MAKE_JOB_PREFIX, "---", VAR_GLOBAL); + Global_SetExpand(MAKE_JOB_PREFIX, "---"); } (void)Var_Subst("${" MAKE_JOB_PREFIX "}", @@ -2791,8 +2791,8 @@ Job_ServerStart(int max_tokens, int jp_0 snprintf(jobarg, sizeof jobarg, "%d,%d", tokenWaitJob.inPipe, tokenWaitJob.outPipe); - Var_Append(MAKEFLAGS, "-J", VAR_GLOBAL); - Var_Append(MAKEFLAGS, jobarg, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-J"); + Global_AppendExpand(MAKEFLAGS, jobarg); /* * Preload the job pipe with one token per job, save the one Index: src/usr.bin/make/main.c diff -u src/usr.bin/make/main.c:1.526 src/usr.bin/make/main.c:1.527 --- src/usr.bin/make/main.c:1.526 Mon Feb 1 21:04:10 2021 +++ src/usr.bin/make/main.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.526 2021/02/01 21:04:10 rillig Exp $ */ +/* $NetBSD: main.c,v 1.527 2021/02/03 08:00:36 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -111,7 +111,7 @@ #include "trace.h" /* "@(#)main.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: main.c,v 1.526 2021/02/01 21:04:10 rillig Exp $"); +MAKE_RCSID("$NetBSD: main.c,v 1.527 2021/02/03 08:00:36 rillig Exp $"); #if defined(MAKE_NATIVE) && !defined(lint) __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 " "The Regents of the University of California. " @@ -409,8 +409,8 @@ MainParseArgJobsInternal(const char *arg jp_1 = -1; opts.compatMake = TRUE; } else { - Var_Append(MAKEFLAGS, "-J", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-J"); + Global_AppendExpand(MAKEFLAGS, argvalue); } } @@ -427,9 +427,9 @@ MainParseArgJobs(const char *argvalue) progname); exit(2); /* Not 1 so -q can distinguish error */ } - Var_Append(MAKEFLAGS, "-j", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); - Var_Set(".MAKE.JOBS", argvalue, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-j"); + Global_AppendExpand(MAKEFLAGS, argvalue); + Global_SetExpand(".MAKE.JOBS", argvalue); maxJobTokens = opts.maxJobs; } @@ -446,8 +446,8 @@ MainParseArgSysInc(const char *argvalue) } else { (void)SearchPath_Add(sysIncPath, argvalue); } - Var_Append(MAKEFLAGS, "-m", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-m"); + Global_AppendExpand(MAKEFLAGS, argvalue); } static Boolean @@ -458,22 +458,22 @@ MainParseArg(char c, const char *argvalu break; case 'B': opts.compatMake = TRUE; - Var_Append(MAKEFLAGS, "-B", VAR_GLOBAL); - Var_Set(MAKE_MODE, "compat", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-B"); + Global_SetExpand(MAKE_MODE, "compat"); break; case 'C': MainParseArgChdir(argvalue); break; case 'D': if (argvalue[0] == '\0') return FALSE; - Var_Set(argvalue, "1", VAR_GLOBAL); - Var_Append(MAKEFLAGS, "-D", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); + Global_SetExpand(argvalue, "1"); + Global_AppendExpand(MAKEFLAGS, "-D"); + Global_AppendExpand(MAKEFLAGS, argvalue); break; case 'I': Parse_AddIncludeDir(argvalue); - Var_Append(MAKEFLAGS, "-I", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-I"); + Global_AppendExpand(MAKEFLAGS, argvalue); break; case 'J': MainParseArgJobsInternal(argvalue); @@ -481,24 +481,24 @@ MainParseArg(char c, const char *argvalu case 'N': opts.noExecute = TRUE; opts.noRecursiveExecute = TRUE; - Var_Append(MAKEFLAGS, "-N", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-N"); break; case 'S': opts.keepgoing = FALSE; - Var_Append(MAKEFLAGS, "-S", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-S"); break; case 'T': tracefile = bmake_strdup(argvalue); - Var_Append(MAKEFLAGS, "-T", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-T"); + Global_AppendExpand(MAKEFLAGS, argvalue); break; case 'V': case 'v': opts.printVars = c == 'v' ? PVM_EXPANDED : PVM_UNEXPANDED; Lst_Append(&opts.variables, bmake_strdup(argvalue)); /* XXX: Why always -V? */ - Var_Append(MAKEFLAGS, "-V", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-V"); + Global_AppendExpand(MAKEFLAGS, argvalue); break; case 'W': opts.parseWarnFatal = TRUE; @@ -506,35 +506,35 @@ MainParseArg(char c, const char *argvalu break; case 'X': opts.varNoExportEnv = TRUE; - Var_Append(MAKEFLAGS, "-X", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-X"); break; case 'd': /* If '-d-opts' don't pass to children */ if (argvalue[0] == '-') argvalue++; else { - Var_Append(MAKEFLAGS, "-d", VAR_GLOBAL); - Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-d"); + Global_AppendExpand(MAKEFLAGS, argvalue); } MainParseArgDebug(argvalue); break; case 'e': opts.checkEnvFirst = TRUE; - Var_Append(MAKEFLAGS, "-e", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-e"); break; case 'f': Lst_Append(&opts.makefiles, bmake_strdup(argvalue)); break; case 'i': opts.ignoreErrors = TRUE; - Var_Append(MAKEFLAGS, "-i", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-i"); break; case 'j': MainParseArgJobs(argvalue); break; case 'k': opts.keepgoing = TRUE; - Var_Append(MAKEFLAGS, "-k", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-k"); break; case 'm': MainParseArgSysInc(argvalue); @@ -542,28 +542,28 @@ MainParseArg(char c, const char *argvalu break; case 'n': opts.noExecute = TRUE; - Var_Append(MAKEFLAGS, "-n", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-n"); break; case 'q': opts.queryFlag = TRUE; /* Kind of nonsensical, wot? */ - Var_Append(MAKEFLAGS, "-q", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-q"); break; case 'r': opts.noBuiltins = TRUE; - Var_Append(MAKEFLAGS, "-r", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-r"); break; case 's': opts.beSilent = TRUE; - Var_Append(MAKEFLAGS, "-s", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-s"); break; case 't': opts.touchFlag = TRUE; - Var_Append(MAKEFLAGS, "-t", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-t"); break; case 'w': opts.enterFlag = TRUE; - Var_Append(MAKEFLAGS, "-w", VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-w"); break; default: case '?': @@ -737,7 +737,7 @@ Main_SetObjdir(Boolean writable, const c progname, path, strerror(errno)); } else { snprintf(objdir, sizeof objdir, "%s", path); - Var_Set(".OBJDIR", objdir, VAR_GLOBAL); + Global_SetExpand(".OBJDIR", objdir); setenv("PWD", objdir, 1); Dir_InitDot(); purge_relative_cached_realpaths(); @@ -957,13 +957,13 @@ InitVarTargets(void) StringListNode *ln; if (Lst_IsEmpty(&opts.create)) { - Var_Set(".TARGETS", "", VAR_GLOBAL); + Global_SetExpand(".TARGETS", ""); return; } for (ln = opts.create.first; ln != NULL; ln = ln->next) { const char *name = ln->datum; - Var_Append(".TARGETS", name, VAR_GLOBAL); + Global_AppendExpand(".TARGETS", name); } } @@ -1159,8 +1159,8 @@ InitVarMake(const char *argv0) make = abspath; } - Var_Set("MAKE", make, VAR_GLOBAL); - Var_Set(".MAKE", make, VAR_GLOBAL); + Global_SetExpand("MAKE", make); + Global_SetExpand(".MAKE", make); } /* @@ -1253,8 +1253,8 @@ InitMaxJobs(void) } if (n != opts.maxJobs) { - Var_Append(MAKEFLAGS, "-j", VAR_GLOBAL); - Var_Append(MAKEFLAGS, value, VAR_GLOBAL); + Global_AppendExpand(MAKEFLAGS, "-j"); + Global_AppendExpand(MAKEFLAGS, value); } opts.maxJobs = n; @@ -1383,21 +1383,21 @@ main_Init(int argc, char **argv) */ Targ_Init(); Var_Init(); - Var_Set(".MAKE.OS", utsname.sysname, VAR_GLOBAL); - Var_Set("MACHINE", machine, VAR_GLOBAL); - Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL); + Global_SetExpand(".MAKE.OS", utsname.sysname); + Global_SetExpand("MACHINE", machine); + Global_SetExpand("MACHINE_ARCH", machine_arch); #ifdef MAKE_VERSION - Var_Set("MAKE_VERSION", MAKE_VERSION, VAR_GLOBAL); + Global_SetExpand("MAKE_VERSION", MAKE_VERSION); #endif - Var_Set(".newline", "\n", VAR_GLOBAL); /* handy for :@ loops */ + Global_SetExpand(".newline", "\n"); /* handy for :@ loops */ /* * This is the traditional preference for makefiles. */ #ifndef MAKEFILE_PREFERENCE_LIST # define MAKEFILE_PREFERENCE_LIST "makefile Makefile" #endif - Var_Set(MAKE_MAKEFILE_PREFERENCE, MAKEFILE_PREFERENCE_LIST, VAR_GLOBAL); - Var_Set(MAKE_DEPENDFILE, ".depend", VAR_GLOBAL); + Global_SetExpand(MAKE_MAKEFILE_PREFERENCE, MAKEFILE_PREFERENCE_LIST); + Global_SetExpand(MAKE_DEPENDFILE, ".depend"); CmdOpts_Init(); allPrecious = FALSE; /* Remove targets when interrupted */ @@ -1421,10 +1421,10 @@ main_Init(int argc, char **argv) */ Parse_Init(); InitVarMake(argv[0]); - Var_Set(MAKEFLAGS, "", VAR_GLOBAL); - Var_Set(MAKEOVERRIDES, "", VAR_GLOBAL); - Var_Set("MFLAGS", "", VAR_GLOBAL); - Var_Set(".ALLTARGETS", "", VAR_GLOBAL); + Global_SetExpand(MAKEFLAGS, ""); + Global_SetExpand(MAKEOVERRIDES, ""); + Global_SetExpand("MFLAGS", ""); + Global_SetExpand(".ALLTARGETS", ""); /* some makefiles need to know this */ Var_Set(MAKE_LEVEL ".ENV", MAKE_LEVEL_ENV, VAR_CMDLINE); @@ -1436,15 +1436,15 @@ main_Init(int argc, char **argv) if (makelevel < 0) makelevel = 0; snprintf(tmp, sizeof tmp, "%d", makelevel); - Var_Set(MAKE_LEVEL, tmp, VAR_GLOBAL); + Global_SetExpand(MAKE_LEVEL, tmp); snprintf(tmp, sizeof tmp, "%u", myPid); - Var_Set(".MAKE.PID", tmp, VAR_GLOBAL); + Global_SetExpand(".MAKE.PID", tmp); snprintf(tmp, sizeof tmp, "%u", getppid()); - Var_Set(".MAKE.PPID", tmp, VAR_GLOBAL); + Global_SetExpand(".MAKE.PPID", tmp); snprintf(tmp, sizeof tmp, "%u", getuid()); - Var_Set(".MAKE.UID", tmp, VAR_GLOBAL); + Global_SetExpand(".MAKE.UID", tmp); snprintf(tmp, sizeof tmp, "%u", getgid()); - Var_Set(".MAKE.GID", tmp, VAR_GLOBAL); + Global_SetExpand(".MAKE.GID", tmp); } if (makelevel > 0) { char pn[1024]; @@ -1499,7 +1499,7 @@ main_Init(int argc, char **argv) #ifndef NO_PWD_OVERRIDE HandlePWD(&sa); #endif - Var_Set(".CURDIR", curdir, VAR_GLOBAL); + Global_SetExpand(".CURDIR", curdir); InitObjdir(machine, machine_arch); @@ -1561,7 +1561,7 @@ main_PrepareMaking(void) { FStr makeflags = Var_Value(MAKEFLAGS, VAR_GLOBAL); - Var_Append("MFLAGS", makeflags.str, VAR_GLOBAL); + Global_AppendExpand("MFLAGS", makeflags.str); FStr_Done(&makeflags); } @@ -2104,7 +2104,7 @@ SetErrorVars(GNode *gn) /* * We can print this even if there is no .ERROR target. */ - Var_Set(".ERROR_TARGET", gn->name, VAR_GLOBAL); + Global_SetExpand(".ERROR_TARGET", gn->name); Var_Delete(".ERROR_CMD", VAR_GLOBAL); for (ln = gn->commands.first; ln != NULL; ln = ln->next) { @@ -2112,7 +2112,7 @@ SetErrorVars(GNode *gn) if (cmd == NULL) break; - Var_Append(".ERROR_CMD", cmd, VAR_GLOBAL); + Global_AppendExpand(".ERROR_CMD", cmd); } } Index: src/usr.bin/make/meta.c diff -u src/usr.bin/make/meta.c:1.170 src/usr.bin/make/meta.c:1.171 --- src/usr.bin/make/meta.c:1.170 Mon Feb 1 21:32:54 2021 +++ src/usr.bin/make/meta.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.170 2021/02/01 21:32:54 rillig Exp $ */ +/* $NetBSD: meta.c,v 1.171 2021/02/03 08:00:36 rillig Exp $ */ /* * Implement 'meta' mode. @@ -534,8 +534,8 @@ meta_create(BuildMon *pbm, GNode *gn) fprintf(fp, "-- command output --\n"); fflush(fp); - Var_Append(".MAKE.META.FILES", fname, VAR_GLOBAL); - Var_Append(".MAKE.META.CREATED", fname, VAR_GLOBAL); + Global_AppendExpand(".MAKE.META.FILES", fname); + Global_AppendExpand(".MAKE.META.CREATED", fname); gn->type |= OP_META; /* in case anyone wants to know */ if (metaSilent) { @@ -569,7 +569,7 @@ meta_init(void) { #ifdef USE_FILEMON /* this allows makefiles to test if we have filemon support */ - Var_Set(".MAKE.PATH_FILEMON", filemon_path(), VAR_GLOBAL); + Global_SetExpand(".MAKE.PATH_FILEMON", filemon_path()); #endif } @@ -616,7 +616,8 @@ meta_mode_init(const char *make_mode) * This works be cause :H will generate '.' if there is no / * and :tA will resolve that to cwd. */ - Var_Set(MAKE_META_PREFIX, "Building ${.TARGET:H:tA}/${.TARGET:T}", VAR_GLOBAL); + Global_SetExpand(MAKE_META_PREFIX, + "Building ${.TARGET:H:tA}/${.TARGET:T}"); } if (once) return; @@ -632,8 +633,8 @@ meta_mode_init(const char *make_mode) /* * We ignore any paths that start with ${.MAKE.META.IGNORE_PATHS} */ - Var_Append(MAKE_META_IGNORE_PATHS, - "/dev /etc /proc /tmp /var/run /var/tmp ${TMPDIR}", VAR_GLOBAL); + Global_AppendExpand(MAKE_META_IGNORE_PATHS, + "/dev /etc /proc /tmp /var/run /var/tmp ${TMPDIR}"); (void)Var_Subst("${" MAKE_META_IGNORE_PATHS ":O:u:tA}", VAR_GLOBAL, VARE_WANTRES, &metaIgnorePathsStr); /* TODO: handle errors */ @@ -782,13 +783,12 @@ meta_job_error(Job *job, GNode *gn, Bool fprintf(pbm->mfp, "\n*** Error code %d%s\n", status, ignerr ? "(ignored)" : ""); } - if (gn != NULL) { - Var_Set(".ERROR_TARGET", GNode_Path(gn), VAR_GLOBAL); - } + if (gn != NULL) + Global_SetExpand(".ERROR_TARGET", GNode_Path(gn)); getcwd(cwd, sizeof cwd); - Var_Set(".ERROR_CWD", cwd, VAR_GLOBAL); + Global_SetExpand(".ERROR_CWD", cwd); if (pbm->meta_fname[0] != '\0') { - Var_Set(".ERROR_META_FILE", pbm->meta_fname, VAR_GLOBAL); + Global_SetExpand(".ERROR_META_FILE", pbm->meta_fname); } meta_job_finish(job); } @@ -1142,7 +1142,7 @@ meta_oodate(GNode *gn, Boolean oodate) } /* we want to track all the .meta we read */ - Var_Append(".MAKE.META.FILES", fname, VAR_GLOBAL); + Global_AppendExpand(".MAKE.META.FILES", fname); cmdNode = gn->commands.first; while (!oodate && (x = fgetLine(&buf, &bufsz, 0, fp)) > 0) { @@ -1217,8 +1217,8 @@ meta_oodate(GNode *gn, Boolean oodate) if (lastpid > 0) { /* We need to remember these. */ - Var_Set(lcwd_vname, lcwd, VAR_GLOBAL); - Var_Set(ldir_vname, latestdir, VAR_GLOBAL); + Global_SetExpand(lcwd_vname, lcwd); + Global_SetExpand(ldir_vname, latestdir); } snprintf(lcwd_vname, sizeof lcwd_vname, LCWD_VNAME_FMT, pid); snprintf(ldir_vname, sizeof ldir_vname, LDIR_VNAME_FMT, pid); @@ -1264,9 +1264,9 @@ meta_oodate(GNode *gn, Boolean oodate) child = atoi(p); if (child > 0) { snprintf(cldir, sizeof cldir, LCWD_VNAME_FMT, child); - Var_Set(cldir, lcwd, VAR_GLOBAL); + Global_SetExpand(cldir, lcwd); snprintf(cldir, sizeof cldir, LDIR_VNAME_FMT, child); - Var_Set(cldir, latestdir, VAR_GLOBAL); + Global_SetExpand(cldir, latestdir); #ifdef DEBUG_META_MODE if (DEBUG(META)) debug_printf( @@ -1282,8 +1282,8 @@ meta_oodate(GNode *gn, Boolean oodate) /* Update lcwd and latest directory. */ strlcpy(latestdir, p, sizeof latestdir); strlcpy(lcwd, p, sizeof lcwd); - Var_Set(lcwd_vname, lcwd, VAR_GLOBAL); - Var_Set(ldir_vname, lcwd, VAR_GLOBAL); + Global_SetExpand(lcwd_vname, lcwd); + Global_SetExpand(ldir_vname, lcwd); #ifdef DEBUG_META_MODE DEBUG4(META, "%s: %d: cwd=%s ldir=%s\n", fname, lineno, cwd, lcwd); Index: src/usr.bin/make/nonints.h diff -u src/usr.bin/make/nonints.h:1.190 src/usr.bin/make/nonints.h:1.191 --- src/usr.bin/make/nonints.h:1.190 Tue Feb 2 17:56:31 2021 +++ src/usr.bin/make/nonints.h Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: nonints.h,v 1.190 2021/02/02 17:56:31 rillig Exp $ */ +/* $NetBSD: nonints.h,v 1.191 2021/02/03 08:00:36 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -371,9 +371,11 @@ typedef enum VarExportMode { void Var_DeleteVar(const char *, GNode *); void Var_Delete(const char *, GNode *); void Var_Undef(const char *); +void Global_SetExpand(const char *, const char *); void Var_Set(const char *, const char *, GNode *); void Var_SetWithFlags(const char *, const char *, GNode *, VarSetFlags); void Var_Append(const char *, const char *, GNode *); +void Global_AppendExpand(const char *, const char *); Boolean Var_Exists(const char *, GNode *); FStr Var_Value(const char *, GNode *); const char *Var_ValueDirect(const char *, GNode *); Index: src/usr.bin/make/parse.c diff -u src/usr.bin/make/parse.c:1.538 src/usr.bin/make/parse.c:1.539 --- src/usr.bin/make/parse.c:1.538 Mon Feb 1 22:21:33 2021 +++ src/usr.bin/make/parse.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.538 2021/02/01 22:21:33 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.539 2021/02/03 08:00:36 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -109,7 +109,7 @@ #include "pathnames.h" /* "@(#)parse.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: parse.c,v 1.538 2021/02/01 22:21:33 rillig Exp $"); +MAKE_RCSID("$NetBSD: parse.c,v 1.539 2021/02/03 08:00:36 rillig Exp $"); /* types and constants */ @@ -886,7 +886,7 @@ ParseDependencySourceMain(const char *sr * Add the name to the .TARGETS variable as well, so the user can * employ that, if desired. */ - Var_Append(".TARGETS", src, VAR_GLOBAL); + Global_AppendExpand(".TARGETS", src); } static void @@ -1327,7 +1327,7 @@ ParseDoDependencySourcesEmpty(ParseSpeci break; #ifdef POSIX case SP_POSIX: - Var_Set("%POSIX", "1003.2", VAR_GLOBAL); + Global_SetExpand("%POSIX", "1003.2"); break; #endif default: @@ -2281,8 +2281,8 @@ SetFilenameVars(const char *filename, co basename = slash + 1; } - Var_Set(dirvar, dirname, VAR_GLOBAL); - Var_Set(filevar, basename, VAR_GLOBAL); + Global_SetExpand(dirvar, dirname); + Global_SetExpand(filevar, basename); DEBUG5(PARSE, "%s: ${%s} = `%s' ${%s} = `%s'\n", __func__, dirvar, dirname, filevar, basename); @@ -2375,7 +2375,7 @@ static void ParseTrackInput(const char *name) { if (!VarContainsWord(MAKE_MAKEFILES, name)) - Var_Append(MAKE_MAKEFILES, name, VAR_GLOBAL); + Global_AppendExpand(MAKE_MAKEFILES, name); } @@ -3283,7 +3283,7 @@ Parse_MainName(GNodeList *mainList) if (mainNode->type & OP_DOUBLEDEP) Lst_AppendAll(mainList, &mainNode->cohorts); - Var_Append(".TARGETS", mainNode->name, VAR_GLOBAL); + Global_AppendExpand(".TARGETS", mainNode->name); } int Index: src/usr.bin/make/suff.c diff -u src/usr.bin/make/suff.c:1.341 src/usr.bin/make/suff.c:1.342 --- src/usr.bin/make/suff.c:1.341 Sat Jan 30 15:48:42 2021 +++ src/usr.bin/make/suff.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: suff.c,v 1.341 2021/01/30 15:48:42 rillig Exp $ */ +/* $NetBSD: suff.c,v 1.342 2021/02/03 08:00:36 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -114,7 +114,7 @@ #include "dir.h" /* "@(#)suff.c 8.4 (Berkeley) 3/21/94" */ -MAKE_RCSID("$NetBSD: suff.c,v 1.341 2021/01/30 15:48:42 rillig Exp $"); +MAKE_RCSID("$NetBSD: suff.c,v 1.342 2021/02/03 08:00:36 rillig Exp $"); typedef List SuffixList; typedef ListNode SuffixListNode; @@ -903,11 +903,11 @@ Suff_DoPaths(void) } flags = SearchPath_ToFlags(includesPath, "-I"); - Var_Set(".INCLUDES", flags, VAR_GLOBAL); + Global_SetExpand(".INCLUDES", flags); free(flags); flags = SearchPath_ToFlags(libsPath, "-L"); - Var_Set(".LIBS", flags, VAR_GLOBAL); + Global_SetExpand(".LIBS", flags); free(flags); SearchPath_Free(includesPath); Index: src/usr.bin/make/targ.c diff -u src/usr.bin/make/targ.c:1.161 src/usr.bin/make/targ.c:1.162 --- src/usr.bin/make/targ.c:1.161 Tue Feb 2 17:56:31 2021 +++ src/usr.bin/make/targ.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: targ.c,v 1.161 2021/02/02 17:56:31 rillig Exp $ */ +/* $NetBSD: targ.c,v 1.162 2021/02/03 08:00:36 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -113,7 +113,7 @@ #include "dir.h" /* "@(#)targ.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: targ.c,v 1.161 2021/02/02 17:56:31 rillig Exp $"); +MAKE_RCSID("$NetBSD: targ.c,v 1.162 2021/02/03 08:00:36 rillig Exp $"); /* * All target nodes that appeared on the left-hand side of one of the @@ -305,7 +305,7 @@ GNode * Targ_NewInternalNode(const char *name) { GNode *gn = GNode_New(name); - Var_Append(".ALLTARGETS", name, VAR_GLOBAL); + Global_AppendExpand(".ALLTARGETS", name); Lst_Append(&allTargets, gn); DEBUG1(TARG, "Adding \"%s\" to all targets.\n", gn->name); if (doing_depend) Index: src/usr.bin/make/util.c diff -u src/usr.bin/make/util.c:1.75 src/usr.bin/make/util.c:1.76 --- src/usr.bin/make/util.c:1.75 Wed Feb 3 06:58:22 2021 +++ src/usr.bin/make/util.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: util.c,v 1.75 2021/02/03 06:58:22 rillig Exp $ */ +/* $NetBSD: util.c,v 1.76 2021/02/03 08:00:36 rillig Exp $ */ /* * Missing stuff from OS's @@ -15,7 +15,7 @@ #include "make.h" -MAKE_RCSID("$NetBSD: util.c,v 1.75 2021/02/03 06:58:22 rillig Exp $"); +MAKE_RCSID("$NetBSD: util.c,v 1.76 2021/02/03 08:00:36 rillig Exp $"); #if !defined(MAKE_NATIVE) && !defined(HAVE_STRERROR) extern int errno, sys_nerr; @@ -45,7 +45,7 @@ findenv(const char *name, int *offset) len = strlen(name); for (i = 0; (q = environ[i]); i++) { p = strchr(q, '='); - if (p == NULL || (size_t)(p - q) != len) + if (p == NULL || p - q != len) continue; if (strncmp(name, q, len) == 0) { *offset = i; Index: src/usr.bin/make/var.c diff -u src/usr.bin/make/var.c:1.790 src/usr.bin/make/var.c:1.791 --- src/usr.bin/make/var.c:1.790 Tue Feb 2 21:26:51 2021 +++ src/usr.bin/make/var.c Wed Feb 3 08:00:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.790 2021/02/02 21:26:51 rillig Exp $ */ +/* $NetBSD: var.c,v 1.791 2021/02/03 08:00:36 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.790 2021/02/02 21:26:51 rillig Exp $"); +MAKE_RCSID("$NetBSD: var.c,v 1.791 2021/02/03 08:00:36 rillig Exp $"); typedef enum VarFlags { VAR_NONE = 0, @@ -748,7 +748,7 @@ ExportVars(const char *varnames, Boolean var_exportedVars = VAR_EXPORTED_SOME; if (isExport && mode == VEM_PLAIN) - Var_Append(MAKE_EXPORTED, varname, VAR_GLOBAL); + Global_AppendExpand(MAKE_EXPORTED, varname); } Words_Free(words); } @@ -868,7 +868,7 @@ UnexportVar(const char *varname, Unexpor char *cp; (void)Var_Subst(expr, VAR_GLOBAL, VARE_WANTRES, &cp); /* TODO: handle errors */ - Var_Set(MAKE_EXPORTED, cp, VAR_GLOBAL); + Global_SetExpand(MAKE_EXPORTED, cp); free(cp); free(expr); } @@ -978,7 +978,7 @@ SetVar(const char *name, const char *val if (!opts.varNoExportEnv) setenv(name, val, 1); - Var_Append(MAKEOVERRIDES, name, VAR_GLOBAL); + Global_AppendExpand(MAKEOVERRIDES, name); } if (name[0] == '.' && strcmp(name, MAKE_SAVE_DOLLARS) == 0) save_dollars = ParseBoolean(val, save_dollars); @@ -1031,6 +1031,12 @@ Var_Set(const char *name, const char *va Var_SetWithFlags(name, val, ctxt, VAR_SET_NONE); } +void +Global_SetExpand(const char *name, const char *value) +{ + Var_Set(name, value, VAR_GLOBAL); +} + /* * The variable of the given name has the given value appended to it in the * given context. @@ -1106,6 +1112,12 @@ Var_Append(const char *name, const char free(name_freeIt); } +void +Global_AppendExpand(const char *name, const char *value) +{ + Var_Append(name, value, VAR_GLOBAL); +} + /* * See if the given variable exists, in the given context or in other * fallback contexts.