From 40a8343d3ad0cdbc3a7e69c8d970ad75807c29ed Mon Sep 17 00:00:00 2001 From: Jamal Hadi Salim Date: Wed, 11 Feb 2009 13:02:21 +0100 Subject: libxtables: Add exit_error cb to xtables_globals Introduce exit_error() as part of xtables_globals structure. When an application registers its xtables_globals definition and does not specify its exit_error() it gets assigned a basic version Signed-off-by: Jamal Hadi Salim Signed-off-by: Patrick McHardy --- include/xtables.h.in | 17 +++++++++-------- xtables.c | 19 ++++++++++++++++++- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/include/xtables.h.in b/include/xtables.h.in index 1d333942..3a166510 100644 --- a/include/xtables.h.in +++ b/include/xtables.h.in @@ -33,14 +33,6 @@ struct in_addr; -struct xtables_globals -{ - unsigned int option_offset; - char *program_version; - char *program_name; - struct option *opts; -}; - /* Include file for additions: new matches and targets. */ struct xtables_match { @@ -191,6 +183,15 @@ enum xtables_exittype { XTF_ONE_ACTION, }; +struct xtables_globals +{ + unsigned int option_offset; + char *program_version; + char *program_name; + struct option *opts; + void (*exit_error)(enum xtables_exittype status, const char *msg, ...); +}; + extern const char *xtables_program_name; extern const char *xtables_modprobe_program; extern struct xtables_match *xtables_matches; diff --git a/xtables.c b/xtables.c index 95be5f8e..d0fc478a 100644 --- a/xtables.c +++ b/xtables.c @@ -46,7 +46,20 @@ #define PROC_SYS_MODPROBE "/proc/sys/kernel/modprobe" #endif -struct xtables_globals *xt_params; +struct xtables_globals *xt_params = NULL; + +void basic_exit_error(enum xtables_exittype status, const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + fprintf(stderr, "%s v%s: ", xt_params->program_name, xt_params->program_version); + vfprintf(stderr, msg, args); + va_end(args); + fprintf(stderr, "\n"); + exit(status); +} + /** * xtables_set_params - set the global parameters used by xtables * @xtp: input xtables_globals structure @@ -65,6 +78,10 @@ int xtables_set_params(struct xtables_globals *xtp) } xt_params = xtp; + + if (!xt_params->exit_error) + xt_params->exit_error = basic_exit_error; + return 0; } -- cgit v1.2.3