convert to use library routines to access directories
[unix-history] / usr / src / lib / libc / gen / readdir.c
CommitLineData
f20e5624
KM
1/* Copyright (c) 1982 Regents of the University of California */
2
0adb366f 3static char sccsid[] = "@(#)readdir.c 1.3 %G%";
f20e5624
KM
4
5#include <sys/types.h>
6#include <ndir.h>
7
8/*
9 * get next entry in a directory.
10 */
11struct direct *
12readdir(dirp)
13 register DIR *dirp;
14{
15 struct direct *dp;
16
17 for (;;) {
18 if (dirp->dd_loc == 0) {
7d09c938
KM
19 dirp->dd_size = read(dirp->dd_fd, dirp->dd_buf,
20 MAXDIRSIZ);
f20e5624
KM
21 if (dirp->dd_size <= 0)
22 return NULL;
23 }
24 if (dirp->dd_loc >= dirp->dd_size) {
25 dirp->dd_loc = 0;
26 continue;
27 }
7d09c938 28 dp = (struct direct *)(dirp->dd_buf + dirp->dd_loc);
f20e5624
KM
29 dirp->dd_loc += sizeof(struct direct);
30 if (dp->d_ino != 0)
31 return dp;
32 }
33}