diff options
-rw-r--r-- | src/ext4magic.c | 18 | ||||
-rw-r--r-- | src/magic_block_scan.c | 3 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/ext4magic.c b/src/ext4magic.c index 58037c6..56ff0d7 100644 --- a/src/ext4magic.c +++ b/src/ext4magic.c @@ -57,7 +57,7 @@ extern char *optarg; #include "block.h" - +extern char* magicfile = NULL; ext2_filsys current_fs = NULL; ext2_ino_t root, cwd; ext2fs_inode_bitmap imap = NULL ; @@ -739,6 +739,20 @@ if ((mode && magicscan) || disaster){ } mode |= INPUT_TIME; } + magicfile = malloc(64); + strncpy (magicfile,"/usr/share/misc/ext4magic",25); + retval = stat (magicfile, &filestat); + if (retval){ + strncpy (magicfile,"/usr/local/share/misc/ext4magic",31); + retval = stat (magicfile, &filestat); + } + if ((! retval) && (S_ISREG(filestat.st_mode) && (! access(magicfile,R_OK)))) { + printf("use magic-db on \"%s\"\n",magicfile); + } + else { + free(magicfile); + magicfile=NULL; + } } } @@ -1181,6 +1195,8 @@ errout: if (bmap) ext2fs_free_inode_bitmap(bmap); imap = NULL; bmap = NULL; + if (magicfile) free(magicfile); + magicfile = NULL; retval = ext2fs_close(current_fs); if (retval) { fprintf(stderr, "ext2fs_close\n"); diff --git a/src/magic_block_scan.c b/src/magic_block_scan.c index 8785c7e..000cf80 100644 --- a/src/magic_block_scan.c +++ b/src/magic_block_scan.c @@ -33,6 +33,7 @@ //#define DEBUG_MAGIC_SCAN extern ext2_filsys current_fs ; +extern char* magicfile; ext2fs_block_bitmap d_bmap = NULL ; @@ -1367,7 +1368,7 @@ blk[0] = 1; cookie = magic_open(MAGIC_MIME | MAGIC_NO_CHECK_COMPRESS | MAGIC_NO_CHECK_ELF | MAGIC_CONTINUE); cookie_f = magic_open(MAGIC_NO_CHECK_COMPRESS | MAGIC_NO_CHECK_ELF | MAGIC_RAW ); -if ((! cookie) || magic_load(cookie, NULL) || (! cookie_f) || magic_load(cookie_f, NULL)){ +if ((! cookie) || magic_load(cookie, magicfile) || (! cookie_f) || magic_load(cookie_f, magicfile)){ fprintf(stderr,"ERROR: can't find libmagic\n"); goto errout; } |