diff options
author | Joe Thornber <thornber@redhat.com> | 2001-10-19 18:20:37 +0000 |
---|---|---|
committer | Joe Thornber <thornber@redhat.com> | 2001-10-19 18:20:37 +0000 |
commit | 291ec3b6c0cc22e368534075310c1d8c868ed826 (patch) | |
tree | 8e3ce7d1a8ae1f41adf05fb726306d3044054114 /old-tests | |
parent | d1b28647ed4d17d22155a9da061a551572c39d2b (diff) | |
download | lvm2-291ec3b6c0cc22e368534075310c1d8c868ed826.tar.gz lvm2-291ec3b6c0cc22e368534075310c1d8c868ed826.tar.xz lvm2-291ec3b6c0cc22e368534075310c1d8c868ed826.zip |
o Filter for the dev cache that takes values from config file:
devices {
# first match is final, eg. /dev/ide/cdrom
# get's rejected due to the first pattern
filter=["r/cdrom/", # don't touch the music !
"a/hd[a-d][0-9]+/",
"a/ide/",
"a/sd/",
"a/md/",
"a|loop/[0-9]+|", # accept devfs style loop back
"r/loop/", # and reject old style
"a/dasd/",
"a/dac960/",
"a/nbd/",
"a/ida/",
"a/cciss/",
"a/ubd/",
"r/.*/"] # reject all others
}
Alasdair this is ready to roll into the tools now.
Diffstat (limited to 'old-tests')
-rw-r--r-- | old-tests/filters/Makefile.in | 21 | ||||
-rw-r--r-- | old-tests/filters/rfilter_t.c | 84 | ||||
-rw-r--r-- | old-tests/filters/sample.cfg | 21 | ||||
-rw-r--r-- | old-tests/regex/matcher_t.c | 2 |
4 files changed, 127 insertions, 1 deletions
diff --git a/old-tests/filters/Makefile.in b/old-tests/filters/Makefile.in new file mode 100644 index 00000000..35fee47d --- /dev/null +++ b/old-tests/filters/Makefile.in @@ -0,0 +1,21 @@ +# +# Copyright (C) 2001 Sistina Software (UK) Limited +# +# This file is released under the GPL. +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +SOURCES=\ + rfilter_t.c + +TARGETS=\ + rfilter_t + +include ../../make.tmpl + +rfilter_t: rfilter_t.o $(top_srcdir)/lib/liblvm.a + $(CC) -o rfilter_t rfilter_t.o -L$(top_srcdir)/lib -llvm + diff --git a/old-tests/filters/rfilter_t.c b/old-tests/filters/rfilter_t.c new file mode 100644 index 00000000..2a917a5c --- /dev/null +++ b/old-tests/filters/rfilter_t.c @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2001 Sistina Software (UK) Limited. + * + * This file is released under the GPL. + */ + +#include "filter-regex.h" +#include "config.h" +#include "log.h" +#include "dbg_malloc.h" + +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/mman.h> + +int main(int argc, char **argv) +{ + struct config_file *cf; + struct config_node *cn; + struct dev_filter *filter; + struct dev_iter *iter; + struct device *dev; + + if (argc < 2) { + fprintf(stderr, "Usage : %s <config_file>\n", argv[0]); + exit(1); + } + + init_log(stderr); + init_debug(_LOG_DEBUG); + + 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 (!dev_cache_init()) { + fprintf(stderr, "couldn't initialise dev_cache_init failed\n"); + exit(1); + } + + if (!dev_cache_add_dir("/dev")) { + fprintf(stderr, "couldn't add '/dev' to dev_cache\n"); + exit(1); + } + + if (!(filter = regex_filter_create(cn->v))) { + fprintf(stderr, "couldn't build filter\n"); + exit(1); + } + + if (!(iter = dev_iter_create(filter))) { + log_err("couldn't create iterator"); + exit(1); + } + + while ((dev = dev_iter_get(iter))) + printf("%s\n", dev->name); + + dev_iter_destroy(iter); + filter->destroy(filter); + dev_cache_exit(); + destroy_config_file(cf); + + dump_memory(); + fin_log(); + return 0; +} + diff --git a/old-tests/filters/sample.cfg b/old-tests/filters/sample.cfg new file mode 100644 index 00000000..02f98dea --- /dev/null +++ b/old-tests/filters/sample.cfg @@ -0,0 +1,21 @@ +devices { + + # first match is final, eg. /dev/ide/cdrom + # get's rejected due to the first pattern + + filter=["r/cdrom/", # don't touch the music ! + "a/hd[a-d][0-9]+/", + "a/ide/", + "a/sd/", + "a/md/", + "a|loop/[0-9]+|", # accept devfs style loop back + "r/loop/", # and reject old style + "a/dasd/", + "a/dac960/", + "a/nbd/", + "a/ida/", + "a/cciss/", + "a/ubd/", + "r/.*/"] # reject all others + +} diff --git a/old-tests/regex/matcher_t.c b/old-tests/regex/matcher_t.c index 00deea94..6b8b24d8 100644 --- a/old-tests/regex/matcher_t.c +++ b/old-tests/regex/matcher_t.c @@ -87,7 +87,7 @@ static void _scan_input(struct matcher *m, char **regex) if ((ptr = strchr(buffer, '\n'))) *ptr = '\0'; - r = matcher_run(m, buffer, buffer + strlen(buffer)); + r = matcher_run(m, buffer); if (r >= 0) printf("%s : %s\n", buffer, regex[r]); |