OPENDEV(3) | Library Functions Manual | OPENDEV(3)

# NAME

`opendev` — short form device open routine

# SYNOPSIS

System Utilities Library (libutil, -lutil)
`#include <util.h>`

int
`opendev`(const char *path, int oflags, int dflags, char **realpath);

# DESCRIPTION

The `opendev`() function opens a device using a “short form” name or disklabel(8) UID (DUID). For instance “sd0” or “sd0c” will be expanded to /dev/rsd0c on most architectures.

Device name lookup is done by first checking path for a ‘/’ and if one is found attempting to open that file. If not, path is checked to see if it is a valid DUID. If it is, the corresponding device is obtained via diskmap(4). If path has no ‘/’ and is not a DUID, /dev is searched for a matching device.

The oflags are the same as the flags passed to open(2).

The dflags are specified by OR'ing the following values:

    OPENDEV_PART	attempt to open the raw partition during expansion
    OPENDEV_BLCK	open the block device (default is character device)

If realpath is not `NULL`, it is modified to point at the fully expanded device name.

# RETURN VALUES

The `opendev`() return value and errors are the same as the return value and errors of open(2).

# SEE ALSO

open(2), getrawpartition(3), diskmap(4), disklabel(8)

# HISTORY

The `opendev`() function first appeared in OpenBSD 1.2.

# CAVEATS

If realpath is not `NULL`, on return it will point to internal static storage space that will be overwritten by subsequent calls.

June 6, 2025 | Debian