Date: Thu, 29 Nov 2012 17:14:27 GMT From: Brooks Davis <brooks@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 219863 for review Message-ID: <201211291714.qATHERLW039247@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@219863?ac=10 Change 219863 by brooks@brooks_zenith on 2012/11/29 17:14:00 Checkpoint a trivial coversion to using the magic_load_buffers() API. Affected files ... .. //depot/projects/ctsrd/cheribsd/src/ctsrd/minifile/minifile.c#3 edit Differences ... ==== //depot/projects/ctsrd/cheribsd/src/ctsrd/minifile/minifile.c#3 (text+ko) ==== @@ -1,6 +1,8 @@ #include <sys/types.h> #include <sys/capability.h> +#include <sys/mman.h> +#include <sys/stat.h> #include <sys/wait.h> #include <err.h> @@ -20,6 +22,8 @@ SB_CHERI } sbtype = SB_NONE; +#define MAGIC_FILE "/usr/share/misc/magic.mgc" + static void usage(void) { @@ -31,12 +35,14 @@ main(int argc, char **argv) { char ch; + void *magicbuf; const char *fname; - int fd, status; + int mfd, fd, status; ssize_t rlen; pid_t pid; const char *type; struct magic_set *magic; + struct stat sb; char buf[4096], *ttype; int pfd[2]; @@ -62,7 +68,26 @@ magic = magic_open(MAGIC_MIME_TYPE); if (magic == NULL) errx(1, "magic_open()"); - if (magic_load(magic, NULL) == -1) { + mfd = open(MAGIC_FILE, O_RDONLY); + if (mfd == -1) { + warn("open(%s)", MAGIC_FILE); + magic_close(magic); + exit(1); + } + if (fstat(mfd, &sb) == -1) { + warn("fstat(%s)", MAGIC_FILE); + magic_close(magic); + exit(1); + } + magicbuf = mmap(NULL, sb.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, + mfd, 0); + if (magicbuf == MAP_FAILED) { + warn("mmap(%s)", MAGIC_FILE); + magic_close(magic); + exit(1); + } + close(mfd); + if (magic_load_buffers(magic, &magicbuf, &sb.st_size, 1) == -1) { warnx("magic_load() %s", magic_error(magic)); magic_close(magic); exit(1);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211291714.qATHERLW039247>