Hi!
There is one problem with ``preprocessor support for ipfw''.
relay# ls -l 100
ls: 100: No such file or directory
relay# ipfw list 100
00100 allow ip from any to any via lo0
relay# touch 100
relay# ipfw list 100
ipfw: error: extraneous filename arguments
[...]
Please review the attached patch.
Thanks,
--
Ruslan Ermilov Sysadmin and DBA of the
[EMAIL PROTECTED] United Commercial Bank,
[EMAIL PROTECTED] FreeBSD committer,
+380.652.247.647 Simferopol, Ukraine
http://www.FreeBSD.org The Power To Serve
http://www.oracle.com Enabling The Information Age
Index: ipfw.8
===================================================================
RCS file: /usr/FreeBSD-CVS/src/sbin/ipfw/ipfw.8,v
retrieving revision 1.54
diff -c -r1.54 ipfw.8
*** ipfw.8 1999/06/19 18:43:18 1.54
--- ipfw.8 1999/07/03 17:35:18
***************
*** 15,21 ****
.Op Fl D Ar macro Ns Op Ns =value
.Op Fl U Ar macro
.Oc
! .Ar file
.Nm ipfw
.Oo
.Fl f
--- 15,21 ----
.Op Fl D Ar macro Ns Op Ns =value
.Op Fl U Ar macro
.Oc
! .Fl F Ar file
.Nm ipfw
.Oo
.Fl f
Index: ipfw.c
===================================================================
RCS file: /usr/FreeBSD-CVS/src/sbin/ipfw/ipfw.c,v
retrieving revision 1.71
diff -c -r1.71 ipfw.c
*** ipfw.c 1999/06/19 18:43:15 1.71
--- ipfw.c 1999/07/03 17:35:18
***************
*** 58,65 ****
#include <netinet/tcp.h>
#include <arpa/inet.h>
- int lineno = -1;
-
int s; /* main RAW socket */
int do_resolv=0; /* Would try to resolve all */
int do_acct=0; /* Show packet/byte count */
--- 58,63 ----
***************
*** 1549,1556 ****
#define WHITESP " \t\f\v\n\r"
char buf[BUFSIZ];
char *a, *p, *args[MAX_ARGS], *cmd = NULL;
! char linename[10];
! int i, c, qflag, pflag, status;
FILE *f = NULL;
pid_t preproc = 0;
--- 1547,1556 ----
#define WHITESP " \t\f\v\n\r"
char buf[BUFSIZ];
char *a, *p, *args[MAX_ARGS], *cmd = NULL;
! char linename[11];
! int i = 0, c, qflag = 0, pflag = 0, status;
! int lineno = 0;
! char *file = NULL;
FILE *f = NULL;
pid_t preproc = 0;
***************
*** 1558,1613 ****
if ( s < 0 )
err(EX_UNAVAILABLE, "socket");
! setbuf(stdout,0);
! if (ac > 1 && access(av[ac - 1], R_OK) == 0) {
! qflag = pflag = i = 0;
! lineno = 0;
!
! while ((c = getopt(ac, av, "D:U: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;
! args[0] = cmd;
! i = 1;
! break;
! case 'q':
! qflag = 1;
! break;
! default:
! show_usage(NULL);
! }
! av += optind;
! ac -= optind;
! if (ac != 1)
show_usage("extraneous filename arguments");
! if ((f = fopen(av[0], "r")) == NULL)
! err(EX_UNAVAILABLE, "fopen: %s", av[0]);
if (pflag) {
/* pipe through preprocessor (cpp or m4) */
--- 1558,1614 ----
if ( s < 0 )
err(EX_UNAVAILABLE, "socket");
! setbuf(stdout, NULL);
! while ((c = getopt(ac, av, "F:D:U:p:q")) != -1)
! switch(c) {
! case 'F':
! if (file)
! errx(EX_USAGE, "only one -F allowed");
! file = optarg;
! break;
! 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;
! args[0] = cmd;
! i = 1;
! break;
! case 'q':
! qflag = 1;
! break;
!
! default:
! show_usage(NULL);
! }
! if (file) {
! if (ac - optind)
show_usage("extraneous filename arguments");
! if ((f = fopen(file, "r")) == NULL)
! err(EX_UNAVAILABLE, "fopen: %s", file);
if (pflag) {
/* pipe through preprocessor (cpp or m4) */
***************
*** 1648,1655 ****
}
while (fgets(buf, BUFSIZ, f)) {
! lineno++;
! sprintf(linename, "Line %d", lineno);
args[0] = linename;
if (*buf == '#')
--- 1649,1655 ----
}
while (fgets(buf, BUFSIZ, f)) {
! snprintf(linename, sizeof(linename), "Line %d", ++lineno);
args[0] = linename;
if (*buf == '#')