summaryrefslogtreecommitdiff
path: root/src/tracker-extract/tracker-extract-ps.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracker-extract/tracker-extract-ps.c')
-rw-r--r--src/tracker-extract/tracker-extract-ps.c77
1 files changed, 37 insertions, 40 deletions
diff --git a/src/tracker-extract/tracker-extract-ps.c b/src/tracker-extract/tracker-extract-ps.c
index f9580e92e..aa3f62f3f 100644
--- a/src/tracker-extract/tracker-extract-ps.c
+++ b/src/tracker-extract/tracker-extract-ps.c
@@ -100,11 +100,10 @@ date_to_iso8601 (const gchar *date)
return NULL;
}
-static void
-extract_ps_from_filestream (FILE *f,
- TrackerSparqlBuilder *preupdate,
- TrackerSparqlBuilder *metadata)
+static TrackerResource *
+extract_ps_from_filestream (FILE *f)
{
+ TrackerResource *metadata;
gchar *line;
gsize length;
gssize read_char;
@@ -114,8 +113,8 @@ extract_ps_from_filestream (FILE *f,
line = NULL;
length = 0;
- tracker_sparql_builder_predicate (metadata, "a");
- tracker_sparql_builder_object (metadata, "nfo:PaginatedTextDocument");
+ metadata = tracker_resource_new (NULL);
+ tracker_resource_add_uri (metadata, "rdf:type", "nfo:PaginatedTextDocument");
/* 20 MiB should be enough! (original safe limit) */
accum = 0;
@@ -141,26 +140,19 @@ extract_ps_from_filestream (FILE *f,
line[read_char - 1] = '\0'; /* overwrite '\n' char */
if (!header_finished && strncmp (line, "%%Copyright:", 12) == 0) {
- tracker_sparql_builder_predicate (metadata, "nie:copyright");
- tracker_sparql_builder_object_unvalidated (metadata, line + 13);
+ tracker_resource_set_string (metadata, "nie:copyright", line + 13);
} else if (!header_finished && strncmp (line, "%%Title:", 8) == 0) {
- tracker_sparql_builder_predicate (metadata, "nie:title");
- tracker_sparql_builder_object_unvalidated (metadata, line + 9);
+ tracker_resource_set_string (metadata, "nie:title", line + 9);
} else if (!header_finished && strncmp (line, "%%Creator:", 10) == 0) {
- tracker_sparql_builder_predicate (metadata, "nco:creator");
- tracker_sparql_builder_object_blank_open (metadata);
- tracker_sparql_builder_predicate (metadata, "a");
- tracker_sparql_builder_object (metadata, "nco:Contact");
- tracker_sparql_builder_predicate (metadata, "nco:fullname");
- tracker_sparql_builder_object_unvalidated (metadata, line + 11);
- tracker_sparql_builder_object_blank_close (metadata);
+ TrackerResource *creator = tracker_extract_new_contact (line + 11);
+ tracker_resource_set_relation (metadata, "nco:creator", creator);
+ g_object_unref (creator);
} else if (!header_finished && strncmp (line, "%%CreationDate:", 15) == 0) {
gchar *date;
date = date_to_iso8601 (line + 16);
if (date) {
- tracker_sparql_builder_predicate (metadata, "nie:contentCreated");
- tracker_sparql_builder_object_unvalidated (metadata, date);
+ tracker_resource_set_string (metadata, "nie:contentCreated", date);
g_free (date);
}
} else if (strncmp (line, "%%Pages:", 8) == 0) {
@@ -170,8 +162,7 @@ extract_ps_from_filestream (FILE *f,
gint64 page_count;
page_count = g_ascii_strtoll (line + 9, NULL, 10);
- tracker_sparql_builder_predicate (metadata, "nfo:pageCount");
- tracker_sparql_builder_object_int64 (metadata, page_count);
+ tracker_resource_set_int (metadata, "nfo:pageCount", page_count);
}
} else if (strncmp (line, "%%EndComments", 14) == 0) {
header_finished = TRUE;
@@ -186,15 +177,16 @@ extract_ps_from_filestream (FILE *f,
if (line) {
g_free (line);
}
+
+ return metadata;
}
-static void
-extract_ps (const gchar *uri,
- TrackerSparqlBuilder *preupdate,
- TrackerSparqlBuilder *metadata)
+static TrackerResource *
+extract_ps (const gchar *uri)
{
+ TrackerResource *metadata;
FILE *f;
gchar *filename;
@@ -203,14 +195,16 @@ extract_ps (const gchar *uri,
g_free (filename);
if (!f) {
- return;
+ return NULL;
}
/* Extract from filestream! */
g_debug ("Extracting PS '%s'...", uri);
- extract_ps_from_filestream (f, preupdate, metadata);
+ metadata = extract_ps_from_filestream (f);
tracker_file_close (f, FALSE);
+
+ return metadata;
}
#ifdef USING_UNZIPPSFILES
@@ -254,11 +248,10 @@ spawn_child_func (gpointer user_data)
}
}
-static void
-extract_ps_gz (const gchar *uri,
- TrackerSparqlBuilder *preupdate,
- TrackerSparqlBuilder *metadata)
+static TrackerResource *
+extract_ps_gz (const gchar *uri)
{
+ TrackerResource *metadata = NULL;
FILE *fz;
gint fdz;
const gchar *argv[4];
@@ -299,7 +292,7 @@ extract_ps_gz (const gchar *uri,
else
{
g_debug ("Extracting compressed PS '%s'...", uri);
- extract_ps_from_filestream (fz, preupdate, metadata);
+ metadata = extract_ps_from_filestream (fz);
#ifdef HAVE_POSIX_FADVISE
posix_fadvise (fdz, 0, 0, POSIX_FADV_DONTNEED);
#endif /* HAVE_POSIX_FADVISE */
@@ -307,6 +300,8 @@ extract_ps_gz (const gchar *uri,
}
g_free (filename);
+
+ return metadata;
}
#endif /* USING_UNZIPPSFILES */
@@ -314,28 +309,30 @@ extract_ps_gz (const gchar *uri,
G_MODULE_EXPORT gboolean
tracker_extract_get_metadata (TrackerExtractInfo *info)
{
- TrackerSparqlBuilder *preupdate, *metadata;
- const gchar *mimetype;
+ TrackerResource *metadata;
GFile *file;
gchar *uri;
-
- preupdate = tracker_extract_info_get_preupdate_builder (info);
- metadata = tracker_extract_info_get_metadata_builder (info);
- mimetype = tracker_extract_info_get_mimetype (info);
+ const char *mimetype;
file = tracker_extract_info_get_file (info);
+ mimetype = tracker_extract_info_get_mimetype (info);
uri = g_file_get_uri (file);
#ifdef USING_UNZIPPSFILES
if (strcmp (mimetype, "application/x-gzpostscript") == 0) {
- extract_ps_gz (uri, preupdate, metadata);
+ metadata = extract_ps_gz (uri);
} else
#endif /* USING_UNZIPPSFILES */
{
- extract_ps (uri, preupdate, metadata);
+ metadata = extract_ps (uri);
}
g_free (uri);
+ if (metadata) {
+ tracker_extract_info_set_resource (info, metadata);
+ g_object_unref (metadata);
+ }
+
return TRUE;
}