diff options
author | Duncaen <mail@duncano.de> | 2019-06-07 01:24:49 +0200 |
---|---|---|
committer | Leah Neukirchen <chneukirchen@gmail.com> | 2020-05-15 18:41:13 +0200 |
commit | 331d0e4680c5f9fd5fcd3e7f0d663cce54979987 (patch) | |
tree | 781de81a76ae7e6dd2e9ddd6827f0482b1b22b7b | |
parent | d45d1c4ff5384093798c34a2540de288790332bf (diff) | |
download | mblaze-331d0e4680c5f9fd5fcd3e7f0d663cce54979987.tar.gz mblaze-331d0e4680c5f9fd5fcd3e7f0d663cce54979987.tar.xz mblaze-331d0e4680c5f9fd5fcd3e7f0d663cce54979987.zip |
mpick: use slurp instead of mmaping files
-rw-r--r-- | mpick.c | 21 |
1 files changed, 7 insertions, 14 deletions
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); } } |