summaryrefslogtreecommitdiffstats
path: root/src/testdisk.c
diff options
context:
space:
mode:
authorChristophe Grenier <[email protected]>2012-02-07 20:49:51 +0100
committerChristophe Grenier <[email protected]>2012-02-07 20:49:51 +0100
commit1121817a82bd69bd6074e3f60b1becce65a0fc0d (patch)
tree128191f34a3837f263f706749fa78760eb55fbe4 /src/testdisk.c
parentd0a66b4114abe05ffb9611d02491c92a28ce44a2 (diff)
TestDisk /list now displays the disk model, serial number, firmware version and hpa or dco presence if detected
Diffstat (limited to 'src/testdisk.c')
-rw-r--r--src/testdisk.c47
1 files changed, 35 insertions, 12 deletions
diff --git a/src/testdisk.c b/src/testdisk.c
index c5feca29..7855a8c4 100644
--- a/src/testdisk.c
+++ b/src/testdisk.c
@@ -65,6 +65,7 @@
#include "tdisksel.h"
#include "tlog.h"
#include "autoset.h"
+#include "hidden.h"
extern const arch_fnct_t arch_i386;
extern const arch_fnct_t arch_mac;
@@ -263,28 +264,50 @@ int main( int argc, char **argv )
/* Activate the cache */
for(element_disk=list_disk;element_disk!=NULL;element_disk=element_disk->next)
element_disk->disk=new_diskcache(element_disk->disk,testdisk_mode);
-#ifdef DJGPP
- for(element_disk=list_disk;element_disk!=NULL;element_disk=element_disk->next)
- {
- printf("%s\n",element_disk->disk->description(element_disk->disk));
- }
-#endif
if(safe==0)
hd_update_all_geometry(list_disk, verbose);
for(element_disk=list_disk;element_disk!=NULL;element_disk=element_disk->next)
{
- printf("%s, sector size=%u\n",element_disk->disk->description(element_disk->disk),element_disk->disk->sector_size);
+ disk_t *disk=element_disk->disk;
+ const int hpa_dco=is_hpa_or_dco(disk);
+ printf("%s\n", disk->description(disk));
+ printf("Sector size:%u\n", disk->sector_size);
+ if(disk->model!=NULL)
+ printf("Model: %s", disk->model);
+ if(disk->serial_no!=NULL)
+ printf(", S/N:%s", disk->serial_no);
+ if(disk->fw_rev!=NULL)
+ printf(", FW:%s", disk->fw_rev);
+ printf("\n");
+ if(hpa_dco!=0)
+ {
+ if(disk->sector_size!=0)
+ printf("size %llu sectors\n", (long long unsigned)(disk->disk_real_size/disk->sector_size));
+ if(disk->user_max!=0)
+ printf("user_max %llu sectors\n", (long long unsigned)disk->user_max);
+ if(disk->native_max!=0)
+ printf("native_max %llu sectors\n", (long long unsigned)(disk->native_max+1));
+ if(disk->dco!=0)
+ printf("dco %llu sectors\n", (long long unsigned)(disk->dco+1));
+ if(hpa_dco&1)
+ printf("Host Protected Area (HPA) present.\n");
+ if(hpa_dco&2)
+ printf("Device Configuration Overlay (DCO) present.\n");
+ }
+ printf("\n");
}
- printf("\n");
for(element_disk=list_disk;element_disk!=NULL;element_disk=element_disk->next)
{
- autodetect_arch(element_disk->disk);
+ disk_t *disk=element_disk->disk;
+ const int hpa_dco=is_hpa_or_dco(disk);
+ autodetect_arch(disk);
if(unit==UNIT_DEFAULT)
- autoset_unit(element_disk->disk);
+ autoset_unit(disk);
else
- element_disk->disk->unit=unit;
- interface_list(element_disk->disk, verbose, saveheader, create_backup);
+ disk->unit=unit;
+ interface_list(disk, verbose, saveheader, create_backup);
+ printf("\n");
}
delete_list_disk(list_disk);
return 0;