+/*
+ * read an old stlye directory entry and present it as a new one
+ */
+#define ODIRSIZ 14
+
+struct olddirect {
+ ino_t d_ino;
+ char d_name[ODIRSIZ];
+ char d_spare[14];
+};
+
+/*
+ * get next entry in a directory.
+ */
+DIRECT *
+readdir(dirp)
+ register struct dirstuff *dirp;
+{
+ register struct olddirect *dp;
+ static DIRECT dir;
+
+ if (getblk(&fileblk, dirp->blkno, dirp->blksiz) == NULL) {
+ filsize -= dirp->blksiz - dirp->loc;
+ return NULL;
+ }
+ for (;;) {
+ if (filsize <= 0 || dirp->loc >= dirp->blksiz)
+ return NULL;
+ dp = (struct olddirect *)(dirblk.b_buf + dirp->loc);
+ dirp->loc += sizeof(struct olddirect);
+ filsize -= sizeof(struct olddirect);
+ if (dp->d_ino == 0)
+ continue;
+ dir.d_ino = dp->d_ino;
+ strncpy(dir.d_name, dp->d_name, ODIRSIZ);
+ dir.d_namlen = strlen(dir.d_name);
+ return (&dir);
+ }
+}
+