diff options
author | robi <robi> | 2010-07-23 23:03:46 +0000 |
---|---|---|
committer | robi <robi> | 2010-07-23 23:03:46 +0000 |
commit | 79c1f7fb7061e1c2350c41e14be82605e7c21e34 (patch) | |
tree | e363b6f2b3ee10b4141ef84ac99ede6fbafa4b39 /src | |
parent | 0e1df704d554e89452bc3769f994b54ec14ac4bb (diff) |
Bug 17387
Diffstat (limited to 'src')
-rw-r--r-- | src/inode.c | 2 | ||||
-rw-r--r-- | src/recover.c | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/src/inode.c b/src/inode.c index 1849420..487ca37 100644 --- a/src/inode.c +++ b/src/inode.c @@ -474,7 +474,7 @@ void dump_inode(FILE *out, const char *prefix, } fprintf(out, "%sDevice major/minor number: %02d:%02d (hex %02x:%02x)\n\n", devnote, major, minor, major, minor); - } else if (do_dump_blocks) { + } else if (do_dump_blocks && !(inode->i_dtime)) { if (inode->i_flags & EXT4_EXTENTS_FL) local_dump_extents(out, prefix, inode, DUMP_LEAF_EXTENTS, 0, 0); diff --git a/src/recover.c b/src/recover.c index b0dddd2..3394e4e 100644 --- a/src/recover.c +++ b/src/recover.c @@ -380,8 +380,7 @@ int recover_file( char* des_dir,char* pathname, char* filename, struct ext2_inod //symbolic link case LINUX_S_IFLNK : - if(inode->i_blocks){ -//FIXME: not work if linkname bigger as the blocksize + if (ext2fs_inode_data_blocks(current_fs,inode)){ buf = malloc(current_fs->blocksize); if (buf) { priv.buf = buf; @@ -396,7 +395,7 @@ int recover_file( char* des_dir,char* pathname, char* filename, struct ext2_inod else { int i; - if(! inode->i_size || (inode->i_size > 60)) + if(! inode->i_size || (inode->i_size >= 60)) goto errout; buf = malloc(inode->i_size + 1); linkname = (char*) &(inode->i_block[0]); @@ -507,7 +506,7 @@ int check_file_recover(struct ext2_inode *inode){ stat.allocated = 0; stat.not_allocated = 0; - if (! inode->i_blocks) + if ((! inode->i_blocks) || (LINUX_S_ISLNK(inode->i_mode) && (inode->i_size < EXT2_N_BLOCKS*4))) retval = 100; else{ retval = local_block_iterate3 ( current_fs, *inode, BLOCK_FLAG_DATA_ONLY, NULL, check_block, &stat ); |