NAME
opendisk —
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);
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”.
RETURN VALUES
An open file descriptor, or -1 if the
open(2) failed.
ERRORS
opendisk() 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.
SEE ALSO
open(2),
getrawpartition(3)
HISTORY
The
opendisk() function first appeared in
NetBSD 1.3.
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.