opendisk - open a disk's ``raw'' partition
#include <sys/types.h>
#include <util.h>
int
opendisk(const char *path, int flags, char *buf, size_t
buflen,
int iscooked);
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). If iscooked is non zero, the ``cooked'' partition
(block device)
is opened, rather than the ``raw'' partition (character device).
opendisk() attempts to open the following variations of
path, in order:
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''.
If iscooked is zero, then the following two variations are
attempted:
/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.).
Otherwise (i.e., iscooked is non-zero), the following variations are attempted:
/dev/path path with a prefix of ``/dev/''.
/dev/pathX path with a prefix of ``/dev/'' and a suffix of
`X' (q.v.).
An open file descriptor, or -1 if the open(2) failed.
opendisk() may set errno to one of the following values:
[EINVAL] O_CREAT was set in flags, or getrawpartition(3) didn't return
a valid partition.
[EFAULT] buf was the NULL pointer.
The opendisk() function may also set errno to any value
specified by the
open(2) function.
open(2), getrawpartition(3)
The opendisk() function first appeared in NetBSD 1.3.
OpenBSD 3.6 September 22, 1997
[ Back ] |