summaryrefslogtreecommitdiffstats
path: root/src/adv.c
diff options
context:
space:
mode:
authorChristophe Grenier <grenier@cgsecurity.org>2011-02-07 09:17:12 +0100
committerChristophe Grenier <grenier@cgsecurity.org>2011-02-07 09:17:12 +0100
commit237b0d53ac0d638ccbd8671293b6695436bad32c (patch)
treead4178e092a225fe05d9cf69aa312b0db41367e2 /src/adv.c
parent2d02984cbcde496a462304bb2bdcdfe5550c8e43 (diff)
Minimal support to list and copy files from exFAT for TestDisk.
PhotoRec:Can carve files from exFAT free space only
Diffstat (limited to 'src/adv.c')
-rw-r--r--src/adv.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/adv.c b/src/adv.c
index e470bae..45a22ad 100644
--- a/src/adv.c
+++ b/src/adv.c
@@ -54,6 +54,7 @@
#include "ext2_sbn.h"
#include "fat1x.h"
#include "fat32.h"
+#include "texfat.h"
#include "tntfs.h"
#include "thfs.h"
#include "askloc.h"
@@ -75,12 +76,18 @@ extern const arch_fnct_t arch_xbox;
#define DEFAULT_IMAGE_NAME "image.dd"
+static int is_exfat(const partition_t *partition);
static int is_hfs(const partition_t *partition);
static int is_hfsp(const partition_t *partition);
static int is_linux(const partition_t *partition);
static int is_part_hfs(const partition_t *partition);
static int is_part_hfsp(const partition_t *partition);
+static int is_exfat(const partition_t *partition)
+{
+ return (is_part_ntfs(partition) || partition->upart_type==UP_EXFAT);
+}
+
static int is_hfs(const partition_t *partition)
{
return (is_part_hfs(partition) || partition->upart_type==UP_HFS);
@@ -291,6 +298,8 @@ void interface_adv(disk_t *disk_car, const int verbose,const int dump_ind, const
options="tubcq";
else if(is_ntfs(partition))
options="tlubcq";
+ else if(is_exfat(partition))
+ options="tlbcq";
else if(is_linux(partition))
{
if(partition->upart_type==UP_EXT2)
@@ -440,6 +449,7 @@ void interface_adv(disk_t *disk_car, const int verbose,const int dump_ind, const
else if(is_part_ntfs(partition))
{
ntfs_boot_sector(disk_car, partition, verbose, expert, current_cmd);
+// exFAT_boot_sector(disk_car, partition, verbose, current_cmd);
rewrite=1;
}
else if(partition->upart_type==UP_FAT32)
@@ -457,6 +467,11 @@ void interface_adv(disk_t *disk_car, const int verbose,const int dump_ind, const
ntfs_boot_sector(disk_car, partition, verbose, expert, current_cmd);
rewrite=1;
}
+ else if(partition->upart_type==UP_EXFAT)
+ {
+ exFAT_boot_sector(disk_car, partition, verbose, current_cmd);
+ rewrite=1;
+ }
}
break;
case 'c':