summaryrefslogtreecommitdiffstats
path: root/dir.c
diff options
context:
space:
mode:
authorrockiec <rockiec@codeaurora.org>2013-01-06 19:28:35 +0800
committerLinux Build Service Account <lnxbuild@localhost>2014-11-04 08:23:20 -0700
commit112b49fd9ce23d5da9510f74762749efbd558caa (patch)
tree5d9fd5fcc7be7c3412beda1101b5d5563508f60e /dir.c
parent48e6511bc992aff05c3458b73fc9684d675d3aff (diff)
downloadandroid_external_fsck_msdos-112b49fd9ce23d5da9510f74762749efbd558caa.tar.gz
android_external_fsck_msdos-112b49fd9ce23d5da9510f74762749efbd558caa.tar.bz2
android_external_fsck_msdos-112b49fd9ce23d5da9510f74762749efbd558caa.zip
Enable files with invalid end cluster to be deleted
This allow use to remove some damaged files Change-Id: If7d2ef06a6f47298cd7be48982a78d25c5be8231
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/dir.c b/dir.c
index c3a485a..2d52492 100644
--- a/dir.c
+++ b/dir.c
@@ -897,13 +897,16 @@ readDosDirSection(int f, struct bootblock *boot,
else{
fsck_warn("can't find cluster chain(head:0x%x) of file:%s \n",dirent.head,fullpath(&dirent));
if (vallfn || invlfn) {
- fsck_warn("Invalid long directory deleted\n");
+ fsck_warn("Invalid long directory\n");
mod |= removede(f, boot, fat,invlfn ? invlfn : vallfn, p,invlfn ? invcl : valcl, -1, 0,fullpath(dir), 3);
} else {
- fsck_warn("Invalid short directory deleted\n");
- *p = SLOT_DELETED;
+ fsck_warn("Invalid short directory\n");
+ if(ask(1, "Delete")){
+ *p = SLOT_DELETED;
+ mod |= THISMOD|FSDIRMOD;
+ }else
+ mod |= FSERROR;
}
- return FSDIRMOD;
}
}
vallfn = NULL; /* not used any longer */