]> Zhao Yanbai Git Server - minix.git/commitdiff
libutil: let opendisk(3) try /dev
authorDavid van Moolenbroek <david@minix3.org>
Tue, 17 Apr 2012 22:04:28 +0000 (00:04 +0200)
committerLionel Sambuc <lionel@minix3.org>
Wed, 19 Feb 2014 10:22:19 +0000 (11:22 +0100)
If a device node is given without path, and opening the node fails
initially, prepend "/dev/" to the node name and try opening again.
This is more in line with NetBSD behavior.

Change-Id: Ib544aec52abe43132510f0e4b173b00fb3dbaab8

lib/libutil/opendisk.c

index 18a314f4fe1036715003574e6b61c220173c23f1..25daa348cc8ff571de4d857dfa0862b82d29a65d 100644 (file)
@@ -54,6 +54,14 @@ __opendisk(const char *path, int flags, char *buf, size_t buflen, int iscooked,
        int f;
 #endif 
 
+#ifdef __minix
+       /*
+        * MINIX does not have the cooked/raw distinction.  Do not prepend 'r'
+        * to the device name when generating a full path.
+        */
+       iscooked = 1;
+#endif
+
        if (buf == NULL) {
                errno = EFAULT;
                return (-1);
@@ -80,6 +88,7 @@ __opendisk(const char *path, int flags, char *buf, size_t buflen, int iscooked,
        f = ofn(buf, flags, 0);
        if (f != -1 || errno != ENOENT)
                return (f);
+#endif
 
        if (strchr(path, '/') != NULL)
                return (-1);
@@ -89,6 +98,7 @@ __opendisk(const char *path, int flags, char *buf, size_t buflen, int iscooked,
        if (f != -1 || errno != ENOENT)
                return (f);
 
+#ifndef __minix
        snprintf(buf, buflen, "%s%s%s%c", _PATH_DEV, iscooked ? "" : "r", path,
            'a' + rawpart);
        f = ofn(buf, flags, 0);