Fork me on GitHub

08 Dec 2009 Mimetype d'un fichier en C

Tags: dev c

Obtenir le mimetype d’un fichier en C

La lib magic est parfaite pour ça. man 3 libmagic sous FreeBSD.

Petit exemple:

BSDmakefile:

PROG=           mimetype
LDFLAGS+=       -lmagic
CFLAGS+=        -Wall -g -ggdb3
NO_MAN=         yes

.include <bsd.prog.mk>

Code:

#include <magic.h>
#include <stdio.h>
#include <stdlib.h>
#include <err.h>

int
main(int argc, char *argv[])
{
    const char* program_name = argv[0];
    char *filename = argv[1];

    if (filename == NULL) {
        fprintf(stderr, "Usage: %s file\n", program_name);
        return(1);
    }

    struct magic_set *magic = magic_open(MAGIC_MIME_TYPE);
    if (magic == NULL)
        err(1, "magic_set");

    magic_load(magic, NULL);

    printf("%s: %s\n", filename, magic_file(magic, filename));

    magic_close(magic);

    return(0);
}