NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ATTRIBUTES | SEE ALSO
#include <stdio.h> #include <sys/mnttab.h>int getmntent(FILE *fp, struct mnttab *mp);
The getmntent() and getmntany() functions each fill in the structure pointed to by mp with the broken-out fields of a line in the /etc/mnttab file. Each line in the file contains a mnttab structure, which is defined in the <sys/mnttab.h> header. The structure contains the following members which are described on the mnttab(4) manual page.
char *mnt_special; char *mnt_mountp; char *mnt_fstype; char *mnt_mntopts; char *mnt_time;
The getmntent() function returns a pointer to the next mnttab structure in the file. Successive calls can be used to search the entire file. The getmntany() function searches the file referenced by fp until a match is found between a line in the file and mpref. A match occurrs if all non-null entries in mpref match the corresponding fields in the file. Note that these routines do not open, close, or rewind the file.
Applications requiring consistent access to /etc/mnttab should lock the file. The following C code segment applies a shared file segment lock to the file. Since it a shared lock, multiple processes are allowed to read the file at the same time, but no process will be allowed to modify its contents until all of the shared locks have been released and an exclusive lock has been acquired.
#include <fcntl.h> struct flock lb; lb.l_type = F_RDLCK; lb.l_whence = 0; lb.l_start = 0; lb.l_len = 0 fcntl(fileno(fp), F_SETLKW, &lb);
The data pointed to by the mnttab structure members are stored in a static area and must be copied to be saved between successive calls.
The hasmntopt() function scans the mnt_mntopts member of the mnttab structure mnt for a substring that matches opt. It returns the address of the substring if a match is found; otherwise it returns 0.
The putmntent() macro formats the contents of the mnttab structure according to the layout required for the /etc/mnttab file and writes the entry to the file. The file should be opened in append mode ( fopen(3S) with an "a" mode) so that the entry is appended to the file.
Applications writing to /etc/mnttab should lock the file to provide consistent access for other applications. The following C code segment applies an exclusive file segment lock to the file. This exclusive lock guarantees that no other processes are updating or reading from /etc/mnttab.
lb.l_type = F_WRLCK; lb.l_whence = 0; lb.l_start = 0; lb.l_len = 0; fcntl(fileno(fp), F_SETLKW, &lb);
If the next entry is successfully read by getmntent() or a match is found with getmntany(), 0 is returned. If an EOF is encountered on reading, these functions return -1. If an error is encountered, a value greater than 0 is returned. The following error values are defined in <sys/mnttab.h>:
A line in the file exceeded the internal buffer size of MNT_LINE_MAX.
A line in the file contains too many fields.
A line in the file contains too few fields.
Upon successful completion, hasmntopt() returns the address of the substring if a match is found. Otherwise, it returns 0.
Upon successful completion, putmntent() returns the number of bytes printed to the specified file. Otherwise, it returns EOF.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
MT-Level | Safe |
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ATTRIBUTES | SEE ALSO