/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1985-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* David Korn <[email protected]> *18* Phong Vo <[email protected]> *19* *20***********************************************************************/21#pragma prototyped22/*23* readdir24*25* read from directory stream26*27* NOTE: directory entries must fit within DIRBLKSIZ boundaries28*/2930#include "dirlib.h"3132#if _dir_ok3334NoN(readdir)3536#else3738struct dirent*39readdir(register DIR* dirp)40{41register struct dirent* dp;4243for (;;)44{45if (dirp->dd_loc >= dirp->dd_size)46{47if (dirp->dd_size < 0) return(0);48dirp->dd_loc = 0;49if ((dirp->dd_size = getdents(dirp->dd_fd, dirp->dd_buf, DIRBLKSIZ)) <= 0)50return(0);51}52dp = (struct dirent*)((char*)dirp->dd_buf + dirp->dd_loc);53if (dp->d_reclen <= 0) return(0);54dirp->dd_loc += dp->d_reclen;55if (dp->d_fileno) return(dp);56}57/*NOTREACHED*/58}5960#endif616263