about summary refs log tree commit diff
path: root/mpick.c
diff options
context:
space:
mode:
authorDuncaen <mail@duncano.de>2019-06-07 01:24:49 +0200
committerLeah Neukirchen <chneukirchen@gmail.com>2020-05-15 18:41:13 +0200
commit331d0e4680c5f9fd5fcd3e7f0d663cce54979987 (patch)
tree781de81a76ae7e6dd2e9ddd6827f0482b1b22b7b /mpick.c
parentd45d1c4ff5384093798c34a2540de288790332bf (diff)
downloadmblaze-331d0e4680c5f9fd5fcd3e7f0d663cce54979987.tar.gz
mblaze-331d0e4680c5f9fd5fcd3e7f0d663cce54979987.tar.xz
mblaze-331d0e4680c5f9fd5fcd3e7f0d663cce54979987.zip
mpick: use slurp instead of mmaping files
Diffstat (limited to 'mpick.c')
-rw-r--r--mpick.c21
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);
 		}
 	}