Mercurial > audlegacy-plugins
changeset 1921:31e9908cf91e
experimental patch to use libmagic for mimetype support
author | William Pitcock <nenolod@atheme.org> |
---|---|
date | Sun, 30 Sep 2007 11:44:20 -0500 |
parents | b37cea7ef4a9 |
children | e4eb5b8fd2be c276e2b74646 |
files | src/stdio/Makefile src/stdio/stdio.c |
diffstat | 2 files changed, 27 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/stdio/Makefile Thu Sep 27 13:06:17 2007 -0500 +++ b/src/stdio/Makefile Sun Sep 30 11:44:20 2007 -0500 @@ -8,4 +8,4 @@ CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${DBUS_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PANGO_CFLAGS} ${ARCH_DEFINES} ${XML_CPPFLAGS} -I../../intl -I../.. CFLAGS += ${PLUGIN_CFLAGS} -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${PANGO_LIBS} ${XML_LIBS} +LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${PANGO_LIBS} ${XML_LIBS} -lmagic
--- a/src/stdio/stdio.c Thu Sep 27 13:06:17 2007 -0500 +++ b/src/stdio/stdio.c Sun Sep 30 11:44:20 2007 -0500 @@ -27,6 +27,8 @@ #include <string.h> +#include <magic.h> + static gchar * vfs_stdio_urldecode_path(const gchar * encoded_path) { @@ -249,6 +251,28 @@ return s.st_size; } +static magic_t mdb_handle = NULL; + +gchar * +stdio_vfs_metadata_impl(VFSFile *file, const gchar *field) +{ + if (!g_ascii_strcasecmp(field, "content-type")) + { + gchar *decpath; + const gchar *out; + + if (mdb_handle == NULL) + mdb_handle = magic_open(MAGIC_MIME); + + decpath = vfs_stdio_urldecode_path(file->uri); + out = magic_file(mdb_handle, decpath); + + return g_strdup(out); + } + + return NULL; +} + VFSConstructor file_const = { "file://", stdio_vfs_fopen_impl, @@ -262,7 +286,8 @@ stdio_vfs_ftell_impl, stdio_vfs_feof_impl, stdio_vfs_truncate_impl, - stdio_vfs_fsize_impl + stdio_vfs_fsize_impl, + stdio_vfs_metadata_impl }; static void init(void)