Module Name:    src
Committed By:   rillig
Date:           Sun Dec  6 14:20:20 UTC 2020

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

Log Message:
make(1): move type definitions in var.c to the top


To generate a diff of this commit:
cvs rdiff -u -r1.709 -r1.710 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.709 src/usr.bin/make/var.c:1.710
--- src/usr.bin/make/var.c:1.709	Sun Dec  6 13:51:06 2020
+++ src/usr.bin/make/var.c	Sun Dec  6 14:20:20 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.709 2020/12/06 13:51:06 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.710 2020/12/06 14:20:20 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -130,57 +130,8 @@
 #include "metachar.h"
 
 /*	"@(#)var.c	8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.709 2020/12/06 13:51:06 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.710 2020/12/06 14:20:20 rillig Exp $");
 
-ENUM_FLAGS_RTTI_3(VarEvalFlags,
-		  VARE_UNDEFERR, VARE_WANTRES, VARE_KEEP_DOLLAR);
-
-/*
- * This lets us tell if we have replaced the original environ
- * (which we cannot free).
- */
-char **savedEnv = NULL;
-
-/* Special return value for Var_Parse, indicating a parse error.  It may be
- * caused by an undefined variable, a syntax error in a modifier or
- * something entirely different. */
-char var_Error[] = "";
-
-/* Special return value for Var_Parse, indicating an undefined variable in
- * a case where VARE_UNDEFERR is not set.  This undefined variable is
- * typically a dynamic variable such as ${.TARGET}, whose expansion needs to
- * be deferred until it is defined in an actual target. */
-static char varUndefined[] = "";
-
-/*
- * Traditionally this make consumed $$ during := like any other expansion.
- * Other make's do not, and this make follows straight since 2016-01-09.
- *
- * This knob allows controlling the behavior.
- * FALSE to consume $$ during := assignment.
- * TRUE to preserve $$ during := assignment.
- */
-#define MAKE_SAVE_DOLLARS ".MAKE.SAVE_DOLLARS"
-static Boolean save_dollars = TRUE;
-
-/*
- * Internally, variables are contained in four different contexts.
- *	1) the environment. They cannot be changed. If an environment
- *	   variable is appended to, the result is placed in the global
- *	   context.
- *	2) the global context. Variables set in the makefiles are located
- *	   here.
- *	3) the command-line context. All variables set on the command line
- *	   are placed in this context.
- *	4) the local context. Each target has associated with it a context
- *	   list. On this list are located the structures describing such
- *	   local variables as $(@) and $(*)
- * The four contexts are searched in the reverse order from which they are
- * listed (but see opts.checkEnvFirst).
- */
-GNode          *VAR_INTERNAL;	/* variables from make itself */
-GNode          *VAR_GLOBAL;	/* variables from the makefile */
-GNode          *VAR_CMDLINE;	/* variables defined on the command-line */
 
 typedef enum VarFlags {
 	VAR_NONE	= 0,
@@ -223,10 +174,6 @@ typedef enum VarFlags {
 	VAR_READONLY = 0x80
 } VarFlags;
 
-ENUM_FLAGS_RTTI_6(VarFlags,
-		  VAR_IN_USE, VAR_FROM_ENV,
-		  VAR_EXPORTED, VAR_REEXPORT, VAR_FROM_CMD, VAR_READONLY);
-
 /* Variables are defined using one of the VAR=value assignments.  Their
  * value can be queried by expressions such as $V, ${VAR}, or with modifiers
  * such as ${VAR:S,from,to,g:Q}.
@@ -260,17 +207,6 @@ typedef struct Var {
 	VarFlags flags;
 } Var;
 
-/*
- * Exporting vars is expensive so skip it if we can
- */
-typedef enum VarExportedMode {
-	VAR_EXPORTED_NONE,
-	VAR_EXPORTED_SOME,
-	VAR_EXPORTED_ALL
-} VarExportedMode;
-
-static VarExportedMode var_exportedVars = VAR_EXPORTED_NONE;
-
 typedef enum VarExportFlags {
 	VAR_EXPORT_NORMAL = 0,
 	/*
@@ -284,6 +220,15 @@ typedef enum VarExportFlags {
 	VAR_EXPORT_LITERAL = 0x02
 } VarExportFlags;
 
+/*
+ * Exporting vars is expensive so skip it if we can
+ */
+typedef enum VarExportedMode {
+	VAR_EXPORTED_NONE,
+	VAR_EXPORTED_SOME,
+	VAR_EXPORTED_ALL
+} VarExportedMode;
+
 /* Flags for pattern matching in the :S and :C modifiers */
 typedef enum VarPatternFlags {
 	VARP_NONE		= 0,
@@ -297,6 +242,71 @@ typedef enum VarPatternFlags {
 	VARP_ANCHOR_END		= 1 << 3
 } VarPatternFlags;
 
+/* SepBuf is a string being built from words, interleaved with separators. */
+typedef struct SepBuf {
+	Buffer buf;
+	Boolean needSep;
+	/* Usually ' ', but see the ':ts' modifier. */
+	char sep;
+} SepBuf;
+
+
+ENUM_FLAGS_RTTI_3(VarEvalFlags,
+		  VARE_UNDEFERR, VARE_WANTRES, VARE_KEEP_DOLLAR);
+
+/*
+ * This lets us tell if we have replaced the original environ
+ * (which we cannot free).
+ */
+char **savedEnv = NULL;
+
+/* Special return value for Var_Parse, indicating a parse error.  It may be
+ * caused by an undefined variable, a syntax error in a modifier or
+ * something entirely different. */
+char var_Error[] = "";
+
+/* Special return value for Var_Parse, indicating an undefined variable in
+ * a case where VARE_UNDEFERR is not set.  This undefined variable is
+ * typically a dynamic variable such as ${.TARGET}, whose expansion needs to
+ * be deferred until it is defined in an actual target. */
+static char varUndefined[] = "";
+
+/*
+ * Traditionally this make consumed $$ during := like any other expansion.
+ * Other make's do not, and this make follows straight since 2016-01-09.
+ *
+ * This knob allows controlling the behavior.
+ * FALSE to consume $$ during := assignment.
+ * TRUE to preserve $$ during := assignment.
+ */
+#define MAKE_SAVE_DOLLARS ".MAKE.SAVE_DOLLARS"
+static Boolean save_dollars = TRUE;
+
+/*
+ * Internally, variables are contained in four different contexts.
+ *	1) the environment. They cannot be changed. If an environment
+ *	   variable is appended to, the result is placed in the global
+ *	   context.
+ *	2) the global context. Variables set in the makefiles are located
+ *	   here.
+ *	3) the command-line context. All variables set on the command line
+ *	   are placed in this context.
+ *	4) the local context. Each target has associated with it a context
+ *	   list. On this list are located the structures describing such
+ *	   local variables as $(@) and $(*)
+ * The four contexts are searched in the reverse order from which they are
+ * listed (but see opts.checkEnvFirst).
+ */
+GNode          *VAR_INTERNAL;	/* variables from make itself */
+GNode          *VAR_GLOBAL;	/* variables from the makefile */
+GNode          *VAR_CMDLINE;	/* variables defined on the command-line */
+
+ENUM_FLAGS_RTTI_6(VarFlags,
+		  VAR_IN_USE, VAR_FROM_ENV,
+		  VAR_EXPORTED, VAR_REEXPORT, VAR_FROM_CMD, VAR_READONLY);
+
+static VarExportedMode var_exportedVars = VAR_EXPORTED_NONE;
+
 static Var *
 VarNew(const char *name, void *name_freeIt, const char *value, VarFlags flags)
 {
@@ -1068,14 +1078,6 @@ Var_ValueDirect(const char *name, GNode 
 }
 
 
-/* SepBuf is a string being built from words, interleaved with separators. */
-typedef struct SepBuf {
-	Buffer buf;
-	Boolean needSep;
-	/* Usually ' ', but see the ':ts' modifier. */
-	char sep;
-} SepBuf;
-
 static void
 SepBuf_Init(SepBuf *buf, char sep)
 {

Reply via email to