diff --git a/old-tests/filters/pfilter_t.c b/old-tests/filters/pfilter_t.c index d03e4f8a4..8e87f657b 100644 --- a/old-tests/filters/pfilter_t.c +++ b/old-tests/filters/pfilter_t.c @@ -7,6 +7,8 @@ #include "filter-persistent.h" #include "log.h" #include "dbg_malloc.h" +#include "config.h" +#include "filter-regex.h" #include #include @@ -19,12 +21,15 @@ int main(int argc, char **argv) { - struct dev_filter *filter; + struct config_file *cf; + struct config_node *cn; + struct dev_filter *rfilter, *pfilter; struct dev_iter *iter; struct device *dev; - if (argc > 2) { - fprintf(stderr, "Usage : %s \n", argv[0]); + if (argc < 2) { + fprintf(stderr, "Usage : %s \n", + argv[0]); exit(1); } @@ -41,12 +46,54 @@ int main(int argc, char **argv) exit(1); } - if (!(filter = persistent_filter_create("./pfilter.cfg", 1))) { + if (!(cf = create_config_file())) { + fprintf(stderr, "couldn't create config file\n"); + exit(1); + } + + if (!read_config(cf, argv[1])) { + fprintf(stderr, "couldn't read config file\n"); + exit(1); + } + + if (!(cn = find_config_node(cf->root, "/devices/filter", '/'))) { + fprintf(stderr, "couldn't find filter section\n"); + exit(1); + } + + if (!(rfilter = regex_filter_create(cn->v))) { fprintf(stderr, "couldn't build filter\n"); exit(1); } - if (!(iter = dev_iter_create(filter))) { + if (!(pfilter = persistent_filter_create(rfilter, "./pfilter.cfg"))) { + fprintf(stderr, "couldn't build filter\n"); + exit(1); + } + + if (!(iter = dev_iter_create(pfilter))) { + log_err("couldn't create iterator"); + exit(1); + } + + fprintf(stderr, "filling cache\n"); + while ((dev = dev_iter_get(iter))) + ; + dev_iter_destroy(iter); + + fprintf(stderr, "dumping\n"); + if (!persistent_filter_dump(pfilter)) { + fprintf(stderr, "couldn't dump pfilter\n"); + exit(1); + } + + fprintf(stderr, "loading\n"); + if (!persistent_filter_load(pfilter)) { + fprintf(stderr, "couldn't load pfilter\n"); + exit(1); + } + + if (!(iter = dev_iter_create(pfilter))) { log_err("couldn't create iterator"); exit(1); } @@ -55,8 +102,9 @@ int main(int argc, char **argv) printf("%s\n", dev->name); dev_iter_destroy(iter); - filter->destroy(filter); + pfilter->destroy(pfilter); dev_cache_exit(); + destroy_config_file(cf); dump_memory(); fin_log();