summaryrefslogtreecommitdiff
path: root/hurd/interface/fs/19.mdwn
blob: 2a50d3e01723abc3843dcab1dd353e3df540fc1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
Free Software Foundation, Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

[[!meta title="dir_readdir"]]

    routine dir_readdir (
    	dir: file_t;
    	RPT
    	out data: data_t, dealloc[];
    	entry: int;
    	nentries: int;
    	bufsiz: vm_size_t;
    	out amount: int);

Read entries from the directory.  Each entry is identified by an index number
starting at 0 and running through the file.  This call fetches `nentries` (or
any convenient number if `nentries` is -1) entries starting at `entry`,
returning a series of struct dirent in `data`.
Note that due to the variable-size `d_name` field, `d_reclen` has to be used to
jump from one struct dirent to the other.
The number of entries
successfully read is returned in `amount`.  If `entry` is bigger than the index
of the last entry, then 0 is returned in `amount`.  If `bufsize` is nonzero,
never return more than `bufsize` bytes of data regardless.