tracker r2895 - in trunk: . data/dbus src/tracker-extract src/tracker-indexer tests/tracker-extract
- From: mr svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2895 - in trunk: . data/dbus src/tracker-extract src/tracker-indexer tests/tracker-extract
- Date: Fri, 6 Feb 2009 20:31:47 +0000 (UTC)
Author: mr
Date: Fri Feb 6 20:31:47 2009
New Revision: 2895
URL: http://svn.gnome.org/viewvc/tracker?rev=2895&view=rev
Log:
* src/tracker-extract/dummy.c:
* src/tracker-extract/tracker-extract-abw.c:
* src/tracker-extract/tracker-extract-exif.c:
* src/tracker-extract/tracker-extract-gstreamer-helix.c:
* src/tracker-extract/tracker-extract-gstreamer-tagreadbin.c:
* src/tracker-extract/tracker-extract-gstreamer.c:
* src/tracker-extract/tracker-extract-html.c:
* src/tracker-extract/tracker-extract-imagemagick.c:
* src/tracker-extract/tracker-extract-jpeg.c:
* src/tracker-extract/tracker-extract-libxine.c:
* src/tracker-extract/tracker-extract-mp3.c:
* src/tracker-extract/tracker-extract-mplayer.c:
* src/tracker-extract/tracker-extract-msoffice.c:
* src/tracker-extract/tracker-extract-oasis.c:
* src/tracker-extract/tracker-extract-pdf.c:
* src/tracker-extract/tracker-extract-playlist.c:
* src/tracker-extract/tracker-extract-png.c:
* src/tracker-extract/tracker-extract-ps.c:
* src/tracker-extract/tracker-extract-tiff.c:
* src/tracker-extract/tracker-extract-totem.c:
* src/tracker-extract/tracker-extract-vorbis.c:
* src/tracker-extract/tracker-extract-xmp.c:
* src/tracker-extract/tracker-xmp.c: Renamed 'Extractor' to 'Extract'
* data/dbus/Makefile.am:
* data/dbus/org.freedesktop.Tracker.Extract.service.in:
* data/dbus/tracker-extract.xml:
* src/tracker-extract/Makefile.am:
* src/tracker-extract/tracker-extract.[ch]: New DBus object with
introspection to request metadata for a file and mime type.
* src/tracker-indexer/Makefile.am:
* src/tracker-indexer/tracker-dbus.h:
* src/tracker-indexer/tracker-module-metadata-utils.c: Call the
new extracter over DBus.
* tests/tracker-extract/tracker-extract-jpeg-test.c:
* tests/tracker-extract/tracker-extract-mp3-test.c:
* tests/tracker-extract/tracker-extract-png-test.c:
* tests/tracker-extract/tracker-extract-test-utils.c:
* tests/tracker-extract/tracker-extract-test-utils.h:
* tests/tracker-extract/tracker-extract-testsuite-avi.c:
* tests/tracker-extract/tracker-extract-testsuite-generic.[ch]:
* tests/tracker-extract/tracker-extract-testsuite-jpeg.c:
* tests/tracker-extract/tracker-extract-testsuite-mp3.c:
* tests/tracker-extract/tracker-extract-testsuite-png.c:
* tests/tracker-extract/tracker-extract-testsuite-tiff.c:
* tests/tracker-extract/tracker-extract-tiff-test.c: Updated tests
accordingly.
Added:
trunk/data/dbus/org.freedesktop.Tracker.Extract.service.in
trunk/data/dbus/tracker-extract.xml
trunk/src/tracker-extract/tracker-extract.c
trunk/src/tracker-extract/tracker-extract.h
Modified:
trunk/ChangeLog
trunk/data/dbus/Makefile.am
trunk/src/tracker-extract/Makefile.am
trunk/src/tracker-extract/dummy.c
trunk/src/tracker-extract/tracker-escape.c
trunk/src/tracker-extract/tracker-escape.h
trunk/src/tracker-extract/tracker-extract-abw.c
trunk/src/tracker-extract/tracker-extract-exif.c
trunk/src/tracker-extract/tracker-extract-gstreamer-helix.c
trunk/src/tracker-extract/tracker-extract-gstreamer-tagreadbin.c
trunk/src/tracker-extract/tracker-extract-gstreamer.c
trunk/src/tracker-extract/tracker-extract-html.c
trunk/src/tracker-extract/tracker-extract-imagemagick.c
trunk/src/tracker-extract/tracker-extract-jpeg.c
trunk/src/tracker-extract/tracker-extract-libxine.c
trunk/src/tracker-extract/tracker-extract-mp3.c
trunk/src/tracker-extract/tracker-extract-mplayer.c
trunk/src/tracker-extract/tracker-extract-msoffice.c
trunk/src/tracker-extract/tracker-extract-oasis.c
trunk/src/tracker-extract/tracker-extract-pdf.c
trunk/src/tracker-extract/tracker-extract-playlist.c
trunk/src/tracker-extract/tracker-extract-png.c
trunk/src/tracker-extract/tracker-extract-ps.c
trunk/src/tracker-extract/tracker-extract-tiff.c
trunk/src/tracker-extract/tracker-extract-totem.c
trunk/src/tracker-extract/tracker-extract-vorbis.c
trunk/src/tracker-extract/tracker-extract-xmp.c
trunk/src/tracker-extract/tracker-main.c
trunk/src/tracker-extract/tracker-main.h
trunk/src/tracker-extract/tracker-xmp.c
trunk/src/tracker-indexer/Makefile.am
trunk/src/tracker-indexer/tracker-dbus.h
trunk/src/tracker-indexer/tracker-module-metadata-utils.c
trunk/tests/tracker-extract/tracker-extract-jpeg-test.c
trunk/tests/tracker-extract/tracker-extract-mp3-test.c
trunk/tests/tracker-extract/tracker-extract-png-test.c
trunk/tests/tracker-extract/tracker-extract-test-utils.c
trunk/tests/tracker-extract/tracker-extract-test-utils.h
trunk/tests/tracker-extract/tracker-extract-testsuite-avi.c
trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c
trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h
trunk/tests/tracker-extract/tracker-extract-testsuite-jpeg.c
trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
trunk/tests/tracker-extract/tracker-extract-testsuite-png.c
trunk/tests/tracker-extract/tracker-extract-testsuite-tiff.c
trunk/tests/tracker-extract/tracker-extract-tiff-test.c
Modified: trunk/data/dbus/Makefile.am
==============================================================================
--- trunk/data/dbus/Makefile.am (original)
+++ trunk/data/dbus/Makefile.am Fri Feb 6 20:31:47 2009
@@ -9,13 +9,15 @@
tracker-metadata.xml \
tracker-search.xml \
tracker-xesam.xml \
- tracker-indexer.xml
+ tracker-indexer.xml \
+ tracker-extract.xml
# Services
servicedir = $(DBUS_SERVICES_DIR)
service_in_files = \
org.freedesktop.Tracker.service.in \
- org.freedesktop.Tracker.Indexer.service.in
+ org.freedesktop.Tracker.Indexer.service.in \
+ org.freedesktop.Tracker.Extract.service.in
service_DATA = $(service_in_files:.service.in=.service)
%.service: %.service.in
Added: trunk/data/dbus/org.freedesktop.Tracker.Extract.service.in
==============================================================================
--- (empty file)
+++ trunk/data/dbus/org.freedesktop.Tracker.Extract.service.in Fri Feb 6 20:31:47 2009
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.freedesktop.Tracker.Extract
+Exec= libexecdir@/tracker-extract
Added: trunk/data/dbus/tracker-extract.xml
==============================================================================
--- (empty file)
+++ trunk/data/dbus/tracker-extract.xml Fri Feb 6 20:31:47 2009
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+<busconfig>
+ <policy context="default">
+ <deny send_interface="org.freedesktop.Tracker.Indexer"/>
+ <allow send_destination="org.freedesktop.Tracker"/>
+ </policy>
+</busconfig>
+-->
+
+<node name="/">
+ <interface name="org.freedesktop.Tracker.Extract">
+ <method name="GetMetadata">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+ <arg type="s" name="path" direction="in" />
+ <arg type="s" name="mime" direction="in" />
+ <arg type="a{ss}" name="values" direction="out" />
+ </method>
+ </interface>
+</node>
Modified: trunk/src/tracker-extract/Makefile.am
==============================================================================
--- trunk/src/tracker-extract/Makefile.am (original)
+++ trunk/src/tracker-extract/Makefile.am Fri Feb 6 20:31:47 2009
@@ -6,6 +6,7 @@
INCLUDES = \
-DLOCALEDIR=\""$(localedir)"\" \
-DMODULESDIR=\"$(modulesdir)\" \
+ -DG_LOG_DOMAIN=\"Tracker\" \
-DTRACKER_COMPILATION \
-I$(top_srcdir)/src \
$(EXEMPI_CFLAGS) \
@@ -225,7 +226,7 @@
$(GLIB2_LIBS)
dbus_sources = \
- tracker-extractor-glue.h
+ tracker-extract-glue.h
%-glue.h: $(top_srcdir)/data/dbus/%.xml
$(DBUSBINDINGTOOL) --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
Modified: trunk/src/tracker-extract/dummy.c
==============================================================================
--- trunk/src/tracker-extract/dummy.c (original)
+++ trunk/src/tracker-extract/dummy.c Fri Feb 6 20:31:47 2009
@@ -28,7 +28,7 @@
#include <glib.h>
#include <glib/gstdio.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
/*
* Prototype of the parsing function.
Modified: trunk/src/tracker-extract/tracker-escape.c
==============================================================================
--- trunk/src/tracker-extract/tracker-escape.c (original)
+++ trunk/src/tracker-extract/tracker-escape.c Fri Feb 6 20:31:47 2009
@@ -25,74 +25,3 @@
#include <glib.h>
#include "tracker-escape.h"
-
-gchar *
-tracker_escape_metadata (const gchar *str)
-{
- gchar *dest, *d;
-
- if (!str) {
- return NULL;
- }
-
- d = dest = g_malloc (strlen (str) * 4 + 1);
-
- while (*str) {
- switch (*str) {
- case '\n':
- *d++ = '\\';
- *d++ = 'n';
- break;
- case '\t':
- *d++ = '\\';
- *d++ = 't';
- break;
- case '\\':
- *d++ = '\\';
- *d++ = '\\';
- break;
- case '|':
- case ';':
- case '=':
- {
- /* special case fields separators */
- gchar *octal_str, *o;
-
- o = octal_str = g_strdup_printf ("\\%o", *str);
-
- while (*o) {
- *d++ = *o++;
- }
-
- g_free (octal_str);
- break;
- }
- default:
- *d++ = *str;
- break;
- }
-
- str++;
- }
-
- *d = '\0';
-
- return dest;
-}
-
-gchar *
-tracker_escape_metadata_printf (const gchar *format,
- ...)
-{
- va_list args;
- gchar *str, *escaped;
-
- va_start (args, format);
- str = g_strdup_vprintf (format, args);
- va_end (args);
-
- escaped = tracker_escape_metadata (str);
- g_free (str);
-
- return escaped;
-}
Modified: trunk/src/tracker-extract/tracker-escape.h
==============================================================================
--- trunk/src/tracker-extract/tracker-escape.h (original)
+++ trunk/src/tracker-extract/tracker-escape.h Fri Feb 6 20:31:47 2009
@@ -25,9 +25,9 @@
G_BEGIN_DECLS
-gchar *tracker_escape_metadata (const gchar *str);
-gchar *tracker_escape_metadata_printf (const gchar *format,
- ...);
+/* We used to escape strings before we used DBus */
+#define tracker_escape_metadata g_strdup
+#define tracker_escape_metadata_printf g_strdup_printf
G_END_DECLS
Modified: trunk/src/tracker-extract/tracker-extract-abw.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-abw.c (original)
+++ trunk/src/tracker-extract/tracker-extract-abw.c Fri Feb 6 20:31:47 2009
@@ -34,13 +34,13 @@
#include <glib.h>
#include <glib/gstdio.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-escape.h"
static void extract_abw (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "application/x-abiword", extract_abw },
{ NULL, NULL }
};
@@ -113,8 +113,8 @@
}
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-exif.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-exif.c (original)
+++ trunk/src/tracker-extract/tracker-extract-exif.c Fri Feb 6 20:31:47 2009
@@ -28,7 +28,7 @@
#include <libtracker-common/tracker-type-utils.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#define EXIF_DATE_FORMAT "%Y:%m:%d %H:%M:%S"
Modified: trunk/src/tracker-extract/tracker-extract-gstreamer-helix.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-gstreamer-helix.c (original)
+++ trunk/src/tracker-extract/tracker-extract-gstreamer-helix.c Fri Feb 6 20:31:47 2009
@@ -33,7 +33,7 @@
#include <gst/gst.h>
#include <gst/tag/tag.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-albumart.h"
typedef enum {
Modified: trunk/src/tracker-extract/tracker-extract-gstreamer-tagreadbin.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-gstreamer-tagreadbin.c (original)
+++ trunk/src/tracker-extract/tracker-extract-gstreamer-tagreadbin.c Fri Feb 6 20:31:47 2009
@@ -33,7 +33,7 @@
#include <gst/tag/tag.h>
#include <gst/interfaces/tagreader.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-albumart.h"
typedef enum {
Modified: trunk/src/tracker-extract/tracker-extract-gstreamer.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-gstreamer.c (original)
+++ trunk/src/tracker-extract/tracker-extract-gstreamer.c Fri Feb 6 20:31:47 2009
@@ -64,7 +64,7 @@
#include <libtracker-common/tracker-type-utils.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-albumart.h"
/*
Modified: trunk/src/tracker-extract/tracker-extract-html.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-html.c (original)
+++ trunk/src/tracker-extract/tracker-extract-html.c Fri Feb 6 20:31:47 2009
@@ -26,7 +26,7 @@
#include <libxml/HTMLparser.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-escape.h"
typedef enum {
@@ -41,7 +41,7 @@
static void extract_html (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "text/html", extract_html },
{ "application/xhtml+xml", extract_html },
{ NULL, NULL }
@@ -222,8 +222,8 @@
}
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-imagemagick.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-imagemagick.c (original)
+++ trunk/src/tracker-extract/tracker-extract-imagemagick.c Fri Feb 6 20:31:47 2009
@@ -29,7 +29,7 @@
#include <libtracker-common/tracker-os-dependant.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-xmp.h"
static void extract_imagemagick (const gchar *filename,
Modified: trunk/src/tracker-extract/tracker-extract-jpeg.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-jpeg.c (original)
+++ trunk/src/tracker-extract/tracker-extract-jpeg.c Fri Feb 6 20:31:47 2009
@@ -40,7 +40,7 @@
#include <libtracker-common/tracker-type-utils.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-xmp.h"
#ifdef HAVE_EXEMPI
@@ -56,7 +56,7 @@
static void extract_jpeg (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "image/jpeg", extract_jpeg },
{ NULL, NULL }
};
@@ -356,8 +356,8 @@
}
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-libxine.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-libxine.c (original)
+++ trunk/src/tracker-extract/tracker-extract-libxine.c Fri Feb 6 20:31:47 2009
@@ -17,11 +17,12 @@
* Boston, MA 02110-1301, USA.
*/
+#include "config.h"
+
#include <xine.h>
#include <glib.h>
-#include "tracker-extract.h"
-
+#include "tracker-main.h"
static void
add_uint32_info (GHashTable *metadata, char *key, uint32_t info)
Modified: trunk/src/tracker-extract/tracker-extract-mp3.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-mp3.c (original)
+++ trunk/src/tracker-extract/tracker-extract-mp3.c Fri Feb 6 20:31:47 2009
@@ -39,7 +39,7 @@
#include <sys/mman.h>
#endif /* G_OS_WIN32 */
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-albumart.h"
#include "tracker-escape.h"
@@ -276,7 +276,7 @@
{32000, 16000, 8000}
};
-static TrackerExtractorData extractor_data[] = {
+static TrackerExtractData extract_data[] = {
{ "audio/mpeg", extract_mp3 },
{ "audio/x-mp3", extract_mp3 },
{ NULL, NULL }
@@ -1531,8 +1531,8 @@
close(file);
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
- return extractor_data;
+ return extract_data;
}
Modified: trunk/src/tracker-extract/tracker-extract-mplayer.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-mplayer.c (original)
+++ trunk/src/tracker-extract/tracker-extract-mplayer.c Fri Feb 6 20:31:47 2009
@@ -28,13 +28,13 @@
#include <libtracker-common/tracker-os-dependant.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-escape.h"
static void extract_mplayer (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "audio/*", extract_mplayer },
{ "video/*", extract_mplayer },
{ NULL, NULL }
@@ -247,8 +247,8 @@
}
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-msoffice.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-msoffice.c (original)
+++ trunk/src/tracker-extract/tracker-extract-msoffice.c Fri Feb 6 20:31:47 2009
@@ -36,12 +36,12 @@
#include <libtracker-common/tracker-utils.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
static void extract_msoffice (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "application/msword", extract_msoffice },
{ "application/vnd.ms-*", extract_msoffice },
{ NULL, NULL }
@@ -222,8 +222,8 @@
gsf_shutdown ();
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-oasis.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-oasis.c (original)
+++ trunk/src/tracker-extract/tracker-extract-oasis.c Fri Feb 6 20:31:47 2009
@@ -26,7 +26,7 @@
#include <libtracker-common/tracker-os-dependant.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-escape.h"
typedef enum {
@@ -63,7 +63,7 @@
static void extract_oasis (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData extractor_data[] = {
+static TrackerExtractData extract_data[] = {
{ "application/vnd.oasis.opendocument.*", extract_oasis },
{ NULL, NULL }
};
@@ -243,8 +243,8 @@
}
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
- return extractor_data;
+ return extract_data;
}
Modified: trunk/src/tracker-extract/tracker-extract-pdf.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-pdf.c (original)
+++ trunk/src/tracker-extract/tracker-extract-pdf.c Fri Feb 6 20:31:47 2009
@@ -26,7 +26,7 @@
#include <glib.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-xmp.h"
#include <libtracker-common/tracker-utils.h>
@@ -34,7 +34,7 @@
static void extract_pdf (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "application/pdf", extract_pdf },
{ NULL, NULL }
};
@@ -114,8 +114,8 @@
g_object_unref (document);
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-playlist.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-playlist.c (original)
+++ trunk/src/tracker-extract/tracker-extract-playlist.c Fri Feb 6 20:31:47 2009
@@ -31,9 +31,10 @@
#include <glib/gstdio.h>
#include <gio/gio.h>
-#include "tracker-extract.h"
#include <totem-pl-parser.h>
+#include "tracker-main.h"
+
#define PLAYLIST_PROPERTY_NO_TRACKS "Playlist:Songs"
#define PLAYLIST_PROPERTY_DURATION "Playlist:Duration"
#define PLAYLIST_PROPERTY_CALCULATED "Playlist:ValidDuration"
@@ -50,7 +51,7 @@
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "audio/x-mpegurl", extract_playlist },
{ "audio/mpegurl", extract_playlist },
{ "audio/x-scpls", extract_playlist },
@@ -137,8 +138,8 @@
g_object_unref (pl);
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-png.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-png.c (original)
+++ trunk/src/tracker-extract/tracker-extract-png.c Fri Feb 6 20:31:47 2009
@@ -39,7 +39,7 @@
#include <libtracker-common/tracker-type-utils.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-xmp.h"
#include "tracker-escape.h"
@@ -70,7 +70,7 @@
{ NULL, NULL, NULL},
};
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "image/png", extract_png },
{ NULL, NULL }
};
@@ -267,8 +267,8 @@
}
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-ps.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-ps.c (original)
+++ trunk/src/tracker-extract/tracker-extract-ps.c Fri Feb 6 20:31:47 2009
@@ -37,7 +37,7 @@
#include <libtracker-common/tracker-type-utils.h>
#include <libtracker-common/tracker-os-dependant.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-escape.h"
#ifndef HAVE_GETLINE
@@ -59,7 +59,7 @@
static void extract_ps (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "application/x-gzpostscript", extract_ps_gz },
{ "application/postscript", extract_ps },
{ NULL, NULL }
@@ -354,8 +354,8 @@
g_unlink (gunzipped);
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-tiff.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-tiff.c (original)
+++ trunk/src/tracker-extract/tracker-extract-tiff.c Fri Feb 6 20:31:47 2009
@@ -29,7 +29,7 @@
#include <libtracker-common/tracker-type-utils.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-xmp.h"
#define XMP_NAMESPACE_LENGTH 29
@@ -57,7 +57,7 @@
GHashTable *metadata);
static gchar *date_to_iso8601 (gchar *date);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "image/tiff", extract_tiff },
{ NULL, NULL }
};
@@ -269,8 +269,8 @@
TIFFClose (image);
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-totem.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-totem.c (original)
+++ trunk/src/tracker-extract/tracker-extract-totem.c Fri Feb 6 20:31:47 2009
@@ -25,7 +25,7 @@
#include <libtracker-common/tracker-os-dependant.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-escape.h"
static gchar *tags[][2] = {
@@ -46,7 +46,7 @@
static void extract_totem (const gchar *filename,
GHashTable *metadata);
-static TrackerExtractorData data[] = {
+static TrackerExtractData data[] = {
{ "audio/*", extract_totem },
{ "video/*", extract_totem },
{ NULL, NULL }
@@ -83,8 +83,8 @@
}
}
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Modified: trunk/src/tracker-extract/tracker-extract-vorbis.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-vorbis.c (original)
+++ trunk/src/tracker-extract/tracker-extract-vorbis.c Fri Feb 6 20:31:47 2009
@@ -26,9 +26,7 @@
#include <glib.h>
#include <vorbis/vorbisfile.h>
-#include "tracker-extract.h"
-
-/*#include "tracker-utils.h"*/
+#include "tracker-main.h"
static struct {
char * name;
Modified: trunk/src/tracker-extract/tracker-extract-xmp.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-xmp.c (original)
+++ trunk/src/tracker-extract/tracker-extract-xmp.c Fri Feb 6 20:31:47 2009
@@ -21,31 +21,33 @@
#include <glib.h>
-#include "tracker-extract.h"
+#include "tracker-main.h"
#include "tracker-xmp.h"
#include "tracker-escape.h"
+static void extract_xmp (const gchar *filename,
+ GHashTable *metadata);
+
+static TrackerExtractData data[] = {
+ { "application/rdf+xml", extract_xmp },
+ { NULL, NULL }
+};
static void
-tracker_extract_xmp (const gchar* filename, GHashTable *metadata)
+extract_xmp (const gchar *filename,
+ GHashTable *metadata)
{
gchar *contents;
gsize length;
GError *error;
- if ( g_file_get_contents ( filename, &contents, &length, &error ) )
+ if (g_file_get_contents (filename, &contents, &length, &error)) {
tracker_read_xmp (contents, length, metadata);
+ }
}
-
-TrackerExtractorData data[] = {
- { "application/rdf+xml", tracker_extract_xmp },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
+TrackerExtractData *
+tracker_get_extract_data (void)
{
return data;
}
Added: trunk/src/tracker-extract/tracker-extract.c
==============================================================================
--- (empty file)
+++ trunk/src/tracker-extract/tracker-extract.c Fri Feb 6 20:31:47 2009
@@ -0,0 +1,375 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <gmodule.h>
+#include <gio/gio.h>
+
+#include <libtracker-common/tracker-dbus.h>
+
+#include "tracker-main.h"
+#include "tracker-dbus.h"
+#include "tracker-extract.h"
+
+#define TRACKER_EXTRACT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_EXTRACT, TrackerExtractPrivate))
+
+typedef struct {
+ GArray *extractors;
+} TrackerExtractPrivate;
+
+static void tracker_extract_finalize (GObject *object);
+
+G_DEFINE_TYPE(TrackerExtract, tracker_extract, G_TYPE_OBJECT)
+
+static void
+tracker_extract_class_init (TrackerExtractClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tracker_extract_finalize;
+
+ g_type_class_add_private (object_class, sizeof (TrackerExtractPrivate));
+}
+
+static void
+tracker_extract_init (TrackerExtract *object)
+{
+}
+
+static void
+tracker_extract_finalize (GObject *object)
+{
+ TrackerExtractPrivate *priv;
+
+ priv = TRACKER_EXTRACT_GET_PRIVATE (object);
+
+ G_OBJECT_CLASS (tracker_extract_parent_class)->finalize (object);
+}
+
+TrackerExtract *
+tracker_extract_new (void)
+{
+ TrackerExtract *object;
+ TrackerExtractPrivate *priv;
+ GDir *dir;
+ GError *error;
+ const gchar *name;
+ GArray *extractors;
+ GArray *generic_extractors;
+
+ if (!g_module_supported ()) {
+ g_error ("Modules are not supported for this platform");
+ return NULL;
+ }
+
+ extractors = g_array_sized_new (FALSE,
+ TRUE,
+ sizeof (TrackerExtractData),
+ 10);
+
+ /* This array is going to be used to store
+ * temporarily extractors with mimetypes such as "audio / *"
+ */
+ generic_extractors = g_array_sized_new (FALSE,
+ TRUE,
+ sizeof (TrackerExtractData),
+ 10);
+
+ error = NULL;
+ dir = g_dir_open (MODULESDIR, 0, &error);
+
+ if (!dir) {
+ g_error ("Error opening modules directory: %s", error->message);
+ g_error_free (error);
+ g_array_free (extractors, TRUE);
+ extractors = NULL;
+ g_array_free (generic_extractors, TRUE);
+ return NULL;
+ }
+
+ while ((name = g_dir_read_name (dir)) != NULL) {
+ TrackerExtractDataFunc func;
+ TrackerExtractData *data;
+ GModule *module;
+ gchar *module_path;
+
+ if (!g_str_has_suffix (name, "." G_MODULE_SUFFIX)) {
+ continue;
+ }
+
+ module_path = g_build_filename (MODULESDIR, name, NULL);
+
+ module = g_module_open (module_path, G_MODULE_BIND_LOCAL);
+
+ if (!module) {
+ g_warning ("Could not load module '%s': %s", name, g_module_error ());
+ g_free (module_path);
+ continue;
+ }
+
+ g_module_make_resident (module);
+
+ if (g_module_symbol (module, "tracker_get_extract_data", (gpointer *) &func)) {
+ data = (func) ();
+
+ while (data->mime) {
+ if (strchr (data->mime, '*') != NULL) {
+ g_array_append_val (generic_extractors, *data);
+ } else {
+ g_array_append_val (extractors, *data);
+ }
+
+ data++;
+ }
+ }
+
+ g_free (module_path);
+ }
+
+ /* Append the generic extractors at the end of
+ * the list, so the specific ones are used first
+ */
+ g_array_append_vals (extractors,
+ generic_extractors->data,
+ generic_extractors->len);
+ g_array_free (generic_extractors, TRUE);
+
+ /* Set extractors */
+ object = g_object_new (TRACKER_TYPE_EXTRACT, NULL);
+
+ priv = TRACKER_EXTRACT_GET_PRIVATE (object);
+
+ priv->extractors = extractors;
+
+ return object;
+}
+
+static void
+print_file_metadata_item (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ gchar *value_utf8;
+
+ g_return_if_fail (key != NULL);
+ g_return_if_fail (value != NULL);
+
+ value_utf8 = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
+
+ if (value_utf8) {
+ value_utf8 = g_strstrip (value_utf8);
+ tracker_dbus_request_comment (GPOINTER_TO_UINT (user_data),
+ " Found '%s'='%s'",
+ key,
+ value_utf8);
+ g_free (value_utf8);
+ }
+}
+
+static GHashTable *
+get_file_metadata (TrackerExtract *extract,
+ guint request_id,
+ const gchar *path,
+ const gchar *mime)
+{
+ GHashTable *values;
+ gchar *path_in_locale;
+ gchar *path_used;
+ gchar *mime_used = NULL;
+
+ path_used = g_strdup (path);
+ g_strstrip (path_used);
+
+ path_in_locale = g_filename_from_utf8 (path_used, -1, NULL, NULL, NULL);
+
+ if (!path_in_locale) {
+ g_warning ("Could not convert path:'%s' from UTF-8 to locale", path_used);
+ g_free (path_used);
+ return NULL;
+ }
+
+ if (!g_file_test (path_in_locale, G_FILE_TEST_EXISTS)) {
+ g_warning ("File does not exist '%s'", path_in_locale);
+ g_free (path_in_locale);
+ return NULL;
+ }
+
+ if (mime && *mime) {
+ mime_used = g_strdup (mime);
+ g_strstrip (mime_used);
+ } else {
+ GFile *file;
+
+ /* Try to guess mime type */
+ file = g_file_new_for_path (path_in_locale);
+
+ if (file) {
+ GFileInfo *info;
+ GError *error = NULL;
+ const gchar *attributes;
+
+ attributes =
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE;
+
+ info = g_file_query_info (file,
+ attributes,
+ G_FILE_QUERY_INFO_NONE,
+ NULL,
+ &error);
+
+ if (error) {
+ tracker_dbus_request_comment (request_id,
+ " Could not create GFileInfo for path:'%s', %s",
+ path_in_locale,
+ error ? error->message : "no error given");
+ g_error_free (error);
+ }
+
+ if (info) {
+ mime_used = g_strdup (g_file_info_get_content_type (info));
+ g_object_unref (info);
+ }
+
+ tracker_dbus_request_comment (request_id,
+ " Guessing mime type as '%s' for path:'%s'",
+ mime_used,
+ path_in_locale);
+
+ g_object_unref (file);
+ } else {
+ tracker_dbus_request_comment (request_id,
+ " Could not create GFile for path:'%s'",
+ path_in_locale);
+ }
+ }
+
+ values = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_free);
+
+ if (mime_used) {
+ TrackerExtractPrivate *priv;
+ TrackerExtractData *data;
+ guint i;
+
+ priv = TRACKER_EXTRACT_GET_PRIVATE (extract);
+
+ for (i = 0; i < priv->extractors->len; i++) {
+ data = &g_array_index (priv->extractors, TrackerExtractData, i);
+
+ if (g_pattern_match_simple (data->mime, mime_used)) {
+ (*data->extract) (path_in_locale, values);
+
+ if (g_hash_table_size (values) == 0) {
+ continue;
+ }
+
+ tracker_dbus_request_comment (request_id,
+ " Found %d metadata items",
+ g_hash_table_size (values));
+
+ g_free (path_in_locale);
+ g_free (path_used);
+ g_free (mime_used);
+
+ return values;
+ }
+ }
+
+ tracker_dbus_request_comment (request_id,
+ " Could not find any extractors to handle metadata type");
+ } else {
+ tracker_dbus_request_comment (request_id,
+ " No mime available, not extracting data");
+ }
+
+ g_free (path_in_locale);
+ g_free (path_used);
+
+ return NULL;
+}
+
+void
+tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
+ const gchar *path,
+ const gchar *mime)
+{
+ guint request_id;
+ GHashTable *values = NULL;
+
+ request_id = tracker_dbus_get_next_request_id ();
+
+ g_return_if_fail (path != NULL);
+
+ /* NOTE: Don't reset the timeout to shutdown here */
+ values = get_file_metadata (object, request_id, path, mime);
+
+ if (values) {
+ g_hash_table_foreach (values,
+ print_file_metadata_item,
+ GUINT_TO_POINTER (request_id));
+ g_hash_table_destroy (values);
+ }
+}
+
+void
+tracker_extract_get_metadata (TrackerExtract *object,
+ const gchar *path,
+ const gchar *mime,
+ DBusGMethodInvocation *context,
+ GError **error)
+{
+ guint request_id;
+ GHashTable *values = NULL;
+
+ request_id = tracker_dbus_get_next_request_id ();
+
+ tracker_dbus_async_return_if_fail (path != NULL, context);
+
+ tracker_dbus_request_new (request_id,
+ "DBus request to extract metadata, "
+ "path:'%s', mime:%s",
+ path,
+ mime);
+
+ tracker_main_shutdown_timeout_reset ();
+
+ values = get_file_metadata (object, request_id, path, mime);
+
+ if (values) {
+ g_hash_table_foreach (values,
+ print_file_metadata_item,
+ GUINT_TO_POINTER (request_id));
+ }
+
+ dbus_g_method_return (context, values);
+
+ if (values) {
+ g_hash_table_destroy (values);
+ }
+
+ tracker_dbus_request_success (request_id);
+}
Added: trunk/src/tracker-extract/tracker-extract.h
==============================================================================
--- (empty file)
+++ trunk/src/tracker-extract/tracker-extract.h Fri Feb 6 20:31:47 2009
@@ -0,0 +1,67 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __TRACKERD_EXTRACT_H__
+#define __TRACKERD_EXTRACT_H__
+
+#include <glib-object.h>
+
+#include <dbus/dbus-glib-bindings.h>
+
+#define TRACKER_EXTRACT_SERVICE "org.freedesktop.Tracker.Extract"
+#define TRACKER_EXTRACT_PATH "/org/freedesktop/Tracker/Extract"
+#define TRACKER_EXTRACT_INTERFACE "org.freedesktop.Tracker.Extract"
+
+G_BEGIN_DECLS
+
+#define TRACKER_TYPE_EXTRACT (tracker_extract_get_type ())
+#define TRACKER_EXTRACT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), TRACKER_TYPE_EXTRACT, TrackerExtract))
+#define TRACKER_EXTRACT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_TYPE_EXTRACT, TrackerExtractClass))
+#define TRACKER_IS_EXTRACT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), TRACKER_TYPE_EXTRACT))
+#define TRACKER_IS_EXTRACT_CLASS(klass)(G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_TYPE_EXTRACT))
+#define TRACKER_EXTRACT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_TYPE_EXTRACT, TrackerExtractClass))
+
+typedef struct TrackerExtract TrackerExtract;
+typedef struct TrackerExtractClass TrackerExtractClass;
+
+struct TrackerExtract {
+ GObject parent;
+};
+
+struct TrackerExtractClass {
+ GObjectClass parent;
+};
+
+GType tracker_extract_get_type (void);
+TrackerExtract *tracker_extract_new (void);
+void tracker_extract_get_metadata (TrackerExtract *object,
+ const gchar *path,
+ const gchar *mime,
+ DBusGMethodInvocation *context,
+ GError **error);
+
+/* Not DBus API, convenience for command line */
+void tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
+ const gchar *path,
+ const gchar *mime);
+
+G_END_DECLS
+
+#endif /* __TRACKERD_EXTRACT_H__ */
Modified: trunk/src/tracker-extract/tracker-main.c
==============================================================================
--- trunk/src/tracker-extract/tracker-main.c (original)
+++ trunk/src/tracker-extract/tracker-main.c Fri Feb 6 20:31:47 2009
@@ -23,345 +23,74 @@
#define _XOPEN_SOURCE
#include <time.h>
-
-#include <stdio.h>
-#include <string.h>
#include <stdlib.h>
-#include <errno.h>
#include <locale.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
#include <glib.h>
#include <glib-object.h>
#include <glib/gi18n.h>
-#include <gmodule.h>
#ifndef G_OS_WIN32
#include <sys/resource.h>
#endif
#include <libtracker-common/tracker-os-dependant.h>
-#include <libtracker-common/tracker-type-utils.h>
-#include <libtracker-common/tracker-utils.h>
#include <libtracker-common/tracker-thumbnailer.h>
+#include "tracker-main.h"
+#include "tracker-dbus.h"
#include "tracker-extract.h"
-#define MAX_MEM 128
-#define MAX_MEM_AMD64 512
-
-
-#undef DISABLE_DEBUG
-
-#ifdef G_HAVE_ISO_VARARGS
-# ifdef DISABLE_DEBUG
-# define debug(...)
-# else
-# define debug(...) debug_impl (__VA_ARGS__)
-# endif
-#elif defined(G_HAVE_GNUC_VARARGS)
-# if DISABLE_DEBUG
-# define debug(fmt...)
-# else
-# define debug(fmt...) debug_impl(fmt)
-# endif
-#else
-# if DISABLE_DEBUG
-# define debug(x)
-# else
-# define debug debug_impl
-# endif
-#endif
-
-static GArray *extractors = NULL;
-static guint shutdown_timeout_id = 0;
-
-#ifndef DISABLE_DEBUG
-
-static void
-debug_impl (const gchar *msg, ...)
-{
- va_list args;
-
- va_start (args, msg);
- g_vfprintf (stderr, msg, args);
- va_end (args);
-
- g_fprintf (stderr, "\n");
-}
-
-#endif /* DISABLE_DEBUG */
-
-static void
-initialize_extractors (void)
-{
- GDir *dir;
- GError *error;
- const gchar *name;
- GArray *generic_extractors;
-
- if (extractors != NULL) {
- return;
- }
-
- if (!g_module_supported ()) {
- g_error ("Modules are not supported for this platform");
- return;
- }
-
- error = NULL;
-
- extractors = g_array_sized_new (FALSE,
- TRUE,
- sizeof (TrackerExtractorData),
- 10);
-
- /* This array is going to be used to store
- * temporarily extractors with mimetypes such as "audio / *"
- */
- generic_extractors = g_array_sized_new (FALSE,
- TRUE,
- sizeof (TrackerExtractorData),
- 10);
-
- dir = g_dir_open (MODULESDIR, 0, &error);
-
- if (!dir) {
- g_error ("Error opening modules directory: %s", error->message);
- g_error_free (error);
- g_array_free (extractors, TRUE);
- extractors = NULL;
- g_array_free (generic_extractors, TRUE);
- return;
- }
-
- while ((name = g_dir_read_name (dir)) != NULL) {
- GModule *module;
- gchar *module_path;
- TrackerExtractorDataFunc func;
- TrackerExtractorData *data;
-
- if (!g_str_has_suffix (name, "." G_MODULE_SUFFIX)) {
- continue;
- }
-
- module_path = g_build_filename (MODULESDIR, name, NULL);
-
- module = g_module_open (module_path, G_MODULE_BIND_LOCAL);
-
- if (!module) {
- g_warning ("Could not load module '%s': %s", name, g_module_error ());
- g_free (module_path);
- continue;
- }
-
- g_module_make_resident (module);
-
- if (g_module_symbol (module, "tracker_get_extractor_data", (gpointer *) &func)) {
- data = (func) ();
-
- while (data->mime) {
- if (strchr (data->mime, '*') != NULL) {
- g_array_append_val (generic_extractors, *data);
- } else {
- g_array_append_val (extractors, *data);
- }
-
- data++;
- }
- }
-
- g_free (module_path);
- }
-
- /* Append the generic extractors at the end of
- * the list, so the specific ones are used first
- */
- g_array_append_vals (extractors,
- generic_extractors->data,
- generic_extractors->len);
- g_array_free (generic_extractors, TRUE);
-}
-
-static GHashTable *
-tracker_get_file_metadata (const gchar *uri,
- const gchar *mime)
-{
- GHashTable *meta_table;
- gchar *uri_in_locale;
-
- if (!uri) {
- return NULL;
- }
-
- debug ("Extractor - Getting metadata from file:'%s' with mime:'%s'",
- uri,
- mime);
-
- uri_in_locale = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (!uri_in_locale) {
- g_warning ("Could not convert uri:'%s' from UTF-8 to locale", uri);
- return NULL;
- }
-
- if (!g_file_test (uri_in_locale, G_FILE_TEST_EXISTS)) {
- g_warning ("File does not exist '%s'", uri_in_locale);
- g_free (uri_in_locale);
- return NULL;
- }
-
- meta_table = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_free);
-
- if (mime) {
- guint i;
- TrackerExtractorData *data;
-
- for (i = 0; i < extractors->len; i++) {
- data = &g_array_index (extractors, TrackerExtractorData, i);
-
- if (g_pattern_match_simple (data->mime, mime)) {
- (*data->extractor) (uri_in_locale, meta_table);
-
- if (g_hash_table_size (meta_table) == 0) {
- continue;
- }
-
- g_free (uri_in_locale);
-
- debug ("Extractor - Found %d metadata items",
- g_hash_table_size (meta_table));
-
- return meta_table;
- }
- }
-
- debug ("Extractor - Could not find any extractors to handle metadata type.");
- } else {
- debug ("Extractor - No mime available, not extracting data");
- }
-
- g_free (uri_in_locale);
-
- return NULL;
-}
-
-static void
-print_meta_table_data (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- gchar *value_utf8;
-
- g_return_if_fail (key != NULL);
- g_return_if_fail (value != NULL);
-
- value_utf8 = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
-
- if (value_utf8) {
- value_utf8 = g_strstrip (value_utf8);
-
- debug ("Extractor - Found '%s' = '%s'",
- (gchar*) key,
- value_utf8);
-
- g_print ("%s=%s;\n", (gchar*) key, value_utf8);
-
- g_free (value_utf8);
- }
-}
+static GMainLoop *main_loop;
+static guint shutdown_timeout_id;
static gboolean
-shutdown_app_timeout (gpointer user_data)
+shutdown_timeout_cb (gpointer user_data)
{
- GMainLoop *main_loop;
-
- debug ("Extractor - Timed out, shutting down");
-
- main_loop = (GMainLoop *) user_data;
+ shutdown_timeout_id = 0;
g_main_loop_quit (main_loop);
return FALSE;
}
-static void
-reset_shutdown_timeout (GMainLoop *main_loop)
+void
+tracker_main_shutdown_timeout_reset (void)
{
- debug ("Extractor - Resetting timeout");
-
if (shutdown_timeout_id != 0) {
g_source_remove (shutdown_timeout_id);
}
- shutdown_timeout_id = g_timeout_add (30000, shutdown_app_timeout, main_loop);
+ shutdown_timeout_id = g_timeout_add_seconds (30,
+ shutdown_timeout_cb,
+ NULL);
}
static void
-print_file_metadata (const gchar *filename,
- const gchar *mimetype)
+initialize_directories (void)
{
- GHashTable *meta;
+ gchar *user_data_dir;
- if (mimetype && *mimetype) {
- meta = tracker_get_file_metadata (filename, mimetype);
- } else {
- meta = tracker_get_file_metadata (filename, NULL);
- }
-
- if (meta) {
- g_hash_table_foreach (meta, print_meta_table_data, NULL);
- g_hash_table_destroy (meta);
- }
-
- /* Add an empty line so the indexer
- * knows when to stop reading
+ /* NOTE: We don't create the database directories here, the
+ * tracker-db-manager does that for us.
*/
- g_print ("\n");
-
- debug ("Extractor - Waiting for work");
-}
-
-static gboolean
-process_input_cb (GIOChannel *channel,
- GIOCondition condition,
- gpointer user_data)
-{
- gchar *filename, *mimetype;
-
- debug ("Extractor - Processing input");
-
- reset_shutdown_timeout ((GMainLoop *) user_data);
-
- g_io_channel_read_line (channel, &filename, NULL, NULL, NULL);
- g_io_channel_read_line (channel, &mimetype, NULL, NULL, NULL);
-
- g_strstrip (filename);
-
- if (mimetype) {
- g_strstrip (mimetype);
- }
+
+ user_data_dir = g_build_filename (g_get_user_data_dir (),
+ "tracker",
+ NULL);
+
+ g_message ("Checking directory exists:'%s'", user_data_dir);
+ g_mkdir_with_parents (user_data_dir, 00755);
- print_file_metadata (filename, mimetype);
-
- g_free (filename);
- g_free (mimetype);
-
- return TRUE;
+ g_free (user_data_dir);
}
int
main (int argc, char *argv[])
{
GOptionContext *context;
- GMainLoop *main_loop;
- GIOChannel *input;
gchar *summary;
TrackerConfig *config;
+ gchar *log_filename;
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -376,13 +105,11 @@
summary = g_strconcat (_("This command works two ways:"),
"\n",
"\n",
+ _(" - Calling the DBus API once running"),
+ "\n",
_(" - Passing arguments:"),
"\n",
" tracker-extract [filename] [mime-type]\n",
- "\n",
- _(" - Reading filename/mime-type pairs from STDIN"),
- "\n",
- " echo -e \"/home/foo/bar/baz.mp3\\naudio/x-mpeg\" | tracker-extract",
NULL);
g_option_context_set_summary (context, summary);
@@ -391,7 +118,6 @@
g_free (summary);
- debug ("Extractor - Initializing...");
tracker_memory_setrlimits ();
g_type_init ();
@@ -400,39 +126,69 @@
g_thread_init (NULL);
}
+ dbus_g_thread_init ();
+
g_set_application_name ("tracker-extract");
setlocale (LC_ALL, "");
- initialize_extractors ();
-
if (argc >= 2) {
+ TrackerExtract *object;
+
+ object = tracker_extract_new ();
+ if (!object) {
+ return EXIT_FAILURE;
+ }
+
if (argc >= 3) {
- print_file_metadata (argv[1], argv[2]);
+ tracker_extract_get_metadata_by_cmdline (object, argv[1], argv[2]);
} else {
- print_file_metadata (argv[1], NULL);
+ tracker_extract_get_metadata_by_cmdline (object, argv[1], NULL);
}
+ g_object_unref (object);
+
return EXIT_SUCCESS;
}
config = tracker_config_new ();
- tracker_thumbnailer_init (config, 0);
- main_loop = g_main_loop_new (NULL, FALSE);
+ log_filename =
+ g_build_filename (g_get_user_data_dir (),
+ "tracker",
+ "tracker-extract.log",
+ NULL);
+
+ /* Initialize subsystems */
+ initialize_directories ();
- input = g_io_channel_unix_new (STDIN_FILENO);
- g_io_add_watch (input, G_IO_IN, process_input_cb, main_loop);
+ tracker_log_init (log_filename, tracker_config_get_verbosity (config));
+ g_print ("Starting log:\n File:'%s'\n", log_filename);
- reset_shutdown_timeout (main_loop);
+ tracker_thumbnailer_init (config, 0);
+ tracker_dbus_init ();
+
+ /* Make Tracker available for introspection */
+ if (!tracker_dbus_register_objects ()) {
+ g_free (log_filename);
+ g_object_unref (config);
+
+ return EXIT_FAILURE;
+ }
- debug ("Extractor - Waiting for work");
+ /* Main loop */
+ main_loop = g_main_loop_new (NULL, FALSE);
+ tracker_main_shutdown_timeout_reset ();
g_main_loop_run (main_loop);
+ g_main_loop_unref (main_loop);
+ /* Shutdown subsystems */
+ tracker_dbus_shutdown ();
tracker_thumbnailer_shutdown ();
- g_object_unref (config);
+ tracker_log_shutdown ();
- debug ("Extractor - Finished");
+ g_free (log_filename);
+ g_object_unref (config);
return EXIT_SUCCESS;
}
Modified: trunk/src/tracker-extract/tracker-main.h
==============================================================================
--- trunk/src/tracker-extract/tracker-main.h (original)
+++ trunk/src/tracker-extract/tracker-main.h Fri Feb 6 20:31:47 2009
@@ -32,23 +32,27 @@
* for this keyword. This is bad because it means we have to string
* check every value returned in clients that use the Tracker API.
* This will be fixed in due course after January some time, -mr.
- *
- *
*/
#define METADATA_UNKNOWN ""
-typedef struct TrackerExtractorData TrackerExtractorData;
+typedef struct TrackerExtractData TrackerExtractData;
-typedef TrackerExtractorData * (*TrackerExtractorDataFunc)(void);
+typedef TrackerExtractData * (*TrackerExtractDataFunc)(void);
-struct TrackerExtractorData {
+struct TrackerExtractData {
const gchar *mime;
- void (* extractor) (const gchar *filename,
- GHashTable *metadata);
+ void (* extract) (const gchar *path,
+ GHashTable *metadata);
};
-TrackerExtractorData *tracker_get_extractor_data (void);
+/* This is defined in each extract */
+TrackerExtractData *tracker_get_extract_data (void);
+
+/* This is used to not shutdown after the default of 30 seconds if we
+ * get more work to do.
+ */
+void tracker_main_shutdown_timeout_reset (void);
G_END_DECLS
Modified: trunk/src/tracker-extract/tracker-xmp.c
==============================================================================
--- trunk/src/tracker-extract/tracker-xmp.c (original)
+++ trunk/src/tracker-extract/tracker-xmp.c Fri Feb 6 20:31:47 2009
@@ -26,7 +26,7 @@
#include <glib.h>
#include "tracker-xmp.h"
-#include "tracker-escape.h"
+#include "tracker-main.h"
#ifdef HAVE_EXEMPI
Modified: trunk/src/tracker-indexer/Makefile.am
==============================================================================
--- trunk/src/tracker-indexer/Makefile.am (original)
+++ trunk/src/tracker-indexer/Makefile.am Fri Feb 6 20:31:47 2009
@@ -86,11 +86,15 @@
tracker-marshal.c
dbus_sources = \
- tracker-indexer-glue.h
+ tracker-indexer-glue.h \
+ tracker-extract-client.h
%-glue.h: $(top_srcdir)/data/dbus/%.xml
$(DBUSBINDINGTOOL) --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
+%-client.h: $(top_srcdir)/data/dbus/%.xml
+ $(DBUSBINDINGTOOL) --mode=glib-client --output=$@ --prefix=$(subst -,_,$*) $^
+
BUILT_SOURCES = \
$(dbus_sources) \
$(marshal_sources)
Modified: trunk/src/tracker-indexer/tracker-dbus.h
==============================================================================
--- trunk/src/tracker-indexer/tracker-dbus.h (original)
+++ trunk/src/tracker-indexer/tracker-dbus.h Fri Feb 6 20:31:47 2009
@@ -31,8 +31,7 @@
gboolean tracker_dbus_init (void);
void tracker_dbus_shutdown (void);
gboolean tracker_dbus_register_object (GObject *object);
-DBusGProxy* tracker_dbus_get_thumbnailer (void);
-DBusGProxy* tracker_dbus_get_thumb_manager (void);
+DBusGProxy *tracker_dbus_extract_get_proxy (void);
G_END_DECLS
Modified: trunk/src/tracker-indexer/tracker-module-metadata-utils.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-module-metadata-utils.c (original)
+++ trunk/src/tracker-indexer/tracker-module-metadata-utils.c Fri Feb 6 20:31:47 2009
@@ -32,6 +32,8 @@
#include <libtracker-common/tracker-thumbnailer.h>
#include "tracker-module-metadata-utils.h"
+#include "tracker-extract-client.h"
+#include "tracker-dbus.h"
#define METADATA_FILE_NAME_DELIMITED "File:NameDelimited"
#define METADATA_FILE_EXT "File:Ext"
@@ -58,6 +60,40 @@
static ProcessContext *metadata_context = NULL;
+static DBusGProxy *
+get_dbus_extract_proxy (void)
+{
+ static DBusGProxy *proxy = NULL;
+ DBusGConnection *connection;
+ GError *error = NULL;
+
+ /* FIXME: Not perfect, we leak */
+ if (G_LIKELY (proxy)) {
+ return proxy;
+ }
+
+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+
+ if (!connection) {
+ g_critical ("Could not connect to the DBus session bus, %s",
+ error ? error->message : "no error given.");
+ g_clear_error (&error);
+ return FALSE;
+ }
+
+ /* Get proxy for Service / Path / Interface of the indexer */
+ proxy = dbus_g_proxy_new_for_name (connection,
+ "org.freedesktop.Tracker.Extract",
+ "/org/freedesktop/Tracker/Extract",
+ "org.freedesktop.Tracker.Extract");
+
+ if (!proxy) {
+ g_critical ("Couldn't create a DBusGProxy to the extract service");
+ }
+
+ return proxy;
+}
+
static void
process_context_invalidate (ProcessContext *context)
{
@@ -162,168 +198,6 @@
return context;
}
-static gboolean
-metadata_read_cb (GIOChannel *channel,
- GIOCondition condition,
- gpointer user_data)
-{
- GPtrArray *array;
- GIOStatus status;
- gchar *line;
-
- if (!metadata_context) {
- return FALSE;
- }
-
- if ((condition & G_IO_HUP) || (condition & G_IO_ERR)) {
- return FALSE;
- }
-
- array = metadata_context->data;
- status = G_IO_STATUS_NORMAL;
- line = NULL;
-
- if (!array) {
- /* FIXME: What do we do here? This has happened to me
- * before and we get warnings when we try to add to
- * the empty array later.
- */
- g_message ("EEEEEK!!!\n"
- "\n"
- "Expected metadata array to be non-NULL!\n"
- "\n"
- "This usually means we probably got '\\n' too many times "
- "and closed the pipe when there is more content available "
- "to read\n"
- "\n"
- "Stopping main loop and this callback");
-
- g_main_loop_quit (metadata_context->data_incoming_loop);
-
- return FALSE;
- }
-
- if ((condition & G_IO_IN) || (condition & G_IO_PRI)) {
- do {
- status = g_io_channel_read_line (metadata_context->stdout_channel,
- &line,
- NULL,
- NULL,
- NULL);
-
- if (status == G_IO_STATUS_NORMAL && line && *line) {
- g_strstrip (line);
- g_strdelimit (line, ";", '\0');
- g_ptr_array_add (array, line);
- }
- } while (status == G_IO_STATUS_NORMAL && line && *line);
-
- if (status == G_IO_STATUS_EOF ||
- status == G_IO_STATUS_ERROR ||
- (status == G_IO_STATUS_NORMAL && !*line)) {
- /* All extractor output has been processed */
- g_main_loop_quit (metadata_context->data_incoming_loop);
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-metadata_setup (void)
-{
- const gchar *argv[2] = {
- LIBEXEC_PATH G_DIR_SEPARATOR_S "tracker-extract",
- NULL
- };
-
- if (metadata_context) {
- process_context_invalidate (metadata_context);
- metadata_context = NULL;
- }
-
- metadata_context = process_context_create (argv,
- metadata_read_cb);
- if (!metadata_context) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gchar **
-metadata_query_file (const gchar *path,
- const gchar *mimetype)
-{
- gchar *utf_path, *str;
- GPtrArray *array;
- GIOStatus status;
- GError *error = NULL;
-
- if (!path || !mimetype) {
- return NULL;
- }
-
- if (!metadata_context && !metadata_setup ()) {
- return NULL;
- }
-
- utf_path = g_filename_from_utf8 (path, -1, NULL, NULL, NULL);
-
- if (!utf_path) {
- return NULL;
- }
-
- array = g_ptr_array_sized_new (10);
- metadata_context->data = array;
-
- str = g_strdup_printf ("%s\n%s\n", utf_path, mimetype);
- g_free (utf_path);
-
- /* Write path and mimetype */
- g_io_channel_write_chars (metadata_context->stdin_channel, str, -1, NULL, NULL);
- status = g_io_channel_flush (metadata_context->stdin_channel, &error);
-
- if (status == G_IO_STATUS_ERROR &&
- error &&
- g_error_matches (error, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_PIPE)) {
- /* Looks like the external extractor
- * process has died before the child watch
- * could handle it, try respawning.
- */
- g_error_free (error);
-
- metadata_setup ();
- metadata_context->data = array;
-
- g_io_channel_write_chars (metadata_context->stdin_channel, str, -1, NULL, NULL);
- status = g_io_channel_flush (metadata_context->stdin_channel, NULL);
-
- if (status == G_IO_STATUS_ERROR) {
- /* No point in trying again */
- process_context_invalidate (metadata_context);
- metadata_context = NULL;
- g_free (str);
- return NULL;
- }
- }
-
- /* It will block here until all incoming
- * metadata has been processed
- */
- g_main_loop_run (metadata_context->data_incoming_loop);
-
- g_ptr_array_add (array, NULL);
-
- if (metadata_context) {
- metadata_context->data = NULL;
- }
-
- g_free (str);
-
- return (gchar **) g_ptr_array_free (array, FALSE);
-}
-
static void
metadata_utils_add_embedded_data (TrackerModuleMetadata *metadata,
TrackerField *field,
@@ -358,14 +232,53 @@
}
static void
+metadata_utils_get_embedded_foreach (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ TrackerModuleMetadata *metadata;
+ TrackerField *field;
+ gchar *key_str;
+ gchar *value_str;
+
+ metadata = user_data;
+ key_str = key;
+ value_str = value;
+
+ if (!key || !value) {
+ return;
+ }
+
+ field = tracker_ontology_get_field_by_name (key_str);
+ if (!field) {
+ g_warning ("Field name '%s' isn't described in the ontology", key_str);
+ return;
+ }
+
+ if (tracker_field_get_multiple_values (field)) {
+ GStrv strv;
+ guint i;
+
+ strv = g_strsplit (value_str, "|", -1);
+
+ for (i = 0; strv[i]; i++) {
+ metadata_utils_add_embedded_data (metadata, field, strv[i]);
+ }
+
+ g_strfreev (strv);
+ } else {
+ metadata_utils_add_embedded_data (metadata, field, value_str);
+ }
+}
+
+static void
metadata_utils_get_embedded (const char *path,
const char *mime_type,
TrackerModuleMetadata *metadata)
{
- gchar **values;
+ GHashTable *values = NULL;
+ GError *error = NULL;
const gchar *service_type;
- gint i;
- TrackerField *field;
service_type = tracker_ontology_get_service_by_mime (mime_type);
if (!service_type) {
@@ -376,63 +289,29 @@
return;
}
- values = metadata_query_file (path, mime_type);
+ /* Call extractor to get data here */
+ if (!org_freedesktop_Tracker_Extract_get_metadata (get_dbus_extract_proxy (),
+ path,
+ mime_type,
+ &values,
+ &error)) {
+ g_message ("Couldn't extract metadata for path:'%s' and mime:'%s', %s",
+ path,
+ mime_type,
+ error ? error->message : "no error given");
+ g_clear_error (&error);
+ return;
+ }
if (!values) {
return;
}
- /* parse returned values and extract keys and associated metadata */
- for (i = 0; values[i]; i++) {
- gchar *meta_data, *sep;
- const gchar *name;
- gchar *value;
-
- meta_data = values[i];
- sep = strchr (meta_data, '=');
-
- if (!sep)
- continue;
-
- /* zero out the separator, so we get
- * NULL-terminated name and value
- */
- sep[0] = '\0';
- name = meta_data;
- value = g_strcompress (sep + 1);
-
- if (!name || !value) {
- g_free (value);
- continue;
- }
-
- field = tracker_ontology_get_field_by_name (name);
-
- if (!field) {
- g_warning ("Field name '%s' isn't described in the ontology", name);
- g_free (value);
- continue;
- }
-
- if (tracker_field_get_multiple_values (field)) {
- GStrv arr;
- guint t;
-
- arr = g_strsplit (value, "|",-1);
-
- for (t = 0; arr[t]; t++) {
- metadata_utils_add_embedded_data (metadata, field, arr[t]);
- }
-
- g_strfreev (arr);
- } else {
- metadata_utils_add_embedded_data (metadata, field, value);
- }
-
- g_free (value);
- }
+ g_hash_table_foreach (values,
+ metadata_utils_get_embedded_foreach,
+ metadata);
- g_strfreev (values);
+ /* Do we free this hash table? */
}
static gboolean
Modified: trunk/tests/tracker-extract/tracker-extract-jpeg-test.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-jpeg-test.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-jpeg-test.c Fri Feb 6 20:31:47 2009
@@ -32,20 +32,19 @@
int
main (int argc, char **argv) {
+ TrackerExtractData *data;
gint result;
g_type_init ();
g_thread_init (NULL);
g_test_init (&argc, &argv, NULL);
-
- TrackerExtractorData *data;
-
- g_test_message ("Testing extractor functionality");
- g_test_add_func ("/tracker-extract/tracker-extract-jpeg/check-extractor-data",
- test_tracker_extract_check_extractor_data);
+
+ g_test_message ("Testing extract functionality");
+ g_test_add_func ("/tracker-extract/tracker-extract-jpeg/check-extract-data",
+ test_tracker_extract_check_extract_data);
#if 0
- data = tracker_test_extract_get_extractor ("image/jpeg");
+ data = tracker_test_extract_get_extract ("image/jpeg");
g_test_add_data_func ("/tracker-extract/tracker-extract-jpeg/basic_size",
data, test_tracker_extract_jpeg_basic_size);
Modified: trunk/tests/tracker-extract/tracker-extract-mp3-test.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-mp3-test.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-mp3-test.c Fri Feb 6 20:31:47 2009
@@ -33,18 +33,18 @@
int
main (int argc, char **argv) {
- TrackerExtractorData *data;
+ TrackerExtractData *data;
gint result;
g_type_init ();
g_thread_init (NULL);
g_test_init (&argc, &argv, NULL);
- g_test_message ("Testing extractor functionality");
- g_test_add_func ("/tracker-extract/tracker-extract-mp3/check-extractor-data",
- test_tracker_extract_check_extractor_data);
+ g_test_message ("Testing extract functionality");
+ g_test_add_func ("/tracker-extract/tracker-extract-mp3/check-extract-data",
+ test_tracker_extract_check_extract_data);
- data = tracker_test_extract_get_extractor ("audio/mpeg");
+ data = tracker_test_extract_get_extract ("audio/mpeg");
g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/access",
data, access_tracker_extract_mp3);
Modified: trunk/tests/tracker-extract/tracker-extract-png-test.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-png-test.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-png-test.c Fri Feb 6 20:31:47 2009
@@ -38,14 +38,14 @@
g_thread_init (NULL);
g_test_init (&argc, &argv, NULL);
- TrackerExtractorData *data;
+ TrackerExtractData *data;
- g_test_message ("Testing extractor functionality");
- g_test_add_func ("/tracker-extract/tracker-extract-png/check-extractor-data",
- test_tracker_extract_check_extractor_data);
+ g_test_message ("Testing extract functionality");
+ g_test_add_func ("/tracker-extract/tracker-extract-png/check-extract-data",
+ test_tracker_extract_check_extract_data);
#if 0
- data = tracker_test_extract_get_extractor ("image/png");
+ data = tracker_test_extract_get_extract ("image/png");
g_test_add_data_func ("/tracker-extract/tracker-extract-png/basic_size",
data, test_tracker_extract_png_basic_size);
Modified: trunk/tests/tracker-extract/tracker-extract-test-utils.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-test-utils.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-test-utils.c Fri Feb 6 20:31:47 2009
@@ -20,13 +20,13 @@
#include "tracker-extract-test-utils.h"
-TrackerExtractorData *
-tracker_test_extract_get_extractor (const gchar *mime)
+TrackerExtractData *
+tracker_test_extract_get_extract (const gchar *mime)
{
- TrackerExtractorData *data;
+ TrackerExtractData *data;
/* Search for exact match first */
- data = tracker_get_extractor_data ();
+ data = tracker_get_extract_data ();
while (data->mime) {
if (strcmp (data->mime, mime) == 0) {
return data;
@@ -35,7 +35,7 @@
}
/* Search for generic */
- data = tracker_get_extractor_data ();
+ data = tracker_get_extract_data ();
while (data->mime) {
if (g_pattern_match_simple (data->mime, mime)) {
return data;
@@ -46,7 +46,7 @@
}
void
-extract_file (const TrackerExtractorData *data, const gchar *file, const gchar *testdatafile)
+extract_file (const TrackerExtractData *data, const gchar *file, const gchar *testdatafile)
{
GHashTable *metadata;
GHashTable *testdata;
@@ -69,7 +69,7 @@
g_free,
g_free);
- (*data->extractor) (filename, metadata);
+ (*data->extract) (filename, metadata);
testdata = parse_testdata_file (testdata_filename);
@@ -86,7 +86,7 @@
}
void
-performance_extract_files (const TrackerExtractorData *data, const gchar *filematch, guint filecount)
+performance_extract_files (const TrackerExtractData *data, const gchar *filematch, guint filecount)
{
double perftime;
guint i;
@@ -117,7 +117,7 @@
g_assert_not_reached();
}
- (*data->extractor) (filename, metadata);
+ (*data->extract) (filename, metadata);
g_assert (g_hash_table_size (metadata) > 0);
@@ -132,7 +132,7 @@
}
void
-access_extract_files (const TrackerExtractorData *data, const gchar *filematch, guint filecount)
+access_extract_files (const TrackerExtractData *data, const gchar *filematch, guint filecount)
{
double perftime;
guint i;
@@ -161,7 +161,7 @@
g_assert_not_reached();
}
- (*data->extractor) (filename, metadata);
+ (*data->extract) (filename, metadata);
g_assert (g_hash_table_size (metadata) > 0);
@@ -169,12 +169,12 @@
}
}
-TrackerExtractorData *
-search_mime_extractor (const gchar *mime)
+TrackerExtractData *
+search_mime_extract (const gchar *mime)
{
- TrackerExtractorData *data;
+ TrackerExtractData *data;
- data = tracker_get_extractor_data ();
+ data = tracker_get_extract_data ();
while (data->mime) {
if (strcmp (data->mime,mime) == 0) {
Modified: trunk/tests/tracker-extract/tracker-extract-test-utils.h
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-test-utils.h (original)
+++ trunk/tests/tracker-extract/tracker-extract-test-utils.h Fri Feb 6 20:31:47 2009
@@ -27,16 +27,16 @@
#include <glib.h>
-#include <tracker-extract/tracker-extract.h>
+#include <tracker-extract/tracker-main.h>
-TrackerExtractorData * tracker_test_extract_get_extractor (const gchar *mime);
-void extract_file (const TrackerExtractorData *data,
+TrackerExtractData * tracker_test_extract_get_extract (const gchar *mime);
+void extract_file (const TrackerExtractData *data,
const gchar *file,
const gchar *testdatafile);
-void performance_extract_files (const TrackerExtractorData *data,
+void performance_extract_files (const TrackerExtractData *data,
const gchar *filematch,
guint filecount);
-void access_extract_files (const TrackerExtractorData *data,
+void access_extract_files (const TrackerExtractData *data,
const gchar *filematch,
guint filecount);
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-avi.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-avi.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-avi.c Fri Feb 6 20:31:47 2009
@@ -34,7 +34,7 @@
void test_tracker_extract_avi_basic_tags(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_basic_tags[i].filename; i++) {
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c Fri Feb 6 20:31:47 2009
@@ -24,15 +24,15 @@
#include "tracker-extract-testsuite-generic.h"
void
-test_tracker_extract_check_extractor_data (void)
+test_tracker_extract_check_extract_data (void)
{
- TrackerExtractorData *data;
+ TrackerExtractData *data;
guint extractors = 0;
- data = tracker_get_extractor_data ();
+ data = tracker_get_extract_data ();
while (data->mime) {
- if (data->extractor == NULL) {
+ if (data->extract == NULL) {
g_error ("Extractor for mime '%s' declared NULL", data->mime);
}
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h Fri Feb 6 20:31:47 2009
@@ -23,6 +23,6 @@
#include <tracker-extract/tracker-extract.h>
-void test_tracker_extract_check_extractor_data ();
+void test_tracker_extract_check_extract_data (void);
#endif
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-jpeg.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-jpeg.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-jpeg.c Fri Feb 6 20:31:47 2009
@@ -108,7 +108,7 @@
void test_tracker_extract_jpeg_basic_size(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_basic_size[i].filename; i++) {
@@ -120,7 +120,7 @@
void test_tracker_extract_jpeg_exif_size(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_exif_size[i].filename; i++) {
@@ -132,7 +132,7 @@
void test_tracker_extract_jpeg_exif_orientation(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_exif_orientation[i].filename; i++) {
@@ -144,7 +144,7 @@
void test_tracker_extract_jpeg_exif_flash(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_exif_flash[i].filename; i++) {
@@ -156,7 +156,7 @@
void test_tracker_extract_jpeg_exif_tags(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_exif_tags[i].filename; i++) {
@@ -168,7 +168,7 @@
void performance_tracker_extract_jpeg(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
performance_extract_files (data, "/jpeg/perf_jpeg_%d.jpg", 1000);
}
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c Fri Feb 6 20:31:47 2009
@@ -104,14 +104,14 @@
void access_tracker_extract_mp3(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
access_extract_files (data, "/mp3/access_%d.mp3", 4);
}
void test_tracker_extract_mp3_id3v1_basic(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_id3v1_basic[i].filename; i++) {
@@ -123,7 +123,7 @@
void test_tracker_extract_mp3_id3v23_basic(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_id3v23_basic[i].filename; i++) {
@@ -135,7 +135,7 @@
void test_tracker_extract_mp3_id3v23_tags(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_id3v23_tags[i].filename; i++) {
@@ -147,7 +147,7 @@
void test_tracker_extract_mp3_id3v23_tcon(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_id3v23_tcon[i].filename; i++) {
@@ -159,7 +159,7 @@
void test_tracker_extract_mp3_header_bitrate(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_header_bitrate[i].filename; i++) {
@@ -171,7 +171,7 @@
void test_tracker_extract_mp3_header_bitrate_vbr(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_header_bitrate_vbr[i].filename; i++) {
@@ -183,7 +183,7 @@
void test_tracker_extract_mp3_header_sampling(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_header_sampling[i].filename; i++) {
@@ -197,7 +197,7 @@
void performance_tracker_extract_mp3(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
performance_extract_files (data, "/mp3/perf_cbr_id3v1_%d.mp3", 1000);
}
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-png.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-png.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-png.c Fri Feb 6 20:31:47 2009
@@ -50,7 +50,7 @@
void test_tracker_extract_png_basic_size(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_basic_size[i].filename; i++) {
@@ -62,7 +62,7 @@
void test_tracker_extract_png_xmp_exif_orientation(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_xmp_exif_orientation[i].filename; i++) {
@@ -74,7 +74,7 @@
void performance_tracker_extract_png(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
performance_extract_files (data, "/png/perf_png_%d.png", 1000);
}
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-tiff.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-tiff.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-tiff.c Fri Feb 6 20:31:47 2009
@@ -55,7 +55,7 @@
void test_tracker_extract_tiff_basic_size(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_basic_size[i].filename; i++) {
@@ -67,7 +67,7 @@
void test_tracker_extract_tiff_exif_size(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_exif_size[i].filename; i++) {
@@ -81,7 +81,7 @@
void test_tracker_extract_tiff_exif_orientation(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
guint i;
for (i=0; data_exif_orientation[i].filename; i++) {
@@ -93,7 +93,7 @@
void performance_tracker_extract_tiff(gconstpointer data)
{
- const TrackerExtractorData *extractor = data;
+ const TrackerExtractData *extract = data;
performance_extract_files (data, "/tiff/perf_tiff_%d.tif", 1000);
}
Modified: trunk/tests/tracker-extract/tracker-extract-tiff-test.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-tiff-test.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-tiff-test.c Fri Feb 6 20:31:47 2009
@@ -32,20 +32,19 @@
int
main (int argc, char **argv) {
+ TrackerExtractData *data;
gint result;
g_type_init ();
g_thread_init (NULL);
g_test_init (&argc, &argv, NULL);
- TrackerExtractorData *data;
-
- g_test_message ("Testing extractor functionality");
- g_test_add_func ("/tracker-extract/tracker-extract-tiff/check-extractor-data",
- test_tracker_extract_check_extractor_data);
+ g_test_message ("Testing extract functionality");
+ g_test_add_func ("/tracker-extract/tracker-extract-tiff/check-extract-data",
+ test_tracker_extract_check_extract_data);
#if 0
- data = tracker_test_extract_get_extractor ("image/tiff");
+ data = tracker_test_extract_get_extract ("image/tiff");
g_test_add_data_func ("/tracker-extract/tracker-extract-tiff/basic_size",
data, test_tracker_extract_tiff_basic_size);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]