diff options
Diffstat (limited to 'src/tracker-extract/tracker-extract-ps.c')
-rw-r--r-- | src/tracker-extract/tracker-extract-ps.c | 77 |
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; } |