Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


OPENDISK(3)                Library Functions Manual                OPENDISK(3)

NAME
     opendisk, opendisk1 - open a disk partition

LIBRARY
     System Utilities Library (libutil, -lutil)

SYNOPSIS
     #include <util.h>

     int
     opendisk(const char *path, int flags, char *buf, size_t buflen,
         int iscooked);

     int
     opendisk1(const char *path, int flags, char *buf, size_t buflen,
         int iscooked, int (*ofn)(const char *, int, ...)));

DESCRIPTION
     opendisk() opens path, for reading and/or writing as specified by the
     argument flags using open(2), and the file descriptor is returned to the
     caller.  buf is used to store the resultant filename.  buflen is the
     size, in bytes, of the array referenced by buf (usually MAXPATHLEN
     bytes).  iscooked controls which paths in /dev are tried.

     opendisk() attempts to open the following variations of path, in order:

     If path does not contain a slash ("/"), the following variations are
     attempted:

     -   If iscooked is zero:
         /dev/rpath   path with a prefix of "/dev/r".
         /dev/rpathX  path with a prefix of "/dev/r" and a suffix of `X'
                      (q.v.).
     -   If iscooked is non-zero:
         /dev/path    path with a prefix of "/dev/".
         /dev/pathX   path with a prefix of "/dev/" and a suffix of `X'
                      (q.v.).

     If the above fails, then the original path is tried using the following
     two variations:

     -   The iscooked value is ignored:
         path         The pathname as given.
         pathX        path with a suffix of `X', where `X' represents the raw
                      partition of the device, as determined by
                      getrawpartition(3), usually "c" or "d".

     opendisk1() is identical to opendisk() except uses the supplied ofn
     function instead of open(2).  This function must be compatible with
     open(2) in the parameters it takes, the value it returns, and way that
     errors are indicated.

RETURN VALUES
     An open file descriptor, or -1 if the open(2) failed.

ERRORS
     opendisk() and opendisk1() may set errno to one of the following values:

     [EFAULT]           buf was the NULL pointer.

     [EINVAL]           O_CREAT was set in flags, or getrawpartition(3) didn't
                        return a valid partition.

     The opendisk() function may also set errno to any value specified by the
     open(2) function.

     The opendisk1() function may also set errno to any value set by the ofn
     function.

SEE ALSO
     open(2), getrawpartition(3)

HISTORY
     The opendisk() function first appeared in NetBSD 1.3.

     The opendisk1() function first appeared in NetBSD 6.0, and was documented
     in NetBSD 8.0.

     The lookup order of opendisk() was changed in NetBSD 7.1 to first look in
     /dev in order to avoid opening random files in the current working
     directory.

NetBSD 10.99                     April 4, 2018                    NetBSD 10.99