summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ext4magic.c18
-rw-r--r--src/magic_block_scan.c3
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;
}