Make filter config parsers return int.
[paraslash.git] / amp_filter.c
index 750205b..2278495 100644 (file)
@@ -50,20 +50,23 @@ static void amp_close(struct filter_node *fn)
        free(fn->buf);
 }
 
-static void *amp_parse_config(int argc, char **argv)
+static int amp_parse_config(int argc, char **argv, void **config)
 {
-       struct amp_filter_args_info *conf = para_calloc(sizeof(*conf));
+       struct amp_filter_args_info *amp_conf = para_calloc(sizeof(*amp_conf));
+       int ret = -E_AMP_SYNTAX;
 
-       if (amp_cmdline_parser(argc, argv, conf))
+       if (amp_cmdline_parser(argc, argv, amp_conf))
                goto err;
-       if (conf->amp_arg < 0)
+       ret = -ERRNO_TO_PARA_ERROR(EINVAL);
+       if (amp_conf->amp_arg < 0)
                goto err;
-       PARA_NOTICE_LOG("amplification: %u (scaling factor: %1.2f)\n", conf->amp_arg,
-               conf->amp_arg / 64.0 + 1.0);
-       return conf;
+       PARA_NOTICE_LOG("amplification: %u (scaling factor: %1.2f)\n",
+               amp_conf->amp_arg, amp_conf->amp_arg / 64.0 + 1.0);
+       *config = amp_conf;
+       return 1;
 err:
-       free(conf);
-       return NULL;
+       free(amp_conf);
+       return ret;
 }
 
 static void amp_open(struct filter_node *fn)