From 6b1dd80e6fc5de59a708eb87e2ea362bcfbb733a Mon Sep 17 00:00:00 2001 From: laforge Date: Mon, 3 Mar 2003 08:08:37 +0000 Subject: make iptables-restore print the line number in case of an error (Illes Marci ) --- include/iptables.h | 2 ++ iptables-restore.c | 4 ++-- iptables.c | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/iptables.h b/include/iptables.h index 858bbdc..205984e 100644 --- a/include/iptables.h +++ b/include/iptables.h @@ -106,6 +106,8 @@ struct iptables_target #endif }; +extern int line; + /* Your shared library should call one of these. */ extern void register_match(struct iptables_match *me); extern void register_target(struct iptables_target *me); diff --git a/iptables-restore.c b/iptables-restore.c index 13dcd25..8e19389 100644 --- a/iptables-restore.c +++ b/iptables-restore.c @@ -4,7 +4,7 @@ * * This code is distributed under the terms of GNU GPL v2 * - * $Id: iptables-restore.c,v 1.22 2002/08/07 09:07:41 laforge Exp $ + * $Id: iptables-restore.c,v 1.23 2003/03/03 08:05:07 laforge Exp $ */ #include @@ -101,7 +101,6 @@ int main(int argc, char *argv[]) { iptc_handle_t handle; char buffer[10240]; - unsigned int line = 0; int c; char curtable[IPT_TABLE_MAXNAMELEN + 1]; FILE *in; @@ -110,6 +109,7 @@ int main(int argc, char *argv[]) program_name = "iptables-restore"; program_version = IPTABLES_VERSION; + line = 0; #ifdef NO_SHARED_LIBS init_extensions(); diff --git a/iptables.c b/iptables.c index a0a1dd2..3753995 100644 --- a/iptables.c +++ b/iptables.c @@ -141,6 +141,12 @@ static struct option original_opts[] = { { 0 } }; +/* we need this for iptables-restore. iptables-restore.c sets line to the + * current line of the input file, in order to give a more precise error + * message. iptables itself doesn't need this, so it is initialized to the + * magic number of -1 */ +int line = -1; + #ifndef __OPTIMIZE__ struct ipt_entry_target * ipt_get_target(struct ipt_entry *e) @@ -330,6 +336,8 @@ exit_error(enum exittype status, char *msg, ...) void exit_tryhelp(int status) { + if (line =! -1) + fprintf(stderr, "Error occured at line: %d\n", line); fprintf(stderr, "Try `%s -h' or '%s --help' for more information.\n", program_name, program_name ); exit(status); -- cgit v1.2.3