summaryrefslogtreecommitdiff
path: root/src/recover.c
diff options
context:
space:
mode:
authorrobi <robi>2010-06-19 18:53:52 +0000
committerrobi <robi>2010-06-19 18:53:52 +0000
commit70185b8d0a686f56b06f2a1b1f771284fa22f2ce (patch)
tree16b9596def7eb429ca6cee8446de91e6d6d1a090 /src/recover.c
parent972f26a10e5f0bacf12b2df2e9a00896b007e600 (diff)
enable debug
Diffstat (limited to 'src/recover.c')
-rw-r--r--src/recover.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/recover.c b/src/recover.c
index e12c675..b0dddd2 100644
--- a/src/recover.c
+++ b/src/recover.c
@@ -81,7 +81,7 @@ void recover_list(char *des_dir, char *input_file,__u32 t_after, __u32 t_before,
struct ext2_inode* r_inode;
r_item *item = NULL;
- f = fopen(input_file,"a+");
+ f = fopen(input_file,"r");
if (f) {
rewind(f);
maxlen = 512;
@@ -102,7 +102,9 @@ void recover_list(char *des_dir, char *input_file,__u32 t_after, __u32 t_before,
continue;
inode_nr = local_namei(NULL,filename,t_after,t_before,DELETED_OPT);
if(! inode_nr){
-// printf("no found %s\n",filename);
+#ifdef DEBUG
+ printf("Filename %s not found\n",filename);
+#endif
continue;
}
i_list = get_j_inode_list(current_fs->super, inode_nr);
@@ -113,19 +115,23 @@ void recover_list(char *des_dir, char *input_file,__u32 t_after, __u32 t_before,
if (! LINUX_S_ISDIR(r_inode->i_mode) )
recover_file(des_dir,"", filename, r_inode, inode_nr ,flag);
}
-// else
-// printf("no found %s\n",filename);
+#ifdef DEBUG
+ else
+ printf("no Inode found for %s\n",filename);
+#endif
if (i_list) ring_del(i_list);
}
-// else
-// printf("no filename found in : \"%s\"",lineptr);
+#ifdef DEBUG
+ else
+ printf("Filename not found in : \"%s\"",lineptr);
+#endif
}
}
}
errout:
- fclose(f);
+ if (f) fclose(f);
if (lineptr)
free(lineptr);
if (filename)
@@ -182,6 +188,10 @@ static int write_block ( ext2_filsys fs, blk_t *blocknr, e2_blkcnt_t blockcnt,
errcode_t retval;
int blocksize = fs->blocksize;
+#ifdef DEBUG
+ printf("%c",(ext2fs_test_block_bitmap ( fs->block_map, *blocknr ))? 'X' : 'O');
+#endif
+
if (((struct privat*)priv)->flag){
int allocated = ext2fs_test_block_bitmap ( fs->block_map, *blocknr );
if ( allocated ){
@@ -268,7 +278,12 @@ int recover_file( char* des_dir,char* pathname, char* filename, struct ext2_inod
struct utimbuf touchtime;
mode_t i_mode;
int major, minor, type;
-
+
+#ifdef DEBUG
+ printf("RECOVER : INODE=%ld FILENAME=%s/%s\n",inode_nr, pathname,filename);
+ dump_inode(stdout, "",inode_nr, (struct ext2_inode *)inode, 0);
+#endif
+
p1 = pathname;
while (*p1 == '/') p1++;
helpname = malloc(strlen(des_dir) + 15);
@@ -335,6 +350,9 @@ int recover_file( char* des_dir,char* pathname, char* filename, struct ext2_inod
priv.error = 0;
// iterate Data Blocks and if not allocated, write to file
retval = local_block_iterate3 ( current_fs, *inode, BLOCK_FLAG_DATA_ONLY, NULL, write_block, &priv );
+#ifdef DEBUG
+ printf("\n");
+#endif
if (retval || priv.error){
// error or blocks allocated , we delete the tempfile and goto out
close(priv.fd);