FHOPEN(2)

FHOPEN(2) | System Calls Manual | FHOPEN(2)

# NAME

fhopen, fhstat, fhstatvfs — access file via file handle

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

#include <sys/types.h>
#include <sys/mount.h>
int
fhopen(const void *fhp, size_t fh_size, int flags);
#include <sys/stat.h>
int
fhstat(const void *fhp, size_t fh_size, struct stat *sb);
#include <sys/statvfs.h>
int
fhstatvfs(const void *fhp, size_t fh_size, struct statvfs *buf);
int
fhstatvfs1(const void *fhp, size_t fh_size, struct statvfs *buf, int flags);

# DESCRIPTION

These functions provide a means to access a file given the opaque file handle fhp and the size fh_size of the opaque object as returned by getfh(2). As this method bypasses directory access restrictions, these calls are restricted to the superuser.
fhopen() opens the file referenced by fhp for reading and/or writing as specified by the argument flags and returns the file descriptor to the calling process. The flags are specified by or'ing together the flags used for the open(2) call. All said flags are valid except for `O_CREAT`.
fhstat(), fhstatvfs(), and fhstatvfs1() provide the functionality of the fstat(2), fstatvfs(2), and fstatvfs1(2) calls except that they return information for the file referred to by fhp rather than an open file.

# RETURN VALUES

Upon successful completion, fhopen() returns the file descriptor for the opened file, while fhstat(), fhstatvfs(), and fhstatvfs1() return 0. Otherwise, -1 is returned and errno is set to indicate the error.

# ERRORS

In addition to the errors returned by open(2), fstat(2), fstatvfs(2), and fstatvfs1(2), respectively, fhopen(), fhstat(), fhstatvfs(), and fhstatvfs1() will return

[`EINVAL`]
  Calling fhopen() with `O_CREAT` set or invalid fh_size.
[`ESTALE`]
  The file handle fhp is no longer valid.

# SEE ALSO

fstat(2), fstatvfs(2), fstatvfs1(2), getfh(2), open(2)

# HISTORY

The fhopen(), and fhstat() functions first appeared in NetBSD 1.5. The fhstatvfs() function replaced fhstatfs() in NetBSD 3.0.

August 5, 2009 | NetBSD 8.3