/*******
* $Id: cmd_lostchains.c,v 1.2 2001/05/30 15:41:23 harbourn Exp $
* lostchains command for fatback
* displays a list of lost cluster chains
*******/
#include <stdio.h>
#include "fatback.h"
#include "interface.h"
#include "interface_data.h"
#include "fat.h"
#include "vbr.h"
#include "output.h"
/*
* Display a list of the lost cluster chains
*/
void cmd_lostchains(int argc, char *argv[])
{
unsigned long i, fatsize, num_clusts;
int found = 0;
fs_id_t fs_id;
/* determine what the last cluster will be */
fatsize = vbr->bytes_per_sect;
fatsize *= vbr->sects_per_fat;
fs_id = get_fs_type(vbr);
switch (get_fs_type(vbr)) {
case VBR_FAT12:
num_clusts = (fatsize * 2) / 3;
break;
case VBR_FAT16:
num_clusts = fatsize / 2;
break;
case VBR_FAT32:
num_clusts = fatsize / 4;
break;
default:
return;
}
display(NORMAL, "Lost cluster chains found starting at the following clusters:\n");
for (i = 2; i < num_clusts; i++)
if (clusts[i].fat_entry &&
!clusts[i].owner &&
(clusts[i].flags & CLUST_LOST) &&
!clust_is_resvd(&clusts[i]) &&
!clust_is_bad(&clusts[i])) {
flag_chain(clusts, i, CLUST_LOST);
display(NORMAL, "%lu\t", i);
found = 1;
}
if (!found)
display(NORMAL, "No lost cluster chains found.\n");
}
syntax highlighted by Code2HTML, v. 0.9.1