diff options
author | jimharris <jimharris@FreeBSD.org> | 2013-07-18 23:12:44 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2013-07-18 23:12:44 +0000 |
commit | 3e18e4fbf6a97737356dbbed8ef7bbdb2e644b0b (patch) | |
tree | 000833b9431cc7697fbeb0972de926220c1d3fc4 /sbin | |
parent | f2d723e2cd0338fca77bf3cf31dde28ecb13132e (diff) | |
download | FreeBSD-src-3e18e4fbf6a97737356dbbed8ef7bbdb2e644b0b.zip FreeBSD-src-3e18e4fbf6a97737356dbbed8ef7bbdb2e644b0b.tar.gz |
Simplify open_dev() by returning errno values rather than just 0 or 1.
Also remove stat() call and just rely on errno from open() call to discern
whether dev node exists or not.
Sponsored by: Intel
Reviewed by: kib, carl
MFC after: 3 days
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/nvmecontrol/devlist.c | 3 | ||||
-rw-r--r-- | sbin/nvmecontrol/nvmecontrol.c | 16 |
2 files changed, 4 insertions, 15 deletions
diff --git a/sbin/nvmecontrol/devlist.c b/sbin/nvmecontrol/devlist.c index 46879db..2a95832 100644 --- a/sbin/nvmecontrol/devlist.c +++ b/sbin/nvmecontrol/devlist.c @@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <err.h> +#include <errno.h> #include <fcntl.h> #include <stddef.h> #include <stdio.h> @@ -80,7 +81,7 @@ devlist(int argc, char *argv[]) ret = open_dev(name, &fd, 0, 0); if (ret != 0) { - if (fd < 0) { + if (ret == EACCES) { warnx("could not open /dev/%s\n", name); continue; } else diff --git a/sbin/nvmecontrol/nvmecontrol.c b/sbin/nvmecontrol/nvmecontrol.c index 826195d..333bb62 100644 --- a/sbin/nvmecontrol/nvmecontrol.c +++ b/sbin/nvmecontrol/nvmecontrol.c @@ -163,11 +163,8 @@ read_namespace_data(int fd, int nsid, struct nvme_namespace_data *nsdata) int open_dev(const char *str, int *fd, int show_error, int exit_on_error) { - struct stat devstat; char full_path[64]; - *fd = 0; - if (!strnstr(str, NVME_CTRLR_PREFIX, strlen(NVME_CTRLR_PREFIX))) { if (show_error) warnx("controller/namespace ids must begin with '%s'", @@ -175,19 +172,10 @@ open_dev(const char *str, int *fd, int show_error, int exit_on_error) if (exit_on_error) exit(1); else - return (1); + return (EINVAL); } snprintf(full_path, sizeof(full_path), "/dev/%s", str); - if (stat(full_path, &devstat) != 0) { - if (show_error) - warn("could not stat %s", full_path); - if (exit_on_error) - exit(1); - else - return (1); - } - *fd = open(full_path, O_RDWR); if (*fd < 0) { if (show_error) @@ -195,7 +183,7 @@ open_dev(const char *str, int *fd, int show_error, int exit_on_error) if (exit_on_error) exit(1); else - return (1); + return (errno); } return (0); |