iStat each file and mmap(3) only as much as is really needed - catpoint - Catpoint simple presenting software. Err bitreich.org 70
hgit clone git://bitreich.org/catpoint/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/catpoint/ URL:git://bitreich.org/catpoint/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/catpoint/ bitreich.org 70
1Log /scm/catpoint/log.gph bitreich.org 70
1Files /scm/catpoint/files.gph bitreich.org 70
1Refs /scm/catpoint/refs.gph bitreich.org 70
1Tags /scm/catpoint/tag bitreich.org 70
1README /scm/catpoint/file/README.md.gph bitreich.org 70
1LICENSE /scm/catpoint/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 7f4f52730310c65d30761a75ded86e2d82863298 /scm/catpoint/commit/7f4f52730310c65d30761a75ded86e2d82863298.gph bitreich.org 70
1parent 78504360bf7518b5f7caadcf34ecb22187bdeeb8 /scm/catpoint/commit/78504360bf7518b5f7caadcf34ecb22187bdeeb8.gph bitreich.org 70
hAuthor: Ekkie <ekkie@envs.net> URL:mailto:ekkie@envs.net bitreich.org 70
iDate: Mon, 4 May 2020 12:51:49 +0200 Err bitreich.org 70
i Err bitreich.org 70
iStat each file and mmap(3) only as much as is really needed Err bitreich.org 70
i Err bitreich.org 70
iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M catpoint.c | 6 +++++- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 5 insertions(+), 1 deletion(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/catpoint.c b/catpoint.c /scm/catpoint/file/catpoint.c.gph bitreich.org 70
i@@ -1,6 +1,7 @@ Err bitreich.org 70
i /* $Id: catpoint.c,v 1.2 2013/03/28 12:00:48 lostd Exp $ */ Err bitreich.org 70
i Err bitreich.org 70
i #include <sys/types.h> Err bitreich.org 70
i+#include <sys/stat.h> Err bitreich.org 70
i #include <sys/mman.h> Err bitreich.org 70
i Err bitreich.org 70
i #include <err.h> Err bitreich.org 70
i@@ -42,6 +43,7 @@ int Err bitreich.org 70
i main(int argc, char *argv[]) Err bitreich.org 70
i { Err bitreich.org 70
i int c, i, fd; Err bitreich.org 70
i+ struct stat statbuf; Err bitreich.org 70
i Err bitreich.org 70
i if (argc == 1) Err bitreich.org 70
i errx(1, "usage: %s file ...", argv[0]); Err bitreich.org 70
i@@ -59,7 +61,9 @@ main(int argc, char *argv[]) Err bitreich.org 70
i fd = open(argv[i], O_RDONLY, 0); Err bitreich.org 70
i if (fd == -1) Err bitreich.org 70
i err(1, "open: %s", argv[i]); Err bitreich.org 70
i- p[i] = mmap(NULL, 0x1000, PROT_READ, MAP_PRIVATE, fd, 0); Err bitreich.org 70
i+ if (fstat(fd, &statbuf) < 0) Err bitreich.org 70
i+ err(1, "fstat: %s", argv[i]); Err bitreich.org 70
i+ p[i] = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0); Err bitreich.org 70
i if (p[i] == MAP_FAILED) Err bitreich.org 70
i err(1, "mmap"); Err bitreich.org 70
i close(fd); Err bitreich.org 70
.
Response:
text/plain