PERFORCE change 219863 for review
Brooks Davis
brooks at FreeBSD.org
Thu Nov 29 17:14:27 UTC 2012
http://p4web.freebsd.org/@@219863?ac=10
Change 219863 by brooks at 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);
More information about the p4-projects
mailing list