command_util: Generate properly documented command header files.
[paraslash.git] / filter.c
index 0ffb723e218793a2ac69f4d905b643adb04667c3..b8a7c5c19231d415f0e2488a6275f619901e2d65 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005-2008 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -44,7 +44,8 @@ static struct stdout_task *sot = &stdout_task_struct;
 /** Gengetopt struct that holds the command line args. */
 static struct filter_args_info conf;
 
-INIT_STDERR_LOGGING(conf.loglevel_arg);
+static int loglevel;
+INIT_STDERR_LOGGING(loglevel);
 
 static void open_filters(void)
 {
@@ -55,7 +56,7 @@ static void open_filters(void)
                struct filter *f = filters + fn->filter_num;
                f->open(fn);
                PARA_INFO_LOG("opened %s filter\n", f->name);
-               fc->outbuf = fn->buf;
+               fc->outbufp = &fn->buf;
                fc->out_loaded = &fn->loaded;
        }
 }
@@ -69,7 +70,7 @@ static int init_filter_chain(void)
                return -E_NO_FILTERS;
        fc->num_filters = conf.filter_given;
        fc->filter_nodes = para_malloc(fc->num_filters * sizeof(struct filter_node));
-       fc->inbuf = sit->buf;
+       fc->inbufp = &sit->buf;
        fc->in_loaded = &sit->loaded;
        fc->input_error = &sit->task.error;
        fc->task.error = 0;
@@ -97,7 +98,7 @@ err:
 
 __noreturn static void print_help_and_die(void)
 {
-       int i, d = conf.detailed_help_given;
+       int d = conf.detailed_help_given;
        const char **p = d? filter_args_info_detailed_help
                : filter_args_info_help;
 
@@ -106,20 +107,7 @@ __noreturn static void print_help_and_die(void)
        printf_or_die("%s\n\n", filter_args_info_usage);
        for (; *p; p++)
                printf_or_die("%s\n", *p);
-
-       printf_or_die("\nAvailable filters: \n\t");
-       FOR_EACH_SUPPORTED_FILTER(i)
-               printf_or_die("%s%s", i? " " : "", filters[i].name);
-       printf_or_die("\n\n");
-
-       FOR_EACH_SUPPORTED_FILTER(i) {
-               struct filter *f = filters + i;
-
-               if (!f->help.short_help)
-                       continue;
-               printf_or_die("Options for %s:\n", f->name);
-               ggo_print_help(&f->help, d);
-       }
+       print_filter_helps(d);
        exit(0);
 }
 
@@ -171,17 +159,18 @@ int main(int argc, char *argv[])
        stdin_set_defaults(sit);
        sit->buf = para_malloc(sit->bufsize),
 
-       filter_init(filters);
+       filter_init();
        ret = parse_config(argc, argv);
        if (ret < 0)
                goto out;
+       loglevel = get_loglevel_by_name(conf.loglevel_arg);
        ret = init_filter_chain();
        if (ret < 0)
                goto out;
        sit->output_error = &fc->task.error;
 
        stdout_set_defaults(sot);
-       sot->buf = fc->outbuf;
+       sot->bufp = fc->outbufp;
        sot->loaded = fc->out_loaded;
        sot->input_error = &fc->task.error;