summaryrefslogtreecommitdiffstats
path: root/usr.bin/make/main.c
diff options
context:
space:
mode:
authorharti <harti@FreeBSD.org>2005-01-26 18:19:39 +0000
committerharti <harti@FreeBSD.org>2005-01-26 18:19:39 +0000
commit17159f0f8beae09feea301a55dff93895b79399b (patch)
treec321afb0d87aa82ef737eee5faca7f2adc43af9e /usr.bin/make/main.c
parent2898737c63ae261843285bb83cce473fc8bf7948 (diff)
downloadFreeBSD-src-17159f0f8beae09feea301a55dff93895b79399b.zip
FreeBSD-src-17159f0f8beae09feea301a55dff93895b79399b.tar.gz
Fix quoting of the MAKEFLAGS environment variable by only quoting spaces
and tabs. This is still not correct for command line variable values ending in a backslash because this would require a larger effort. Document this limitation in the BUGS section of the man page. The quoting is mostly compatible with that of gmake and smake. Tested by: Max Okumoto and Joerg Sonnenberger from DragonFly BSD Reviewed by: ru (man page, partly)
Diffstat (limited to 'usr.bin/make/main.c')
-rw-r--r--usr.bin/make/main.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/usr.bin/make/main.c b/usr.bin/make/main.c
index 2c3ba65..e29df4a 100644
--- a/usr.bin/make/main.c
+++ b/usr.bin/make/main.c
@@ -144,14 +144,21 @@ static char *objdir; /* where we chdir'ed to */
static void
MFLAGS_append(char *flag, char *arg)
{
+ char *str;
Var_Append(MAKEFLAGS, flag, VAR_GLOBAL);
- if (arg != NULL)
- Var_Append(MAKEFLAGS, arg, VAR_GLOBAL);
+ if (arg != NULL) {
+ str = MAKEFLAGS_quote(arg);
+ Var_Append(MAKEFLAGS, str, VAR_GLOBAL);
+ free(str);
+ }
Var_Append("MFLAGS", flag, VAR_GLOBAL);
- if (arg != NULL)
- Var_Append("MFLAGS", arg, VAR_GLOBAL);
+ if (arg != NULL) {
+ str = MAKEFLAGS_quote(arg);
+ Var_Append("MFLAGS", str, VAR_GLOBAL);
+ free(str);
+ }
}
/*-
@@ -340,7 +347,7 @@ rearg: while((c = getopt(argc, argv, OPTFLAGS)) != -1) {
*/
for (argv += optind, argc -= optind; *argv; ++argv, --argc)
if (Parse_IsVar(*argv)) {
- char *ptr = Var_Quote(*argv);
+ char *ptr = MAKEFLAGS_quote(*argv);
Var_Append(MAKEFLAGS, ptr, VAR_GLOBAL);
free(ptr);
@@ -376,7 +383,7 @@ rearg: while((c = getopt(argc, argv, OPTFLAGS)) != -1) {
* Only those that come from the various arguments.
*/
void
-Main_ParseArgLine(char *line)
+Main_ParseArgLine(char *line, int mflags)
{
char **argv; /* Manufactured argument vector */
int argc; /* Number of arguments in argv */
@@ -388,7 +395,11 @@ Main_ParseArgLine(char *line)
if (!*line)
return;
- argv = brk_string(line, &argc, TRUE);
+ if (mflags)
+ argv = MAKEFLAGS_break(line, &argc);
+ else
+ argv = brk_string(line, &argc, TRUE);
+
MainParseArgs(argc, argv);
}
@@ -622,7 +633,7 @@ main(int argc, char **argv)
* (Note this is *not* MAKEFLAGS since /bin/make uses that and it's
* in a different format).
*/
- Main_ParseArgLine(getenv("MAKEFLAGS"));
+ Main_ParseArgLine(getenv("MAKEFLAGS"), 1);
MainParseArgs(argc, argv);
OpenPOWER on IntegriCloud