Module Name:    src
Committed By:   christos
Date:           Sun Nov 26 03:06:24 UTC 2017

Modified Files:
        src/sbin/mount_qemufwcfg: Makefile fwcfg.c virtdir.c virtdir.h
Removed Files:
        src/sbin/mount_qemufwcfg: defs.h

Log Message:
cleanup, knf, remove debugging printf, homebrew alloc macros, types.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sbin/mount_qemufwcfg/Makefile \
    src/sbin/mount_qemufwcfg/fwcfg.c src/sbin/mount_qemufwcfg/virtdir.c \
    src/sbin/mount_qemufwcfg/virtdir.h
cvs rdiff -u -r1.1 -r0 src/sbin/mount_qemufwcfg/defs.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/mount_qemufwcfg/Makefile
diff -u src/sbin/mount_qemufwcfg/Makefile:1.1 src/sbin/mount_qemufwcfg/Makefile:1.2
--- src/sbin/mount_qemufwcfg/Makefile:1.1	Sat Nov 25 18:23:39 2017
+++ src/sbin/mount_qemufwcfg/Makefile	Sat Nov 25 22:06:24 2017
@@ -1,11 +1,12 @@
-# $NetBSD: Makefile,v 1.1 2017/11/25 23:23:39 jmcneill Exp $
+# $NetBSD: Makefile,v 1.2 2017/11/26 03:06:24 christos Exp $
+
+WARNS=	6
 
 PROG=	mount_qemufwcfg
 SRCS=	fwcfg.c virtdir.c
-DPADD+=	${LIBREFUSE}
-LDADD=	-lrefuse
+DPADD+=	${LIBREFUSE} ${LIBUTIL}
+LDADD=	-lrefuse -lutil
 NOMAN=	# defined
-WARNS=	3
 
 CPPFLAGS+=	-D_KERNTYPES
 
Index: src/sbin/mount_qemufwcfg/fwcfg.c
diff -u src/sbin/mount_qemufwcfg/fwcfg.c:1.1 src/sbin/mount_qemufwcfg/fwcfg.c:1.2
--- src/sbin/mount_qemufwcfg/fwcfg.c:1.1	Sat Nov 25 18:23:39 2017
+++ src/sbin/mount_qemufwcfg/fwcfg.c	Sat Nov 25 22:06:24 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: fwcfg.c,v 1.1 2017/11/25 23:23:39 jmcneill Exp $ */
+/* $NetBSD: fwcfg.c,v 1.2 2017/11/26 03:06:24 christos Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill <[email protected]>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: fwcfg.c,v 1.1 2017/11/25 23:23:39 jmcneill Exp $");
+__RCSID("$NetBSD: fwcfg.c,v 1.2 2017/11/26 03:06:24 christos Exp $");
 
 #include <sys/ioctl.h>
 
@@ -93,7 +93,7 @@ fwcfg_getattr(const char *path, struct s
 	switch (ep->type) {
 	case 'f':
 		memcpy(st, &fwcfg_virtdir.file, sizeof(*st));
-		st->st_size = ep->tgtlen;
+		st->st_size = (off_t)ep->tgtlen;
 		st->st_mode = S_IFREG | fwcfg_file_mask;
 		break;
 	case 'd':
@@ -101,7 +101,7 @@ fwcfg_getattr(const char *path, struct s
 		st->st_mode = S_IFDIR | fwcfg_dir_mask;
 		break;
 	}
-	st->st_ino = virtdir_offset(&fwcfg_virtdir, ep) + 10;
+	st->st_ino = (ino_t)virtdir_offset(&fwcfg_virtdir, ep) + 10;
 
 	return 0;
 }
@@ -152,15 +152,15 @@ fwcfg_read(const char *path, char *buf, 
 
 	/* Seek to correct offset */
 	while (offset > 0) {
-		const int len = MIN(sizeof(tmp), (size_t)offset);
+		const size_t len = MIN(sizeof(tmp), (size_t)offset);
 		read_data(tmp, len);
-		offset -= len;
+		offset -= (off_t)len;
 	}
 
 	/* Read the data */
 	read_data(buf, size);
 
-	return size;
+	return (int)size;
 }
 
 static int
@@ -198,8 +198,6 @@ build_tree(virtdir_t *v)
 	st.st_gid = fwcfg_gid;
 	virtdir_init(v, NULL, &st, &st, &st);
 
-printf("init with uid = %d, gid = %d\n", st.st_uid, st.st_gid);
-
 	set_index(FW_CFG_FILE_DIR);
 	read_data(&count, sizeof(count));
 	for (n = 0; n < be32toh(count); n++) {
@@ -210,11 +208,20 @@ printf("init with uid = %d, gid = %d\n",
 	}
 }
 
+static __dead void
+usage(void)
+{
+	fprintf(stderr, "Usage: %s [-F <path>] [-g <gid>] [-m <file-mode>] "
+	    "[-M <dir-mode>] [-u <uid>] [<fuse-options>]", getprogname());
+	exit(EXIT_FAILURE);
+}
+
 int
 main(int argc, char *argv[])
 {
 	const char *path = _PATH_FWCFG;
-	int ch, m;
+	int ch;
+	long m;
 	char *ep;
 
 	fwcfg_uid = geteuid();
@@ -226,23 +233,27 @@ main(int argc, char *argv[])
 			path = optarg;
 			break;
 		case 'g':
-			fwcfg_gid = atoi(optarg);
+			fwcfg_gid = (gid_t)atoi(optarg);
 			break;
 		case 'm':
 			m = strtol(optarg, &ep, 8);
 			if (optarg == ep || *ep || m < 0)
-				errx(1, "invalid file mode: %s", optarg);
-			fwcfg_file_mask = m;
+				errx(EXIT_FAILURE, "invalid file mode: %s",
+				    optarg);
+			fwcfg_file_mask = (mode_t)m;
 			break;
 		case 'M':
 			m = strtol(optarg, &ep, 8);
 			if (optarg == ep || *ep || m < 0)
-				errx(1, "invalid file mode: %s", optarg);
-			fwcfg_dir_mask = m;
+				errx(EXIT_FAILURE, "invalid directory mode: %s",
+				    optarg);
+			fwcfg_dir_mask = (mode_t)m;
 			break;
 		case 'u':
-			fwcfg_uid = atoi(optarg);
+			fwcfg_uid = (uid_t)atoi(optarg);
 			break;
+		default:
+			usage();
 		}
 	}
 
@@ -252,8 +263,5 @@ main(int argc, char *argv[])
 
 	build_tree(&fwcfg_virtdir);
 
-	for (int i = 0; i < argc; i++)
-		printf("argv[%d] = \"%s\"\n", i, argv[i]);
-
 	return fuse_main(argc, argv, &fwcfg_ops, NULL);
 }
Index: src/sbin/mount_qemufwcfg/virtdir.c
diff -u src/sbin/mount_qemufwcfg/virtdir.c:1.1 src/sbin/mount_qemufwcfg/virtdir.c:1.2
--- src/sbin/mount_qemufwcfg/virtdir.c:1.1	Sat Nov 25 18:23:39 2017
+++ src/sbin/mount_qemufwcfg/virtdir.c	Sat Nov 25 22:06:24 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: virtdir.c,v 1.1 2017/11/25 23:23:39 jmcneill Exp $ */
+/* $NetBSD: virtdir.c,v 1.2 2017/11/26 03:06:24 christos Exp $ */
 
 /*
  * Copyright � 2007 Alistair Crooks.  All rights reserved.
@@ -29,40 +29,27 @@
  */
 
 #include <sys/types.h>
+#include <sys/param.h>
 #include <sys/stat.h>
 
 #include <stdio.h>
+#include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <util.h>
 
 #include "virtdir.h"
-#include "defs.h"
 
  /* utility comparison routine for sorting and searching */
 static int
 compare(const void *vp1, const void *vp2)
 {
-	const virt_dirent_t	*tp1 = (const virt_dirent_t *) vp1;
-	const virt_dirent_t	*tp2 = (const virt_dirent_t *) vp2;
+	const virt_dirent_t *tp1 = (const virt_dirent_t *) vp1;
+	const virt_dirent_t *tp2 = (const virt_dirent_t *) vp2;
 
 	return strcmp(tp1->name, tp2->name);
 }
 
-/* save `n' chars of `s' in allocated storage */
-static char *
-strnsave(const char *s, int n)
-{
-	char	*cp;
-
-	if (n < 0) {
-		n = strlen(s);
-	}
-	NEWARRAY(char, cp, n + 1, "strnsave", return NULL);
-	(void) memcpy(cp, s, n);
-	cp[n] = 0x0;
-	return cp;
-}
-
 /* ensure intermediate directories exist */
 static void
 mkdirs(virtdir_t *tp, const char *path, size_t size)
@@ -82,22 +69,24 @@ mkdirs(virtdir_t *tp, const char *path, 
 }
 
 /* get rid of multiple slashes in input */
-static int
+static size_t
 normalise(const char *name, size_t namelen, char *path, size_t pathsize)
 {
 	const char	*np;
 	char		*pp;
 	int		 done;
 
-	for (pp = path, np = name, done = 0 ; !done && (int)(pp - path) < pathsize - 1 && (int)(np - name) <= namelen ; ) {
-		switch(*np) {
+	for (pp = path, np = name, done = 0 ; !done &&
+	    (size_t)(pp - path) < pathsize - 1 &&
+	    (size_t)(np - name) <= namelen; ) {
+		switch (*np) {
 		case '/':
 			if (pp == path || *(pp - 1) != '/') {
 				*pp++ = *np;
 			}
 			np += 1;
 			break;
-		case 0x0:
+		case '\0':
 			done = 1;
 			break;
 		default:
@@ -106,25 +95,25 @@ normalise(const char *name, size_t namel
 		}
 	}
 	/* XXX - trailing slash? */
-	*pp = 0x0;
-	return (int)(pp - path);
+	*pp = '\0';
+	return (size_t)(pp - path);
 }
 
 /* initialise the tree */
 int
 virtdir_init(virtdir_t *tp, const char *rootdir, struct stat *d, struct stat *f, struct stat *l)
 {
-	(void) memcpy(&tp->dir, d, sizeof(tp->dir));
+	tp->dir = *d;
 	tp->dir.st_mode = S_IFDIR | 0755;
 	tp->dir.st_nlink = 2;
-	(void) memcpy(&tp->file, f, sizeof(tp->file));
+	tp->file = *f;
 	tp->file.st_mode = S_IFREG | 0644;
 	tp->file.st_nlink = 1;
-	(void) memcpy(&tp->lnk, l, sizeof(tp->lnk));
+	tp->lnk = *l;
 	tp->lnk.st_mode = S_IFLNK | 0644;
 	tp->lnk.st_nlink = 1;
 	if (rootdir != NULL) {
-		tp->rootdir = strdup(rootdir);
+		tp->rootdir = estrdup(rootdir);
 	}
 	return 1;
 }
@@ -134,17 +123,19 @@ int
 virtdir_add(virtdir_t *tp, const char *name, size_t size, uint8_t type, const char *tgt, size_t tgtlen, uint16_t select)
 {
 	char		path[MAXPATHLEN];
-	int		pathlen;
+	size_t		pathlen;
 
 	pathlen = normalise(name, size, path, sizeof(path));
 	if (virtdir_find(tp, path, pathlen) != NULL) {
 		/* attempt to add a duplicate directory entry */
 		return 0;
 	}
-	ALLOC(virt_dirent_t, tp->v, tp->size, tp->c, 10, 10, "virtdir_add",
-			return 0);
+	if (tp->c == tp->size || tp->size == 0) {
+		tp->size += 10,
+		tp->v = erealloc(tp->v, tp->size * sizeof(*tp->v));
+	}
 	tp->v[tp->c].namelen = pathlen;
-	if ((tp->v[tp->c].name = strnsave(path, pathlen)) == NULL) {
+	if ((tp->v[tp->c].name = estrndup(path, pathlen)) == NULL) {
 		return 0;
 	}
 	tp->v[tp->c].d_name = strrchr(tp->v[tp->c].name, '/') + 1;
@@ -152,7 +143,7 @@ virtdir_add(virtdir_t *tp, const char *n
 	tp->v[tp->c].ino = (ino_t) random() & 0xfffff;
 	tp->v[tp->c].tgtlen = tgtlen;
 	if (tgt != NULL) {
-		tp->v[tp->c].tgt = strnsave(tgt, tgtlen);
+		tp->v[tp->c].tgt = estrndup(tgt, tgtlen);
 	}
 	tp->v[tp->c].select = select;
 	tp->c += 1;
@@ -175,10 +166,10 @@ virtdir_find(virtdir_t *tp, const char *
 }
 
 /* return the virtual offset in the tree */
-int
+off_t
 virtdir_offset(virtdir_t *tp, virt_dirent_t *dp)
 {
-	return (int)(dp - tp->v);
+	return dp - tp->v;
 }
 
 /* analogous to opendir(3) - open a directory, save information, and
@@ -188,8 +179,8 @@ openvirtdir(virtdir_t *tp, const char *d
 {
 	VIRTDIR	*dirp;
 
-	NEW(VIRTDIR, dirp, "openvirtdir", exit(EXIT_FAILURE));
-	dirp->dirname = strdup(d);
+	dirp = emalloc(sizeof(*dirp));
+	dirp->dirname = estrdup(d);
 	dirp->dirnamelen = strlen(d);
 	dirp->tp = tp;
 	dirp->i = 0;
@@ -205,12 +196,11 @@ readvirtdir(VIRTDIR *dirp)
 
 	for ( ; dirp->i < dirp->tp->c ; dirp->i++) {
 		from = (strcmp(dirp->dirname, "/") == 0) ?
-			&dirp->tp->v[dirp->i].name[1] :
-			&dirp->tp->v[dirp->i].name[dirp->dirnamelen + 1];
+		    &dirp->tp->v[dirp->i].name[1] :
+		    &dirp->tp->v[dirp->i].name[dirp->dirnamelen + 1];
 		if (strncmp(dirp->tp->v[dirp->i].name, dirp->dirname,
-				dirp->dirnamelen) == 0 &&
-		    *from != 0x0 &&
-		    strchr(from, '/') == NULL) {
+		    dirp->dirnamelen) == 0 &&
+		    *from != '\0' && strchr(from, '/') == NULL) {
 			return &dirp->tp->v[dirp->i++];
 		}
 	}
@@ -222,5 +212,5 @@ void
 closevirtdir(VIRTDIR *dirp)
 {
 	free(dirp->dirname);
-	FREE(dirp);
+	free(dirp);
 }
Index: src/sbin/mount_qemufwcfg/virtdir.h
diff -u src/sbin/mount_qemufwcfg/virtdir.h:1.1 src/sbin/mount_qemufwcfg/virtdir.h:1.2
--- src/sbin/mount_qemufwcfg/virtdir.h:1.1	Sat Nov 25 18:23:39 2017
+++ src/sbin/mount_qemufwcfg/virtdir.h	Sat Nov 25 22:06:24 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: virtdir.h,v 1.1 2017/11/25 23:23:39 jmcneill Exp $ */
+/* $NetBSD: virtdir.h,v 1.2 2017/11/26 03:06:24 christos Exp $ */
 
 /*
  * Copyright � 2007 Alistair Crooks.  All rights reserved.
@@ -34,8 +34,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
-#include "defs.h"
-
 /* this struct keeps a note of all the info related to a virtual directory entry */
 typedef struct virt_dirent_t {
 	char		*name;		/* entry name - used as key */
@@ -63,9 +61,9 @@ typedef struct virtdir_t {
 /* this struct is used to walk through directories */
 typedef struct VIRTDIR {
 	char		*dirname;	/* directory name */
-	int		 dirnamelen;	/* length of directory name */
+	size_t		 dirnamelen;	/* length of directory name */
 	virtdir_t	*tp;		/* the directory tree */
-	int		 i;		/* current offset in dir tree */
+	size_t		 i;		/* current offset in dir tree */
 } VIRTDIR;
 
 int virtdir_init(virtdir_t *, const char *, struct stat *, struct stat *, struct stat *);
@@ -76,6 +74,6 @@ VIRTDIR *openvirtdir(virtdir_t *, const 
 virt_dirent_t *readvirtdir(VIRTDIR *);
 void closevirtdir(VIRTDIR *);
 
-int virtdir_offset(virtdir_t *, virt_dirent_t *);
+off_t virtdir_offset(virtdir_t *, virt_dirent_t *);
 
 #endif

Reply via email to