SCCS-vsn: sbin/fsck/main.c 2.7
-static char sccsid[] = "@(#)main.c 2.6 (Berkeley) %G%";
+static char sccsid[] = "@(#)main.c 2.7 (Berkeley) %G%";
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
int blkno;
int blksiz;
ino_t number;
int blkno;
int blksiz;
ino_t number;
+ enum {DONTKNOW, NOFIX, FIX} fix;
dirp.blksiz = blksiz;
if (dirp.number != dnum) {
dirp.number = dnum;
dirp.blksiz = blksiz;
if (dirp.number != dnum) {
dirp.number = dnum;
}
for (dp = readdir(&dirp); dp != NULL; dp = readdir(&dirp)) {
dsize = dp->d_reclen;
}
for (dp = readdir(&dirp); dp != NULL; dp = readdir(&dirp)) {
dsize = dp->d_reclen;
break;
dirp->loc += DIRBLKSIZ;
filsize -= DIRBLKSIZ;
break;
dirp->loc += DIRBLKSIZ;
filsize -= DIRBLKSIZ;
+ if (dirp->fix == DONTKNOW) {
pwarn("DIRECTORY %D CORRUPTED", dirp->number);
pwarn("DIRECTORY %D CORRUPTED", dirp->number);
if (preen) {
printf(" (SALVAGED)\n");
if (preen) {
printf(" (SALVAGED)\n");
} else if (reply("SALVAGE") != 0)
} else if (reply("SALVAGE") != 0)
continue;
dp->d_reclen = DIRBLKSIZ;
dp->d_ino = 0;
continue;
dp->d_reclen = DIRBLKSIZ;
dp->d_ino = 0;
size = DIRBLKSIZ - (dirp->loc % DIRBLKSIZ);
dirp->loc += size;
filsize -= size;
size = DIRBLKSIZ - (dirp->loc % DIRBLKSIZ);
dirp->loc += size;
filsize -= size;
+ if (dirp->fix == DONTKNOW) {
pwarn("DIRECTORY %D CORRUPTED", dirp->number);
pwarn("DIRECTORY %D CORRUPTED", dirp->number);
if (preen) {
printf(" (SALVAGED)\n");
if (preen) {
printf(" (SALVAGED)\n");
} else if (reply("SALVAGE") != 0)
} else if (reply("SALVAGE") != 0)
+ if (dirp->fix == FIX) {
dp->d_reclen += size;
dirty(&fileblk);
}
dp->d_reclen += size;
dirty(&fileblk);
}