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