/* @(#)dirdmp.c 1.2 90/01/03 NFS Rev 2 Testsuite
* 1.2 Lachman ONC Test Suite source
while ((dp
= readdir(dirp
)) != NULL
) ;
if ((fd
= open(name
, 0)) == -1) {
if (fstat(fd
, &sb
) == -1) {
if ((sb.st_mode & S_IFMT) != S_IFDIR) {
printf("not a directory\n");
printf("%s mode %o dir %o\n", name
, sb
.st_mode
, S_IFDIR
);
if (((dirp
= (DIR *)malloc(sizeof(DIR))) == NULL
) ||
((dirp
->dd_buf
= malloc(DIRBUF
)) == NULL
)) {
((dirp
->dd_buf
= malloc((int)sb
.st_blksize
)) == NULL
)) {
dirp
->dd_bsize
= sb
.st_blksize
;
* get next entry in a directory.
register struct dirent
*dp
;
register struct direct
*dp
;
dirp
->dd_size
= getdents(dirp
->dd_fd
,
dirp
->dd_size
= getdirentries(dirp
->dd_fd
,
dirp
->dd_buf
, dirp
->dd_bsize
, &dirp
->dd_bbase
);
if (dirp
->dd_size
<= 0) {
if (dirp
->dd_loc
>= dirp
->dd_size
) {
printf("EOB offset %d\n", tell(dirp
->dd_fd
));
dp
= (struct dirent
*)(dirp
->dd_buf
+ dirp
->dd_loc
);
dp
= (struct direct
*)(dirp
->dd_buf
+ dirp
->dd_loc
);
dirp
->dd_loc
+= dp
->d_reclen
;
printf("%5d %5ld %5d %s\n",
dirp
->dd_loc
, dp
->d_ino
, dp
->d_reclen
,
printf("%5d %5d %5d %5d %s\n",
dirp
->dd_loc
, dp
->d_fileno
, dp
->d_reclen
,
dp
->d_namlen
, dp
->d_name
);