I've been trying to use magic.h
and magiclib
in my program to help with file type identification. However when I try compiling the program it states magic_open
, MAGIC_MIME
and MAGIC_CHECK
are undeclared causing an error.
I've tried the following command (magicTest.c
being my program)
gcc magicTest.c -o magicTest -lmagic
without success
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include </usr/include/linux/magic.h>
int main(){
struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
magic_load(magic, NULL);
printf("magic output: '%s'\n", magic_file(magic, "myText"));
return 0;
}
Below is the actual errors and output i'm receiving
magicTest.c: In function ‘main’:
magicTest.c:7:30: warning: implicit declaration of function ‘magic_open’ [-Wimplicit-function-declaration]
struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
^
magicTest.c:7:41: error: ‘MAGIC_MIME’ undeclared (first use in this function)
struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
^
magicTest.c:7:41: note: each undeclared identifier is reported only once for each function it appears in
magicTest.c:7:52: error: ‘MAGIC_CHECK’ undeclared (first use in this function)
struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
^
magicTest.c:8:4: warning: implicit declaration of function ‘magic_load’ [-Wimplicit-function-declaration]
magic_load(magic, NULL);
^
magicTest.c:9:35: warning: implicit declaration of function ‘magic_file’ [-Wimplicit-function-declaration]
printf("magic output: '%s'\n", magic_file(magic, "myText"));
^
magicTest.c:9:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
printf("magic output: '%s'\n", magic_file(magic, "myText"));
Any help would be greatly appreciated!
EDIT
after running the command as jww suggested, shown below:
find /usr -name magic.h 2>/dev/null
My output is:
/usr/arm-linux-gnueabi/include/linux/magic.h
/usr/arm-linux-gnueabihf/include/linux/magic.h
/usr/include/magic.h
/usr/include/linux/magic.h
/usr/include/ImageMagick-6/magick/magic.h
/usr/src/linux-headers-4.13.0-39/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-37/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-38/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-32/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-41/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-36/include/uapi/linux/magic.h
Thanks again!