projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move blob table macros from afs.h to blob.c.
[paraslash.git]
/
filter.c
diff --git
a/filter.c
b/filter.c
index d67aeae44a8d226866c6fcf1a46c192ea4a15cc7..e6c75556b91e5ecc0c3ca1f005f5471056bdfb7a 100644
(file)
--- a/
filter.c
+++ b/
filter.c
@@
-1,13
+1,14
@@
/*
/*
- * Copyright (C) 2005-200
8
Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-200
9
Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file filter.c The stand-alone filter program. */
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file filter.c The stand-alone filter program. */
-#include
"para.h"
+#include
<regex.h>
+#include "para.h"
#include "filter.cmdline.h"
#include "list.h"
#include "sched.h"
#include "filter.cmdline.h"
#include "list.h"
#include "sched.h"
@@
-44,7
+45,8
@@
static struct stdout_task *sot = &stdout_task_struct;
/** Gengetopt struct that holds the command line args. */
static struct filter_args_info conf;
/** 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)
{
static void open_filters(void)
{
@@
-55,11
+57,20
@@
static void open_filters(void)
struct filter *f = filters + fn->filter_num;
f->open(fn);
PARA_INFO_LOG("opened %s filter\n", f->name);
struct filter *f = filters + fn->filter_num;
f->open(fn);
PARA_INFO_LOG("opened %s filter\n", f->name);
- fc->outbuf
=
fn->buf;
+ fc->outbuf
p = &
fn->buf;
fc->out_loaded = &fn->loaded;
}
}
fc->out_loaded = &fn->loaded;
}
}
+static void free_filter_confs(void)
+{
+ int i;
+ struct filter_node *fn;
+
+ FOR_EACH_FILTER_NODE(fn, fc, i)
+ free(fn->conf);
+}
+
static int init_filter_chain(void)
{
int i, ret;
static int init_filter_chain(void)
{
int i, ret;
@@
-68,8
+79,8
@@
static int init_filter_chain(void)
if (!conf.filter_given)
return -E_NO_FILTERS;
fc->num_filters = conf.filter_given;
if (!conf.filter_given)
return -E_NO_FILTERS;
fc->num_filters = conf.filter_given;
- fc->filter_nodes = para_
m
alloc(fc->num_filters * sizeof(struct filter_node));
- fc->inbuf
=
sit->buf;
+ fc->filter_nodes = para_
c
alloc(fc->num_filters * sizeof(struct filter_node));
+ fc->inbuf
p = &
sit->buf;
fc->in_loaded = &sit->loaded;
fc->input_error = &sit->task.error;
fc->task.error = 0;
fc->in_loaded = &sit->loaded;
fc->input_error = &sit->task.error;
fc->task.error = 0;
@@
-91,6
+102,7
@@
static int init_filter_chain(void)
open_filters();
return 1;
err:
open_filters();
return 1;
err:
+ free_filter_confs();
free(fc->filter_nodes);
return ret;
}
free(fc->filter_nodes);
return ret;
}
@@
-120,6
+132,7
@@
static int parse_config(int argc, char *argv[])
HANDLE_VERSION_FLAG("filter", conf);
if (conf.help_given || conf.detailed_help_given)
print_help_and_die();
HANDLE_VERSION_FLAG("filter", conf);
if (conf.help_given || conf.detailed_help_given)
print_help_and_die();
+ loglevel = get_loglevel_by_name(conf.loglevel_arg);
if (!cf) {
char *home = para_homedir();
cf = make_message("%s/.paraslash/filter.conf", home);
if (!cf) {
char *home = para_homedir();
cf = make_message("%s/.paraslash/filter.conf", home);
@@
-158,7
+171,7
@@
int main(int argc, char *argv[])
stdin_set_defaults(sit);
sit->buf = para_malloc(sit->bufsize),
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;
ret = parse_config(argc, argv);
if (ret < 0)
goto out;
@@
-168,7
+181,7
@@
int main(int argc, char *argv[])
sit->output_error = &fc->task.error;
stdout_set_defaults(sot);
sit->output_error = &fc->task.error;
stdout_set_defaults(sot);
- sot->buf
= fc->outbuf
;
+ sot->buf
p = fc->outbufp
;
sot->loaded = fc->out_loaded;
sot->input_error = &fc->task.error;
sot->loaded = fc->out_loaded;
sot->input_error = &fc->task.error;
@@
-178,6
+191,7
@@
int main(int argc, char *argv[])
s.default_timeout.tv_sec = 1;
s.default_timeout.tv_usec = 0;
ret = schedule(&s);
s.default_timeout.tv_sec = 1;
s.default_timeout.tv_usec = 0;
ret = schedule(&s);
+ free_filter_confs();
close_filters(fc);
out:
free(sit->buf);
close_filters(fc);
out:
free(sit->buf);