# getmntent

## NAME



           getmntent, setmntent, addmntent, endmntent, hasmntopt, getmntent_r
           - get filesystem descriptor file entry
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <stdio.h>**
           **#include <mntent.h>**
    
           **FILE *setmntent(const char ***_path_**, const char ***_type_**);**
    
           **struct mntent *getmntent(FILE ***_stream_**);**
    
           **int addmntent(FILE *restrict** _stream_**,**
                         **const struct mntent *restrict** _mnt_**);**
    
           **int endmntent(FILE ***_streamp_**);**
    
           **char *hasmntopt(const struct mntent ***_mnt_**, const char ***_opt_**);**
    
           /* GNU extension */
           **#include <mntent.h>**
    
           **struct mntent *getmntent_r(** int size;
                         **FILE *restrict** _streamp_**,**
                         **struct mntent *restrict** _mntbuf_**,**
                         **char** _buf_**[restrict** _size_**], int** _size_**);**
    
       Feature Test Macro Requirements for glibc (see
       feature_test_macros(7)):
    
           **getmntent_r**():
               Since glibc 2.19:
                   _DEFAULT_SOURCE
               glibc 2.19 and earlier:
                   _BSD_SOURCE || _SVID_SOURCE
    


## DESCRIPTION



           These routines are used to access the filesystem description file
           _/etc/fstab_ and the mounted filesystem description file _/etc/mtab_.
    
           The **setmntent**() function opens the filesystem description file
           _path_ and returns a file pointer which can be used by **getmntent**().
           The argument _type_ is the type of access required and can take the
           same values as the _mode_ argument of fopen(3).  The returned stream
           should be closed using **endmntent**() rather than fclose(3).
    
           The **getmntent**() function reads the next line of the filesystem
           description file from _stream_ and returns a pointer to a structure
           containing the broken out fields from a line in the file.  The
           pointer points to a static area of memory which is overwritten by
           subsequent calls to **getmntent**().
    
           The **addmntent**() function adds the _mntent_ structure _mnt_ to the end
           of the open _stream_.
    
           The **endmntent**() function closes the _stream_ associated with the
           filesystem description file.
    
           The **hasmntopt**() function scans the _mnt_opts_ field (see below) of
           the _mntent_ structure _mnt_ for a substring that matches _opt_.  See
           _< mntent.h>_ and mount(8) for valid mount options.
    
           The reentrant **getmntent_r**() function is similar to **getmntent**(),
           but stores the _mntent_ structure in the provided _*mntbuf_ , and
           stores the strings pointed to by the entries in that structure in
           the provided array _buf_ of size _size_.
    
           The _mntent_ structure is defined in _< mntent.h>_ as follows:
    
               struct mntent {
                   char *mnt_fsname;   /* name of mounted filesystem */
                   char *mnt_dir;      /* filesystem path prefix */
                   char *mnt_type;     /* mount type (see mntent.h) */
                   char *mnt_opts;     /* mount options (see mntent.h) */
                   int   mnt_freq;     /* dump frequency in days */
                   int   mnt_passno;   /* pass number on parallel fsck */
               };
    
           Since fields in the mtab and fstab files are separated by
           whitespace, octal escapes are used to represent the characters
           space (\040), tab (\011), newline (\012), and backslash (\\) in
           those files when they occur in one of the four strings in a _mntent_
           structure.  The routines **addmntent**() and **getmntent**() will convert
           from string representation to escaped representation and back.
           When converting from escaped representation, the sequence \134 is
           also converted to a backslash.
    


## RETURN VALUE



           The **getmntent**() and **getmntent_r**() functions return a pointer to
           the _mntent_ structure or NULL on failure.
    
           The **addmntent**() function returns 0 on success and 1 on failure.
    
           The **endmntent**() function always returns 1.
    
           The **hasmntopt**() function returns the address of the substring if a
           match is found and NULL otherwise.
    


## FILES



           _/etc/fstab_
                  filesystem description file
    
           _/etc/mtab_
                  mounted filesystem description file
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌───────────────┬───────────────┬────────────────────────────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├───────────────┼───────────────┼────────────────────────────────┤
           │ **setmntent**(),  │ Thread safety │ MT-Safe                        │
           │ **endmntent**(),  │               │                                │
           │ **hasmntopt**()   │               │                                │
           ├───────────────┼───────────────┼────────────────────────────────┤
           │ **getmntent**()   │ Thread safety │ MT-Unsafe race:mntentbuf       │
           │               │               │ locale                         │
           ├───────────────┼───────────────┼────────────────────────────────┤
           │ **addmntent**()   │ Thread safety │ MT-Safe race:stream locale     │
           ├───────────────┼───────────────┼────────────────────────────────┤
           │ **getmntent_r**() │ Thread safety │ MT-Safe locale                 │
           └───────────────┴───────────────┴────────────────────────────────┘
    


## STANDARDS



           None.
    


* * *