Skip site navigation (1)Skip section navigation (2)
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>