From 331d0e4680c5f9fd5fcd3e7f0d663cce54979987 Mon Sep 17 00:00:00 2001 From: Duncaen Date: Fri, 7 Jun 2019 01:24:49 +0200 Subject: mpick: use slurp instead of mmaping files --- mpick.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'mpick.c') diff --git a/mpick.c b/mpick.c index 1e3d0de..adf6b09 100644 --- a/mpick.c +++ b/mpick.c @@ -1542,24 +1542,17 @@ main(int argc, char *argv[]) expr = chain(expr, EXPR_AND, parse_msglist(argv[c])); } - struct stat st; - int fd; - size_t len; for (; c < argc; c++) { - if ((fd = open(argv[c], O_RDONLY)) == -1) - exit(1); - if (fstat(fd, &st) == -1) - exit(1); - len = st.st_size; - char *s = mmap(0, len+1, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); - if (s == MAP_FAILED) { - perror("mmap"); + char *s; + off_t len; + int r = slurp(argv[c], &s, &len); + if (r != 0) { + fprintf(stderr, "%s: error opening file '%s': %s\n", + argv0, argv[c], strerror(r)); exit(1); } - s[len+1] = '\0'; - close(fd); expr = chain(expr, EXPR_AND, parse_buf(argv[c], s)); - munmap(s, len+1); + free(s); } } -- cgit 1.4.1