make iptables-restore print the line number in case of an error
(Illes Marci <marci@balabit.hu>)
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 @@
 #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 <getopt.h>
@@ -101,7 +101,6 @@
 {
 	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 @@
 
 	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 @@
 	{ 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 @@
 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);