| author | Christophe Grenier <grenier@cgsecurity.org> | 2010-06-22 13:35:57 (GMT) |
|---|---|---|
| committer | Christophe Grenier <grenier@cgsecurity.org> | 2010-06-22 13:35:57 (GMT) |
| commit | 8d5c9fc4384ed7ec72a2cba81f18e475a72979c7 (patch) | |
| tree | 4303b721a9ed47a3e182c7e701105a7cffa5e0c7 | |
| parent | bb9ec324b9d7aba3da3cd7f8174328757d124ea7 (diff) | |
PhotoRec: allow carving on non sector boundary (experimental)
| -rw-r--r-- | src/geometry.c | 2 | ||||
| -rw-r--r-- | src/pblocksize.c | 40 |
2 files changed, 23 insertions, 19 deletions
diff --git a/src/geometry.c b/src/geometry.c index 411c521..ff6ead8 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -248,7 +248,7 @@ static void change_geometry_ncurses(disk_t *disk_car) /* FIXME using 3*512=1536 as sector size and */ /* 63/3=21 for number of sectors is an easy way to test */ /* MS Backup internal blocksize is 256 bytes */ - if (tmp_val==256 || tmp_val==512 || tmp_val==1024 || tmp_val==2048 || tmp_val==4096 || tmp_val==3*512) { + if (tmp_val==256 || tmp_val==512 || tmp_val==1024 || tmp_val==2048 || tmp_val==4096 || tmp_val==3*512 || tmp_val==1) { disk_car->sector_size = tmp_val; if(cyl_modified==0) set_cylinders_from_size_up(disk_car); diff --git a/src/pblocksize.c b/src/pblocksize.c index 02742ee..35658fc 100644 --- a/src/pblocksize.c +++ b/src/pblocksize.c @@ -39,9 +39,10 @@ unsigned int menu_choose_blocksize(unsigned int blocksize, const unsigned int se { int command; unsigned int menu=0; - const char *optionsBlocksize="S51248736"; + const char *optionsBlocksize="BS51248736"; static const struct MenuItem menuBlocksize[]= { + {'B',"1",""}, {'S',"256",""}, {'5',"512",""}, {'1',"1024",""}, @@ -55,26 +56,28 @@ unsigned int menu_choose_blocksize(unsigned int blocksize, const unsigned int se }; switch(sector_size) { - case 512: optionsBlocksize+=1; break; - case 1024: optionsBlocksize+=2; break; - case 2048: optionsBlocksize+=3; break; - case 4096: optionsBlocksize+=4; break; - case 8192: optionsBlocksize+=5; break; - case 16384: optionsBlocksize+=6;break; - case 32768: optionsBlocksize+=7; break; - case 65536: optionsBlocksize+=8; break; + case 256: optionsBlocksize+=1; break; + case 512: optionsBlocksize+=2; break; + case 1024: optionsBlocksize+=3; break; + case 2048: optionsBlocksize+=4; break; + case 4096: optionsBlocksize+=5; break; + case 8192: optionsBlocksize+=6; break; + case 16384: optionsBlocksize+=7;break; + case 32768: optionsBlocksize+=8; break; + case 65536: optionsBlocksize+=9; break; } switch(blocksize) { - case 256: menu=0; break; - case 512: menu=1; break; - case 1024: menu=2; break; - case 2048: menu=3; break; - case 4096: menu=4; break; - case 8192: menu=5; break; - case 16384: menu=6; break; - case 32768: menu=7; break; - case 65536: menu=8; break; + case 1: menu=0; break; + case 256: menu=1; break; + case 512: menu=2; break; + case 1024: menu=3; break; + case 2048: menu=4; break; + case 4096: menu=5; break; + case 8192: menu=6; break; + case 16384: menu=7; break; + case 32768: menu=8; break; + case 65536: menu=9; break; } aff_copy(stdscr); wmove(stdscr,INTER_PARTITION_Y-1,0); @@ -83,6 +86,7 @@ unsigned int menu_choose_blocksize(unsigned int blocksize, const unsigned int se optionsBlocksize, MENU_VERT| MENU_BUTTON|MENU_VERT_WARN, &menu,NULL); switch(command) { + case 'B': blocksize=1; break; case 'S': blocksize=256; break; case '5': blocksize=512; break; case '1': blocksize=1024; break; |
