svn commit: r203290 - head/lib/libc/gen

Ed Schouten ed at FreeBSD.org
Sun Jan 31 14:51:05 UTC 2010


Author: ed
Date: Sun Jan 31 14:51:04 2010
New Revision: 203290
URL: http://svn.freebsd.org/changeset/base/203290

Log:
  Perform some cleanups to devname(3).
  
  - Make sure the mode argument is either a character or a block device.
  - Use S_IS*() instead of checking S_IF*-flags by hand.
  - Don't use kern.devname when the argument is already NODEV.
  - Always call snprintf with the proper amount of arguments corresponding
    with the format.
  - Perform some whitespace fixes. Tabs instead of 4 spaces, missing space
    for return statement.
  - Remove unneeded includes.

Modified:
  head/lib/libc/gen/devname.c

Modified: head/lib/libc/gen/devname.c
==============================================================================
--- head/lib/libc/gen/devname.c	Sun Jan 31 14:35:49 2010	(r203289)
+++ head/lib/libc/gen/devname.c	Sun Jan 31 14:51:04 2010	(r203290)
@@ -36,10 +36,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/types.h>
 #include <sys/sysctl.h>
 
-#include <err.h>
-#include <fcntl.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
 #include <sys/param.h>
 #include <sys/stat.h>
@@ -49,22 +46,22 @@ devname_r(dev_t dev, mode_t type, char *
 {
 	int i;
 	size_t j;
-	char *r;
 
-	if ((type & S_IFMT) == S_IFCHR) {
+	if (dev == NODEV || !(S_ISCHR(type) || S_ISBLK(dev))) {
+		strlcpy(buf, "#NODEV", len);
+		return (buf);
+	}
+
+	if (S_ISCHR(type)) {
 		j = len;
 		i = sysctlbyname("kern.devname", buf, &j, &dev, sizeof (dev));
 		if (i == 0)
-		    return (buf);
+			return (buf);
 	}
 
 	/* Finally just format it */
-	if (dev == NODEV)
-		r = "#NODEV";
-	else 
-		r = "#%c:%d:0x%x";
-	snprintf(buf, len, r,
-	    (type & S_IFMT) == S_IFCHR ? 'C' : 'B', major(dev), minor(dev));
+	snprintf(buf, len, "#%c:%d:0x%x",
+	    S_ISCHR(type) ? 'C' : 'B', major(dev), minor(dev));
 	return (buf);
 }
 
@@ -73,5 +70,5 @@ devname(dev_t dev, mode_t type)
 {
 	static char buf[SPECNAMELEN + 1];
 
-	return(devname_r(dev, type, buf, sizeof(buf)));
+	return (devname_r(dev, type, buf, sizeof(buf)));
 }


More information about the svn-src-all mailing list