OPENDISK(3) | Library Functions Manual | OPENDISK(3)

# NAME

`opendisk` — open a disk's raw partition

# SYNOPSIS

System Utilities Library (libutil, -lutil)
`#include <sys/types.h>`
`#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). 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.).

# RETURN VALUES

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

# ERRORS

`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.

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.

June 6, 2025 | Debian