summaryrefslogtreecommitdiffstats
path: root/usr.bin/make/job.h
diff options
context:
space:
mode:
authorharti <harti@FreeBSD.org>2004-11-30 15:35:51 +0000
committerharti <harti@FreeBSD.org>2004-11-30 15:35:51 +0000
commit6a1de54fc3ff3e21e3c3b49aa1d59060f5ce2361 (patch)
tree59ddd1be197eb63917845c0e26ea757eb90892cc /usr.bin/make/job.h
parentc87a620e46b80034db4eb7d25d17ecdf0da14893 (diff)
downloadFreeBSD-src-6a1de54fc3ff3e21e3c3b49aa1d59060f5ce2361.zip
FreeBSD-src-6a1de54fc3ff3e21e3c3b49aa1d59060f5ce2361.tar.gz
Constify the array of predefined shells. It turns out that we need two
versions of the structure definition for this: one with const char pointers, because otherwise gcc won't let us initialize the fields with constant strings, and one without the const, because we need to work with the structure.
Diffstat (limited to 'usr.bin/make/job.h')
-rw-r--r--usr.bin/make/job.h51
1 files changed, 27 insertions, 24 deletions
diff --git a/usr.bin/make/job.h b/usr.bin/make/job.h
index 25aa511..fbcd56e 100644
--- a/usr.bin/make/job.h
+++ b/usr.bin/make/job.h
@@ -175,30 +175,33 @@ typedef struct Job {
* strings is empty when hasErrCtl is FALSE, the command will be executed
* anyway as is and if it causes an error, so be it.
*/
-typedef struct Shell {
- char *name; /* the name of the shell. For Bourne and C
- * shells, this is used only to find the
- * shell description when used as the single
- * source of a .SHELL target. For user-defined
- * shells, this is the full path of the shell.
- */
- Boolean hasEchoCtl; /* True if both echoOff and echoOn defined */
- char *echoOff; /* command to turn off echo */
- char *echoOn; /* command to turn it back on again */
- char *noPrint; /* command to skip when printing output from
- * shell. This is usually the command which
- * was executed to turn off echoing */
- int noPLen; /* length of noPrint command */
- Boolean hasErrCtl; /* set if can control error checking for
- * individual commands */
- char *errCheck; /* string to turn error checking on */
- char *ignErr; /* string to turn off error checking */
- /*
- * command-line flags
- */
- char *echo; /* echo commands */
- char *exit; /* exit on error */
-} Shell;
+#define DEF_SHELL_STRUCT(TAG, CONST) \
+struct TAG { \
+ CONST char *name; /* the name of the shell. For Bourne and C \
+ * shells, this is used only to find the \
+ * shell description when used as the single \
+ * source of a .SHELL target. For user-defined \
+ * shells, this is the full path of the shell. \
+ */ \
+ Boolean hasEchoCtl; /* True if both echoOff and echoOn defined */ \
+ CONST char *echoOff; /* command to turn off echo */ \
+ CONST char *echoOn; /* command to turn it back on again */ \
+ CONST char *noPrint; /* command to skip when printing output from \
+ * shell. This is usually the command which \
+ * was executed to turn off echoing */ \
+ int noPLen; /* length of noPrint command */ \
+ Boolean hasErrCtl; /* set if can control error checking for \
+ * individual commands */ \
+ CONST char *errCheck; /* string to turn error checking on */ \
+ CONST char *ignErr; /* string to turn off error checking */ \
+ /* \
+ * command-line flags \
+ */ \
+ CONST char *echo; /* echo commands */ \
+ CONST char *exit; /* exit on error */ \
+}
+
+typedef DEF_SHELL_STRUCT(Shell,) Shell;
extern char *shellPath;
extern char *shellName;
OpenPOWER on IntegriCloud