www.delorie.com/djgpp/doc/libc/libc_405.html   search  
libc.a reference

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]



#include <mntent.h>

struct mntent *getmntent(FILE *filep);


This function returns information about the various drives that are available to your program. Beginning with drive `A:', information is retrieved for successive drives with successive calls to getmntent. Note that drives `A:' and `B:' will only be returned if there is an MS-DOS formatted disk in the drive; empty drives are skipped. For systems with a single floppy drive, it is returned as if it were mounted on `A:/' or `B:/', depending on how it was last referenced (and if there is a disk in the drive).

The argument filep should be a FILE* pointer returned by setmntent (see section setmntent).

For each drive scanned, a pointer to a static structure of the following type is returned:

struct mntent
    char * mnt_fsname;  /* The name of this file system */
    char * mnt_dir;     /* The root directory of this file system */
    char * mnt_type;	/* Filesystem type */
    char * mnt_opts;    /* Options, see below */
    int    mnt_freq;    /* -1 */
    int    mnt_passno;  /* -1 */
    long   mnt_time;    /* -1 */

DJGPP implementation returns the following in the first 4 fields of struct mntent:


For networked and CD-ROM drives, this is the name of root directory in the form `\\HOST\PATH' (this is called a UNC name).

For drives compressed with DoubleSpace, mnt_fsname is the string `X:\DBLSPACE.NNN', where X is the drive letter of the host drive and NNN is the sequence number of the Compressed Volume File.

For drives compressed with Stacker, mnt_fsname is the string `X:\STACVOL.NNN', where X and NNN are as for DoubleSpace drives.

For drives compressed with Jam (a shareware disk compression software), mnt_fsname is the full name of the Jam archive file.

For SUBSTed drives, mnt_fsname is the actual directory name that that was SUBSTed to emulate a drive.

JOINed drives get their mnt_fsname as if they were NOT JOINed (i.e., either the label name or the default `Drive X:').

For drives with a volume label, mnt_fsname is the name of the label; otherwise the string `Drive X:', where X is the drive letter.


For most drives, this is the name of its root directory `X:/' (where X is the drive letter), except that JOINed drives get mnt_dir as the name of the directory to which they were JOINed.

For systems with a single floppy drive (which can be referenced as either `a:/' or `b:/'), the mount directory will be returned as one of these, depending on which drive letter was last used to reference that drive.


 "fd"     for floppy disks
 "hd"     for hard disks
 "dblsp"  for disks compressed with DoubleSpace
 "stac"   for disks compressed with Stacker
 "jam"    for disks compressed with Jam
 "cdrom"  for CD-ROM drives
 "ram"    for RAM disks
 "subst"  for SUBSTed directories
 "join"   for JOINed disks
 "net"    for networked drives


The string `ro,dev=XX' for CD-ROM drives, `rw,dev=XX' for all the others, where XX is the hexadecimal drive number of the REAL drive on which this filesystem resides. That is, if you call stat on mnt_fsname, you will get the numeric equivalent of XX in st_dev member of struct stat. E.g., for drive `C:' you will get `rw,dev=02'. Note that SUBSTed and JOINed drives get the drive numbers as if SUBST and JOIN were not in effect.

Return Value

This function returns a pointer to a struct mntent, or NULL if there are no more drives to report on.




struct mntent *m;
FILE *f;
f = setmntent("/etc/mnttab", "r");
while ((m = getmntent(f)))
  printf("Drive %s, name %s\n", m->mnt_dir, m->mnt_fsname);

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster   donations   bookstore     delorie software   privacy  
  Copyright 2004   by DJ Delorie     Updated Apr 2004