Author: jimharris
Date: Thu Jul 18 23:12:44 2013
New Revision: 253458
URL: http://svnweb.freebsd.org/changeset/base/253458

Log:
  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

Modified:
  head/sbin/nvmecontrol/devlist.c
  head/sbin/nvmecontrol/nvmecontrol.c

Modified: head/sbin/nvmecontrol/devlist.c
==============================================================================
--- head/sbin/nvmecontrol/devlist.c     Thu Jul 18 22:11:27 2013        
(r253457)
+++ head/sbin/nvmecontrol/devlist.c     Thu Jul 18 23:12:44 2013        
(r253458)
@@ -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

Modified: head/sbin/nvmecontrol/nvmecontrol.c
==============================================================================
--- head/sbin/nvmecontrol/nvmecontrol.c Thu Jul 18 22:11:27 2013        
(r253457)
+++ head/sbin/nvmecontrol/nvmecontrol.c Thu Jul 18 23:12:44 2013        
(r253458)
@@ -163,11 +163,8 @@ read_namespace_data(int fd, int nsid, st
 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 s
                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 s
                if (exit_on_error)
                        exit(1);
                else
-                       return (1);
+                       return (errno);
        }
 
        return (0);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to