rename struct filter_chain_info to filter_chain
[paraslash.git] / filter.c
index 37c1c43..c84b482 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -29,12 +29,12 @@ INIT_FILTER_ERRLISTS;
 
 #define INBUF_SIZE 32 * 1024
 
-static struct filter_chain_info filter_chain_info_struct;
-static struct filter_chain_info *fci = &filter_chain_info_struct;
+static struct filter_chain filter_chain_struct;
+static struct filter_chain *fc = &filter_chain_struct;
 
 struct gengetopt_args_info conf;
 
-__printf_2_3 void para_log(int ll, char* fmt,...)
+__printf_2_3 void para_log(int ll, const char* fmt,...)
 {
        va_list argp;
 
@@ -55,11 +55,11 @@ static int init_active_filter_list(void)
        int i, filter_num;
        struct filter_node *fn;
 
-       INIT_LIST_HEAD(&fci->filters);
+       INIT_LIST_HEAD(&fc->filters);
 
-       fci->inbuf = inbuf;
-       fci->in_loaded = &loaded;
-       fci->eof = &eof;
+       fc->inbuf = inbuf;
+       fc->in_loaded = &loaded;
+       fc->eof = &eof;
 
        for (i = 0; i < conf.filter_given; i++) {
                char *fa = para_strdup(conf.filter_arg[i]);
@@ -69,13 +69,13 @@ static int init_active_filter_list(void)
                        free(fn);
                        return filter_num;
                }
-               fn->fci = fci;
+               fn->fc = fc;
                INIT_LIST_HEAD(&fn->callbacks);
                fn->filter = &filters[filter_num];
                PARA_DEBUG_LOG("adding %s to filter chain\n", fn->filter->name);
-               list_add_tail(&fn->node, &fci->filters);
+               list_add_tail(&fn->node, &fc->filters);
        }
-       if (list_empty(&fci->filters))
+       if (list_empty(&fc->filters))
                return -E_NO_FILTERS;
        return 1;
 }
@@ -84,18 +84,18 @@ static void open_filters(void)
 {
        struct filter_node *fn;
 
-       list_for_each_entry(fn, &fci->filters, node) {
+       list_for_each_entry(fn, &fc->filters, node) {
                fn->filter->open(fn);
                PARA_INFO_LOG("opened %s filter\n", fn->filter->name);
-               fci->outbuf = fn->buf;
-               fci->out_loaded = &fn->loaded;
+               fc->outbuf = fn->buf;
+               fc->out_loaded = &fn->loaded;
        }
 }
 
 static int parse_config(int argc, char *argv[])
 {
        static char *cf; /* config file */
-        struct stat statbuf;
+       struct stat statbuf;
        int i;
 
        if (cmdline_parser(argc, argv, &conf))
@@ -105,7 +105,7 @@ static int parse_config(int argc, char *argv[])
                cf = make_message("%s/.paraslash/filter.conf", home);
                free(home);
        }
-        if (!stat(cf, &statbuf)) {
+       if (!stat(cf, &statbuf)) {
                if (cmdline_parser_configfile(cf, &conf, 0, 0, 0))
                        return -E_FILTER_SYNTAX;
        }
@@ -113,8 +113,10 @@ static int parse_config(int argc, char *argv[])
                return 1;
        printf("available filters: ");
        for (i = 0; filters[i].name; i++)
-               printf("%s%s", i? " " : "", filters[i].name);
-       printf("\nTry para_filter -f<filtername>:-h for help on <filtername>\n");
+               printf("%s%s%s", i? " " : "", filters[i].name,
+                       filters[i].parse_config? "*": "");
+       printf("\nFilters marked with \"*\" have further command line options. Try\n"
+               "\tpara_filter -f '<filtername> -h'\nfor more information.\n");
        exit(EXIT_SUCCESS);
 }
 
@@ -133,10 +135,10 @@ int main(int argc, char *argv[])
        if (ret < 0)
                goto out;
        open_filters();
-       ib = fci->inbuf;
-       ob = fci->outbuf;
-       il = fci->in_loaded;
-       ol = fci->out_loaded;
+       ib = fc->inbuf;
+       ob = fc->outbuf;
+       il = fc->in_loaded;
+       ol = fc->out_loaded;
        PARA_DEBUG_LOG("ib %p in, ob: %p\n", ib, ob);
 again:
        if (*il < INBUF_SIZE && !eof) {
@@ -148,7 +150,7 @@ again:
                        eof = 1;
                *il += ret;
        }
-       ret = filter_io(fci);
+       ret = filter_io(fc);
        if (ret < 0)
                goto out;
        converted = ret;
@@ -169,6 +171,6 @@ again:
 out:
        if (ret < 0)
                PARA_EMERG_LOG("%s\n", PARA_STRERROR(-ret));
-       close_filters(fci);
+       close_filters(fc);
        return ret;
 }