在 C 程序中包括 UNIX 实用程序"文件"



我正在用C编写一个程序,我需要知道文件的mime类型。

我还用谷歌搜索过,发现我的项目中必须包含"文件"UNIX实用程序。

file的源代码需要configuremake。如何将其包含在我的项目中?我是否必须将源代码的一部分裁剪成新的file.cfile.h

您想根据扩展猜测MIME类型,还是执行类似file的操作并检查标头?

要获得类似于file的功能,您不需要在项目中包含file。相反,你会想要使用file所基于的libmagic。不幸的是,我不知道有什么好的文档来源,但它非常简单。

magic_t magic = magic_open(MAGIC_MIME_TYPE);
magic_load(magic, NULL);
char *mime_type = magic_file(magic, "/path/to/file");
magic_close(magic);

感谢您的回答和评论。

我用这个解决了:

const char *w_get_mime(const char *arg, const char *file, int line_no)
{
    const char *magic_full;
    magic_t magic_cookie;
    if(arg == NULL)
        w_report_error("called with NULL argument.",file,line_no,__func__,0,1,error);
    else if ((magic_cookie = magic_open(MAGIC_MIME) ) == NULL) 
        report_error("unable to initialize magic library.",0,1,error);
    else if (magic_load(magic_cookie, NULL) != 0) 
    {
        magic_close(magic_cookie);
        snprintf(globals.err_buff,MAX_BUFF,"cannot load magic database - %s .",magic_error(magic_cookie));
        report_error(globals.err_buff,0,1,error);
    }
    magic_full = magic_file(magic_cookie, arg);
    magic_close(magic_cookie);
    return magic_full;
}

非常感谢!:)

最新更新