|
|
1.1 root 1: .\" Copyright (c) 1983 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)directory.3 6.3 (Berkeley) 12/22/86
6: .\"
7: .TH DIRECTORY 3 "December 22, 1986"
8: .UC 5
9: .SH NAME
10: opendir, readdir, telldir, seekdir, rewinddir, closedir, dirfd \- directory operations
11: .SH SYNOPSIS
12: .B #include <sys/types.h>
13: .br
14: .B #include <sys/dir.h>
15: .PP
16: .SM
17: .B DIR
18: .B *opendir(filename)
19: .br
20: .B char *filename;
21: .PP
22: .B struct direct
23: .B *readdir(dirp)
24: .br
25: .SM
26: .B DIR
27: .B *dirp;
28: .PP
29: .B long
30: .B telldir(dirp)
31: .br
32: .SM
33: .B DIR
34: .B *dirp;
35: .PP
36: .B seekdir(dirp, loc)
37: .br
38: .SM
39: .B DIR
40: .B *dirp;
41: .br
42: .B long loc;
43: .PP
44: .B rewinddir(dirp)
45: .br
46: .SM
47: .B DIR
48: .B *dirp;
49: .PP
50: .B closedir(dirp)
51: .br
52: .SM
53: .B DIR
54: .B *dirp;
55: .PP
56: .B dirfd(dirp)
57: .br
58: .SM
59: .B DIR
60: .B *dirp;
61: .SH DESCRIPTION
62: .I Opendir
63: opens the directory named by
64: .I filename
65: and associates a
66: .I directory stream
67: with it.
68: .I Opendir
69: returns a pointer to be used to identify the
70: .I directory stream
71: in subsequent operations. The pointer
72: .SM
73: .B NULL
74: is returned if
75: .I filename
76: cannot be accessed, or if it cannot
77: .IR malloc (3)
78: enough memory to hold the whole thing.
79: .PP
80: .I Readdir
81: returns a pointer to the next directory entry. It returns
82: .B NULL
83: upon reaching the end of the directory or detecting an invalid
84: .I seekdir
85: operation.
86: .PP
87: .I Telldir
88: returns the current location associated with the named
89: .I directory stream.
90: .PP
91: .I Seekdir
92: sets the position of the next
93: .I readdir
94: operation on the
95: .I directory stream.
96: The new position reverts to the one associated with the
97: .I directory stream
98: when the
99: .I telldir
100: operation was performed. Values returned by
101: .I telldir
102: are good only for the lifetime of the DIR pointer from which they are derived.
103: If the directory is closed and then reopened, the
104: .I telldir
105: value may be invalidated due to undetected directory compaction.
106: It is safe to use a previous
107: .I telldir
108: value immediately after a call to
109: .I opendir
110: and before any calls to
111: .I readdir.
112: .PP
113: .I Rewinddir
114: resets the position of the named
115: .I directory stream
116: to the beginning of the directory.
117: .PP
118: .I Closedir
119: closes the named
120: .I directory stream
121: and frees the structure associated with the DIR pointer.
122: .PP
123: .I Dirfd
124: returns the integer file descriptor associated with the named
125: .I directory stream,
126: see open(2).
127: .PP
128: Sample code which searchs a directory for entry ``name'' is:
129: .PP
130: .br
131: len = strlen(name);
132: .br
133: dirp = opendir(".");
134: .br
135: for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp))
136: .br
137: if (dp->d_namlen == len && !strcmp(dp->d_name, name)) {
138: .br
139: closedir(dirp);
140: .br
141: return FOUND;
142: .br
143: }
144: .br
145: closedir(dirp);
146: .br
147: return NOT_FOUND;
148: .SH "SEE ALSO"
149: open(2),
150: close(2),
151: read(2),
152: lseek(2),
153: dir(5)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.