aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorKelly Yancey <kbyanc@FreeBSD.org>2002-12-23 20:08:21 +0000
committerKelly Yancey <kbyanc@FreeBSD.org>2002-12-23 20:08:21 +0000
commitca6e3cb0e42e2e614156bf6d57be193df93deda7 (patch)
treebe88533dbd66cd557c578274f229db7be09dda73 /sbin
parent3c094e54a7a12ec850d0e4eb39d1de8ca8c6db84 (diff)
Notes
Diffstat (limited to 'sbin')
-rw-r--r--sbin/ipfw/ipfw.812
-rw-r--r--sbin/ipfw/ipfw.c35
-rw-r--r--sbin/ipfw/ipfw2.c35
3 files changed, 32 insertions, 50 deletions
diff --git a/sbin/ipfw/ipfw.8 b/sbin/ipfw/ipfw.8
index 7fb82725ede4..1d07fcdb5084 100644
--- a/sbin/ipfw/ipfw.8
+++ b/sbin/ipfw/ipfw.8
@@ -51,10 +51,9 @@
.Op Fl q
.Oo
.Fl p Ar preproc
-.Oo Fl D
-.Ar macro Ns Op = Ns Ar value
+.Oo
+.Ar preproc-flags
.Oc
-.Op Fl U Ar macro
.Oc
.Ar pathname
.Sh DESCRIPTION
@@ -289,11 +288,8 @@ file systems are mounted (yet) by the time
is being run (e.g. when they are mounted over NFS).
Once
.Fl p
-has been specified, optional
-.Fl D
-and
-.Fl U
-specifications can follow and will be passed on to the preprocessor.
+has been specified, any additional arguments as passed on to the preprocessor
+for interpretation.
This allows for flexible configuration files (like conditionalizing
them on the local hostname) and the use of macros to centralize
frequently required arguments like IP addresses.
diff --git a/sbin/ipfw/ipfw.c b/sbin/ipfw/ipfw.c
index c4f00fd756d6..740aba8297eb 100644
--- a/sbin/ipfw/ipfw.c
+++ b/sbin/ipfw/ipfw.c
@@ -2529,28 +2529,8 @@ ipfw_readfile(int ac, char *av[])
pid_t preproc = 0;
int c;
- while ((c = getopt(ac, av, "D:U:p:q")) != -1)
+ while ((c = getopt(ac, av, "p:q")) != -1) {
switch(c) {
- case 'D':
- if (!pflag)
- errx(EX_USAGE, "-D requires -p");
- if (i > MAX_ARGS - 2)
- errx(EX_USAGE,
- "too many -D or -U options");
- args[i++] = "-D";
- args[i++] = optarg;
- break;
-
- case 'U':
- if (!pflag)
- errx(EX_USAGE, "-U requires -p");
- if (i > MAX_ARGS - 2)
- errx(EX_USAGE,
- "too many -D or -U options");
- args[i++] = "-U";
- args[i++] = optarg;
- break;
-
case 'p':
pflag = 1;
cmd = optarg;
@@ -2567,6 +2547,19 @@ ipfw_readfile(int ac, char *av[])
" summary ``ipfw''");
}
+ if (pflag)
+ break;
+ }
+
+ if (pflag) {
+ /* Pass all but the last argument to the preprocessor. */
+ while (optind < ac - 1) {
+ if (i >= MAX_ARGS)
+ errx(EX_USAGE, "too many preprocessor options");
+ args[i++] = av[optind++];
+ }
+ }
+
av += optind;
ac -= optind;
if (ac != 1)
diff --git a/sbin/ipfw/ipfw2.c b/sbin/ipfw/ipfw2.c
index e9ea0e10c954..c038dd373afd 100644
--- a/sbin/ipfw/ipfw2.c
+++ b/sbin/ipfw/ipfw2.c
@@ -3429,28 +3429,8 @@ ipfw_readfile(int ac, char *av[])
pid_t preproc = 0;
int c;
- while ((c = getopt(ac, av, "D:U:p:q")) != -1)
+ while ((c = getopt(ac, av, "p:q")) != -1) {
switch(c) {
- case 'D':
- if (!pflag)
- errx(EX_USAGE, "-D requires -p");
- if (i > MAX_ARGS - 2)
- errx(EX_USAGE,
- "too many -D or -U options");
- args[i++] = "-D";
- args[i++] = optarg;
- break;
-
- case 'U':
- if (!pflag)
- errx(EX_USAGE, "-U requires -p");
- if (i > MAX_ARGS - 2)
- errx(EX_USAGE,
- "too many -D or -U options");
- args[i++] = "-U";
- args[i++] = optarg;
- break;
-
case 'p':
pflag = 1;
cmd = optarg;
@@ -3467,6 +3447,19 @@ ipfw_readfile(int ac, char *av[])
" summary ``ipfw''");
}
+ if (pflag)
+ break;
+ }
+
+ if (pflag) {
+ /* Pass all but the last argument to the preprocessor. */
+ while (optind < ac - 1) {
+ if (i >= MAX_ARGS)
+ errx(EX_USAGE, "too many preprocessor options");
+ args[i++] = av[optind++];
+ }
+ }
+
av += optind;
ac -= optind;
if (ac != 1)