- bread(fsbtodb(sblock, d), (char *)dblk, size);
- for(i=0; i < DIRPB(sblock); i++) {
- in = dblk[i].d_ino;
- if(in == 0)
+ bread(fsbtodb(sblock, d), dblk, size);
+ if (filesize > size)
+ filesize = size;
+ for (loc = 0; loc < filesize; ) {
+ dp = (struct direct *)(dblk + loc);
+ if (dp->d_reclen == 0) {
+ msg("corrupted directory, inumber %d\n", ino);
+ break;
+ }
+ loc += dp->d_reclen;
+ if(dp->d_ino == 0)