|
|
1.1 root 1: .\" Copyright (c) 1989 The Regents of the University of California.
2: .\" All rights reserved.
3: .\"
4: .\" Redistribution and use in source and binary forms are permitted provided
5: .\" that: (1) source distributions retain this entire copyright notice and
6: .\" comment, and (2) distributions including binaries display the following
7: .\" acknowledgement: ``This product includes software developed by the
8: .\" University of California, Berkeley and its contributors'' in the
9: .\" documentation or other materials provided with the distribution and in
10: .\" all advertising materials mentioning features or use of this software.
11: .\" Neither the name of the University nor the names of its contributors may
12: .\" be used to endorse or promote products derived from this software without
13: .\" specific prior written permission.
14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17: .\"
18: .\" @(#)getdirentries.2 6.2 (Berkeley) 6/23/90
19: .\"
20: .TH GETDIRENTRIES 2 "June 23, 1990"
21: .UC 7
22: .SH NAME
23: getdirentries \- get directory entries in a filesystem independent format
24: .SH SYNOPSIS
25: .nf
26: .ft B
27: #include <sys/dirent.h>
28: .LP
29: .ft B
30: cc = getdirentries(fd, buf, nbytes, basep)
31: int cc, fd;
32: char *buf;
33: int nbytes;
34: long *basep;
35: .fi
36: .SH DESCRIPTION
37: .I Getdirentries
38: reads directory entries from the directory
39: referenced by the file descriptor
40: .I fd
41: into the buffer pointed to by
42: .IR buf ,
43: in a filesystem independent format.
44: Up to
45: .I nbytes
46: of data will be transferred.
47: .I Nbytes
48: must be greater than or equal to the
49: block size associated with the file,
50: see
51: .IR stat(2) .
52: Some filesystems may not support
53: .I getdirentries
54: with buffers smaller than this size.
55: .PP
56: The data in the buffer is a series of
57: .I dirent
58: structures each containing the following entries:
59: .PP
60: .RS
61: .ta +\w'unsigned\0short\0'u +\w'd_name[MAXNAMELEN + 1];\0'u
62: .nf
63: unsigned long d_fileno;
64: unsigned short d_reclen;
65: unsigned short d_namlen;
66: char d_name[MAXNAMELEN + 1]; /* see below */
67: .fi
68: .RE
69: .PP
70: The
71: .I d_fileno
72: entry is a number which is unique for each
73: distinct file in the filesystem.
74: Files that are linked by hard links (see
75: .IR link(2) )
76: have the same
77: .IR d_fileno .
78: The
79: .I d_reclen
80: entry is the length, in bytes, of the directory record.
81: The
82: .I d_name
83: entry contains a null terminated file name.
84: The
85: .I d_namlen
86: entry specifies the length of the file name excluding the null byte.
87: Thus the actual size of
88: .I d_name
89: may vary from 1 to \fBMAXNAMELEN + 1\fP.
90: .PP
91: Entries may be separated by extra space.
92: The
93: .I d_reclen
94: entry may be used as an offset from the start of a
95: .I dirent
96: structure to the next structure, if any.
97: .PP
98: The actual number of bytes transferred is returned.
99: The current position pointer associated with
100: .I fd
101: is set to point to the next block of entries.
102: The pointer may not advance by the number of bytes returned by
103: .IR getdirentries .
104: A value of zero is returned when
105: the end of the directory has been reached.
106: .PP
107: .I Getdirentries
108: writes the position of the block read into the location pointed to by
109: .IR basep .
110: Alternatively, the current position pointer may be set and retrieved by
111: .IR lseek(2) .
112: The current position pointer should only be set to a value returned by
113: .I lseek(2) ,
114: a value returned in the location pointed to by
115: .I basep ,
116: or zero.
117: .SH RETURN VALUE
118: If successful, the number of bytes actually transferred is returned.
119: Otherwise, a \-1 is returned and the global variable
120: .I errno
121: is set to indicate the error.
122: .SH ERRORS
123: .I Getdirentries
124: will fail if one or more of the following are true:
125: .TP 15
126: EBADF
127: \fIfd\fP is not a valid file descriptor open for reading.
128: .TP 15
129: EFAULT
130: Either \fIbuf\fP or \fIbasep\fP point outside the allocated address space.
131: .TP 15
132: EIO
133: An I/O error occurred while reading from or writing to the file system.
134: .SH "SEE ALSO"
135: open(2), lseek(2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.