X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=common%2Ftst-trie.c;h=9f69b1e67c9050d86c37484ca63e95e01e95d60f;hb=944e5baada4d41b5aa63a1247485435df9433f36;hp=4202261bb1af5049d3d27aad1bf1dc4771cd75d6;hpb=87ce54fc19930cf850a3926199851ab99c808e92;p=apps%2Fpfixtools.git diff --git a/common/tst-trie.c b/common/tst-trie.c index 4202261..9f69b1e 100644 --- a/common/tst-trie.c +++ b/common/tst-trie.c @@ -33,51 +33,28 @@ * Copyright © 2008 Florent Bruneau */ -#include -#include -#include -#include -#include - #include "common.h" #include "str.h" #include "trie.h" +#include "file.h" static trie_t *create_trie_from_file(const char *file) { trie_t *db; - const char *map, *p, *end; - struct stat st; - int fd; + file_map_t map; + const char *p, *end; char line[BUFSIZ]; - fd = open(file, O_RDONLY, 0000); - if (fd < 0) { - UNIXERR("open"); + if (!file_map_open(&map, file, false)) { return NULL; } - - if (fstat(fd, &st) < 0) { - UNIXERR("fstat"); - close(fd); - return NULL; - } - - p = map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); - if (map == MAP_FAILED) { - UNIXERR("mmap"); - close(fd); - return NULL; - } - close(fd); - - end = map + st.st_size; - while (end > map && end[-1] != '\n') { + p = map.map; + end = map.end; + while (end > p && end[-1] != '\n') { --end; } - if (end != map + st.st_size) { - syslog(LOG_WARNING, "file %s miss a final \\n, ignoring last line", - file); + if (end != map.end) { + warn("file %s miss a final \\n, ignoring last line", file); } db = trie_new(); @@ -102,10 +79,8 @@ static trie_t *create_trie_from_file(const char *file) trie_insert(db, line); p = eol + 1; } - munmap((void*)map, st.st_size); + file_map_close(&map); trie_compile(db, false); - printf("OK\n"); - sleep(10); return db; } @@ -122,7 +97,7 @@ int main(int argc, char *argv[]) trie_insert(trie, "coucou chez vous"); trie_insert(trie, "debout !"); trie_compile(trie, false); - trie_inspect(trie); + trie_inspect(trie, true); #define ASSERT_TRUE(str) \ if (!trie_lookup(trie, str)) { \ @@ -140,6 +115,7 @@ int main(int argc, char *argv[]) ASSERT_FALSE("abcde"); ASSERT_FALSE("coucou chez vous tous"); ASSERT_TRUE("abcde123456789"); + ASSERT_TRUE("abcde123456789"); ASSERT_TRUE("abcde123654789"); ASSERT_TRUE("abcdefghi"); ASSERT_TRUE("coucou"); @@ -152,7 +128,7 @@ int main(int argc, char *argv[]) */ if (argc > 1) { trie = create_trie_from_file(argv[1]); - trie_inspect(trie); + trie_inspect(trie, false); trie_delete(&trie); } return 0;