#include "error.h"
#include "version.h"
+/** Array of error strings. */
+DEFINE_PARA_ERRLIST;
+
/** The list of all status items used by para_{server,audiod,gui}. */
const char *status_item_list[] = {STATUS_ITEM_ARRAY};
*/
char *stat_item_values[NUM_STAT_ITEMS] = {NULL};
-/** Initialize the array of errors for para_filter. */
-INIT_FILTER_ERRLISTS;
-
/** The task that reads from stdin. */
static struct stdin_task stdin_task_struct;
/** pointer to the stdin task. */
ggo_print_help(&h, d? GPH_STANDARD_FLAGS_DETAILED : GPH_STANDARD_FLAGS);
print_filter_helps(d? GPH_MODULE_FLAGS_DETAILED : GPH_MODULE_FLAGS);
- exit(0);
+ exit(EXIT_SUCCESS);
}
static int parse_config(void)
{
static struct sched s;
int i, ret;
- struct filter *f;
+ const struct filter *f;
struct btr_node *parent;
struct filter_node **fns;
goto out_cleanup;
}
fn->filter_num = ret;
- f = filters + fn->filter_num;
+ f = filter_get(fn->filter_num);
PARA_DEBUG_LOG("filter #%d: %s\n", i, f->name);
fn->btrn = btr_new_node(&(struct btr_node_description)
EMBRACE(.name = f->name, .parent = parent,
ti.pre_select = f->pre_select;
ti.post_select = f->post_select;
ti.context = fn;
- f->open(fn);
+ if (f->open)
+ f->open(fn);
fn->task = task_register(&ti, &s);
parent = fn->btrn;
}
for (i--; i >= 0; i--) {
struct filter_node *fn = fns[i];
- f = filters + fn->filter_num;
+ f = filter_get(fn->filter_num);
if (f->close)
f->close(fn);
btr_remove_node(&fn->btrn);