mpick: use slurp instead of mmaping files

pull/174/head
Duncaen 5 years ago committed by Leah Neukirchen
parent d45d1c4ff5
commit 331d0e4680

@ -1542,24 +1542,17 @@ main(int argc, char *argv[])
expr = chain(expr, EXPR_AND, parse_msglist(argv[c])); expr = chain(expr, EXPR_AND, parse_msglist(argv[c]));
} }
struct stat st;
int fd;
size_t len;
for (; c < argc; c++) { for (; c < argc; c++) {
if ((fd = open(argv[c], O_RDONLY)) == -1) char *s;
exit(1); off_t len;
if (fstat(fd, &st) == -1) int r = slurp(argv[c], &s, &len);
exit(1); if (r != 0) {
len = st.st_size; fprintf(stderr, "%s: error opening file '%s': %s\n",
char *s = mmap(0, len+1, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); argv0, argv[c], strerror(r));
if (s == MAP_FAILED) {
perror("mmap");
exit(1); exit(1);
} }
s[len+1] = '\0';
close(fd);
expr = chain(expr, EXPR_AND, parse_buf(argv[c], s)); expr = chain(expr, EXPR_AND, parse_buf(argv[c], s));
munmap(s, len+1); free(s);
} }
} }

Loading…
Cancel
Save