[Xfce4-commits] [apps/ristretto] 01/01: link against and get MIME type form libmagic

noreply at xfce.org noreply at xfce.org
Tue Oct 11 15:33:36 CEST 2016


This is an automated email from the git hooks/post-receive script.

f2404 pushed a commit to branch master
in repository apps/ristretto.

commit 2640c26d9b5b4332db8230ba82337ff7d97fb0bd
Author: Christian Hesse <mail at eworm.de>
Date:   Tue Oct 11 15:04:23 2016 +0200

    link against and get MIME type form libmagic
    
    Signed-off-by: Christian Hesse <mail at eworm.de>
    Signed-off-by: Igor <f2404 at yandex.ru>
---
 configure.ac.in |  4 ++++
 src/Makefile.am |  3 ++-
 src/file.c      | 33 ++++++++++++++++++++++++++++++++-
 3 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/configure.ac.in b/configure.ac.in
index 6044813..34f4909 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -68,6 +68,10 @@ XDT_CHECK_PACKAGE([CAIRO], [cairo], [1.8.0])
 
 XDT_CHECK_LIBX11()
 
+AC_CHECK_HEADERS([magic.h],, [libmagic=false])
+AC_CHECK_LIB(magic, [magic_open], [MAGIC_LIBS="-lmagic"],[libmagic=false])
+AC_SUBST(MAGIC_LIBS)
+
 AC_CHECK_LIBM
 AC_SUBST(LIBM)
 
diff --git a/src/Makefile.am b/src/Makefile.am
index 4f55735..36a31dc 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -53,7 +53,8 @@ ristretto_LDADD = \
 	$(LIBXFCE4UTIL_LIBS) \
 	$(LIBXFCE4UI_LIBS) \
 	$(LIBX11_LIBS) \
-	$(LIBM)
+	$(LIBM) \
+	$(MAGIC_LIBS)
 
 INCLUDES = \
 	-I${top_srcdir}
diff --git a/src/file.c b/src/file.c
index 3a352a5..7caf0c5 100644
--- a/src/file.c
+++ b/src/file.c
@@ -26,6 +26,10 @@
 #include "file.h"
 #include "thumbnailer.h"
 
+#if HAVE_MAGIC_H
+#include <magic.h>
+#endif
+
 static guint rstto_thumbnail_size[] =
 {
     THUMBNAIL_SIZE_VERY_SMALL_SIZE,
@@ -394,9 +398,35 @@ rstto_file_get_collate_key ( RsttoFile *r_file )
 const gchar *
 rstto_file_get_content_type ( RsttoFile *r_file )
 {
-    GFileInfo *file_info = NULL;
     const gchar *content_type;
 
+#if HAVE_MAGIC_H
+    magic_t magic = NULL;
+
+    if ((magic = magic_open(MAGIC_MIME_TYPE)) == NULL)
+    {
+        fprintf(stderr, "unable to initialize magic library\n");
+        return NULL;
+    }
+
+    if (magic_load(magic, NULL) != 0)
+    {
+        fprintf(stderr, "cannot load magic database: %s\n", magic_error(magic));
+        magic_close(magic);
+        return NULL;
+    }
+
+    content_type = magic_file(magic, rstto_file_get_path(r_file));
+
+    if (NULL != content_type)
+    {
+        r_file->priv->content_type = g_strdup (content_type);
+    }
+
+    magic_close(magic);
+#else
+    GFileInfo *file_info = NULL;
+
     if ( NULL == r_file->priv->content_type )
     {
         file_info = g_file_query_info (
@@ -415,6 +445,7 @@ rstto_file_get_content_type ( RsttoFile *r_file )
             g_object_unref (file_info);
         }
     }
+#endif
 
     return (const gchar *)r_file->priv->content_type;
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list