Annotation of 43BSDReno/contrib/isode-beta/dirent/directory.3c, revision 1.1.1.1

1.1       root        1: .TH DIRECTORY 3C "Standard Extension"
                      2: .SH NAME
                      3: opendir, readdir, telldir, seekdir, rewinddir, closedir \- directory operations
                      4: .SH SYNOPSIS
                      5: .B "#include <sys/types.h>"
                      6: .br
                      7: .B "#include <isode/usr.dirent.h>"
                      8: .P
                      9: .B "DIR \(**opendir (dirname)"
                     10: .br
                     11: .B "char \(**dirname;"
                     12: .P
                     13: .B "struct dirent \(**readdir (dirp)"
                     14: .br
                     15: .B "DIR \(**dirp;"
                     16: .P
                     17: .B "off_t telldir (dirp)"
                     18: .br
                     19: .B "DIR \(**dirp;"
                     20: .P
                     21: .B "void seekdir (dirp, loc)"
                     22: .br
                     23: .B "DIR \(**dirp;"
                     24: .br
                     25: .B "off_t loc;"
                     26: .P
                     27: .B "void rewinddir (dirp)"
                     28: .br
                     29: .B "DIR \(**dirp;"
                     30: .P
                     31: .B "int closedir (dirp)"
                     32: .br
                     33: .B "DIR \(**dirp;"
                     34: .SH DESCRIPTION
                     35: .I Opendir
                     36: establishes a connection between
                     37: the directory named by
                     38: .I dirname
                     39: and a unique object of type
                     40: .SM DIR
                     41: known as a
                     42: .I "directory stream"
                     43: that it creates.
                     44: .I Opendir
                     45: returns a pointer to be used to identify the
                     46: directory stream
                     47: in subsequent operations.
                     48: A
                     49: .SM NULL
                     50: pointer is returned if
                     51: .I dirname
                     52: cannot be accessed or is not a directory,
                     53: or if
                     54: .I opendir
                     55: is unable to create the
                     56: .SM DIR
                     57: object
                     58: (perhaps due to insufficient memory).
                     59: .P
                     60: .I Readdir
                     61: returns a pointer to an internal structure
                     62: containing information about the next active directory entry.
                     63: No inactive entries are reported.
                     64: The internal structure may be overwritten by
                     65: another operation on the same
                     66: directory stream;
                     67: the amount of storage needed to hold a copy
                     68: of the internal structure is given by the value of a macro,
                     69: .IR DIRENTSIZ(strlen(direntp\->d_name)) ,
                     70: not by
                     71: .I "sizeof(struct\ dirent)"
                     72: as one might expect.
                     73: A
                     74: .SM NULL
                     75: pointer is returned
                     76: upon reaching the end of the directory,
                     77: upon detecting an invalid location in the directory,
                     78: or upon occurrence of an error while reading the directory.
                     79: .P
                     80: .I Telldir
                     81: returns the current position associated with the named
                     82: directory stream
                     83: for later use as an argument to
                     84: .IR seekdir .
                     85: .P
                     86: .I Seekdir
                     87: sets the position of the next
                     88: .I readdir
                     89: operation on the named
                     90: directory stream.
                     91: The new position reverts to the one associated with the
                     92: directory stream
                     93: when the
                     94: .I telldir
                     95: operation from which
                     96: .I loc
                     97: was obtained was performed.
                     98: .P
                     99: .I Rewinddir
                    100: resets the position of the named
                    101: directory stream
                    102: to the beginning of the directory.
                    103: All buffered data for the directory stream is discarded,
                    104: thereby guaranteeing that the actual
                    105: file system directory will be referred to for the next
                    106: .I readdir
                    107: on the
                    108: directory stream.
                    109: .P
                    110: .I Closedir
                    111: closes the named
                    112: directory stream;
                    113: internal resources used for the
                    114: directory stream are liberated,
                    115: and subsequent use of the associated
                    116: .SM DIR
                    117: object is no longer valid.
                    118: .I Closedir
                    119: returns a value of zero if no error occurs,
                    120: \-1 otherwise.
                    121: .P
                    122: There are several possible errors that can occur
                    123: as a result of these operations;
                    124: the external integer variable
                    125: .I errno
                    126: is set to indicate the specific error.
                    127: .RI ( Readdir 's
                    128: detection of the normal end of a directory
                    129: is not considered to be an error.)
                    130: .SH EXAMPLE
                    131: Sample code which searches the current working directory for entry
                    132: .IR name :
                    133: .sp
                    134: .P
                    135: .ft B
                    136:        dirp = opendir( "." );
                    137: .br
                    138:        while ( (dp = readdir( dirp )) != NULL )
                    139: .br
                    140:                if ( strcmp( dp\->d_name, name ) == 0 )
                    141: .br
                    142:                        {
                    143: .br
                    144:                        (void) closedir( dirp );
                    145: .br
                    146:                        return FOUND;
                    147: .br
                    148:                        }
                    149: .br
                    150:        (void) closedir( dirp );
                    151: .br
                    152:        return NOT_FOUND;
                    153: .ft P
                    154: .sp
                    155: .SH "SEE ALSO"
                    156: getdents(2), dirent(4).
                    157: .SH WARNINGS
                    158: Entries for "." and ".."
                    159: may not be reported for some file system types.
                    160: .P
                    161: The value returned by
                    162: .I telldir
                    163: need not have any simple interpretation
                    164: and should only be used as an argument to
                    165: .IR seekdir .
                    166: Similarly,
                    167: the
                    168: .I loc
                    169: argument to
                    170: .I seekdir
                    171: must be obtained from a previous
                    172: .I telldir
                    173: operation on the same
                    174: directory stream.
                    175: .P
                    176: .I Telldir
                    177: and
                    178: .I seekdir
                    179: are unreliable when used in conjunction with
                    180: file systems that perform directory compaction or expansion
                    181: or when the directory stream has been closed and reopened.
                    182: It is best to avoid using
                    183: .I telldir
                    184: and
                    185: .I seekdir
                    186: altogether.
                    187: .P
                    188: The exact set of
                    189: .I errno
                    190: values and meanings may vary among implementations.
                    191: .P
                    192: Because directory entries can dynamically
                    193: appear and disappear,
                    194: and because directory contents are buffered
                    195: by these routines,
                    196: an application may need to continually rescan
                    197: a directory to maintain an accurate picture
                    198: of its active entries.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.