summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlles Marci <marci@balabit.hu>2003-03-03 08:08:37 +0000
committerHarald Welte <laforge@gnumonks.org>2003-03-03 08:08:37 +0000
commit63e9063a660809385fd17edb94da044c7c884e02 (patch)
tree4d7f9291c2ab6db9be14f83886a233361d83c381
parent26100fa186b9df8585a690e7efb3b13863efbe1f (diff)
make iptables-restore print the line number in case of an error
(Illes Marci <marci@balabit.hu>)
-rw-r--r--include/iptables.h2
-rw-r--r--iptables-restore.c4
-rw-r--r--iptables.c8
3 files changed, 12 insertions, 2 deletions
diff --git a/include/iptables.h b/include/iptables.h
index 858bbdc7..205984eb 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 13dcd259..8e193899 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 @@ 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 a0a1dd22..37539953 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);