Date: Tue, 4 Feb 2014 18:28:58 +0000 (UTC) From: Warner Losh <imp@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r261493 - head/usr.sbin/config Message-ID: <201402041828.s14ISwb0093752@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: imp Date: Tue Feb 4 18:28:58 2014 New Revision: 261493 URL: http://svnweb.freebsd.org/changeset/base/261493 Log: Implement the '!' operator for files* files. It means 'include this only if the specified option is NOT specified.' Bump version because old config won't be able to cope with files* files that have this construct in them. Modified: head/usr.sbin/config/configvers.h head/usr.sbin/config/mkmakefile.c Modified: head/usr.sbin/config/configvers.h ============================================================================== --- head/usr.sbin/config/configvers.h Tue Feb 4 18:24:25 2014 (r261492) +++ head/usr.sbin/config/configvers.h Tue Feb 4 18:28:58 2014 (r261493) @@ -49,5 +49,5 @@ * * $FreeBSD$ */ -#define CONFIGVERS 600012 +#define CONFIGVERS 600013 #define MAJOR_VERS(x) ((x) / 100000) Modified: head/usr.sbin/config/mkmakefile.c ============================================================================== --- head/usr.sbin/config/mkmakefile.c Tue Feb 4 18:24:25 2014 (r261492) +++ head/usr.sbin/config/mkmakefile.c Tue Feb 4 18:28:58 2014 (r261493) @@ -308,7 +308,7 @@ read_file(char *fname) struct opt *op; char *wd, *this, *compilewith, *depends, *clean, *warning; const char *objprefix; - int compile, match, nreqs, std, filetype, + int compile, match, nreqs, std, filetype, not, imp_rule, no_obj, before_depend, nowerror; fp = fopen(fname, "r"); @@ -366,6 +366,7 @@ next: no_obj = 0; before_depend = 0; nowerror = 0; + not = 0; filetype = NORMAL; objprefix = ""; if (eq(wd, "standard")) @@ -376,13 +377,21 @@ next: for (wd = get_word(fp); wd; wd = get_word(fp)) { if (wd == (char *)EOF) return; + if (eq(wd, "!")) { + not = 1; + continue; + } if (eq(wd, "|")) { if (nreqs == 0) errout("%s: syntax error describing %s\n", fname, this); - compile += match; + if (not) + compile += !match; + else + compile += match; match = 1; nreqs = 0; + not = 0; continue; } if (eq(wd, "no-obj")) { @@ -471,9 +480,13 @@ next: if (op->op_value == 0 && opteq(op->op_name, wd)) goto nextparam; match = 0; -nextparam:; +nextparam: + not = 0; } - compile += match; + if (not) + compile += !match; + else + compile += match; if (compile && tp == NULL) { if (std == 0 && nreqs == 0) errout("%s: what is %s optional on?\n",
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402041828.s14ISwb0093752>