From 488ad78d0d455be3aea00ca9d26998e2ee8e7b23 Mon Sep 17 00:00:00 2001 From: ajacoutot Date: Sun, 22 Jan 2012 15:13:23 +0000 Subject: [PATCH] open(2) with the NOATIME flag is only available on Linux. Instead of duplicating the same code all over with ifdef, factorize into a function that opens file descriptors in a portable way. --- x11/gnome/tracker/Makefile | 4 +- ...src_libtracker-common_tracker-file-utils_c | 45 +++++++++++++++++++ ...src_libtracker-common_tracker-file-utils_h | 11 +++++ ...-src_tracker-extract_tracker-extract-abw_c | 21 ++++----- ...-src_tracker-extract_tracker-extract-gif_c | 21 ++++----- ...-src_tracker-extract_tracker-extract-mp3_c | 33 ++++++++++++-- ...-src_tracker-extract_tracker-extract-pdf_c | 21 ++++----- ...src_tracker-extract_tracker-extract-text_c | 19 ++++---- ...src_tracker-extract_tracker-extract-tiff_c | 21 ++++----- ...-src_tracker-extract_tracker-extract-xmp_c | 21 ++++----- 10 files changed, 141 insertions(+), 76 deletions(-) create mode 100644 x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_c create mode 100644 x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_h diff --git a/x11/gnome/tracker/Makefile b/x11/gnome/tracker/Makefile index 2b4b2836ec7..025a1f877ab 100644 --- a/x11/gnome/tracker/Makefile +++ b/x11/gnome/tracker/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.92 2012/01/02 14:11:21 ajacoutot Exp $ +# $OpenBSD: Makefile,v 1.93 2012/01/22 15:13:23 ajacoutot Exp $ # XXX Binary files patch-src_tracker-control_tracker-control-general_c # and patch-src_tracker-control_tracker-control-general_c.new differ @@ -21,7 +21,7 @@ PKGNAME-main= meta-tracker-${VERSION} PKGNAME-evolution= evolution-meta-tracker-${VERSION} PKGNAME-nautilus= nautilus-meta-tracker-${VERSION} -REVISION-main= 3 +REVISION-main= 4 MAJ_V= ${GNOME_VERSION:C/^([0-9]+\.[0-9]+).*/\1/} EVO_VERSION= 3.2 diff --git a/x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_c b/x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_c new file mode 100644 index 00000000000..166834c848e --- /dev/null +++ b/x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_c @@ -0,0 +1,45 @@ +$OpenBSD: patch-src_libtracker-common_tracker-file-utils_c,v 1.3 2012/01/22 15:13:23 ajacoutot Exp $ +--- src/libtracker-common/tracker-file-utils.c.orig Fri Dec 16 17:08:04 2011 ++++ src/libtracker-common/tracker-file-utils.c Tue Jan 10 09:51:39 2012 +@@ -50,22 +50,34 @@ + + static GHashTable *file_locks = NULL; + +-FILE * +-tracker_file_open (const gchar *path) ++gint ++tracker_file_open_fd (const gchar *path) + { +- FILE *file; +- int fd; ++ gint fd; + + g_return_val_if_fail (path != NULL, NULL); + + #if defined(__linux__) +- fd = g_open (path, O_RDONLY | O_NOATIME); ++ fd = g_open (path, O_RDONLY | O_NOATIME, 0); + if (fd == -1 && errno == EPERM) { +- fd = g_open (path, O_RDONLY); ++ fd = g_open (path, O_RDONLY, 0); + } + #else +- fd = g_open (path, O_RDONLY); ++ fd = g_open (path, O_RDONLY, 0); + #endif ++ ++ return fd; ++} ++ ++FILE * ++tracker_file_open (const gchar *path) ++{ ++ FILE *file; ++ gint fd; ++ ++ g_return_val_if_fail (path != NULL, NULL); ++ ++ fd = tracker_file_open_fd (path); + + if (fd == -1) { + return NULL; diff --git a/x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_h b/x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_h new file mode 100644 index 00000000000..1bb2bf7081f --- /dev/null +++ b/x11/gnome/tracker/patches/patch-src_libtracker-common_tracker-file-utils_h @@ -0,0 +1,11 @@ +$OpenBSD: patch-src_libtracker-common_tracker-file-utils_h,v 1.1 2012/01/22 15:13:23 ajacoutot Exp $ +--- src/libtracker-common/tracker-file-utils.h.orig Tue Jan 10 09:16:39 2012 ++++ src/libtracker-common/tracker-file-utils.h Tue Jan 10 09:17:10 2012 +@@ -32,6 +32,7 @@ G_BEGIN_DECLS + #endif + + /* File utils */ ++gint tracker_file_open_fd (const gchar *path); + FILE* tracker_file_open (const gchar *path); + void tracker_file_close (FILE *file, + gboolean need_again_soon); diff --git a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-abw_c b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-abw_c index 63e29aa18f2..ec9ddc45492 100644 --- a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-abw_c +++ b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-abw_c @@ -1,21 +1,18 @@ -$OpenBSD: patch-src_tracker-extract_tracker-extract-abw_c,v 1.6 2011/12/21 14:20:06 ajacoutot Exp $ +$OpenBSD: patch-src_tracker-extract_tracker-extract-abw_c,v 1.7 2012/01/22 15:13:23 ajacoutot Exp $ https://bugzilla.gnome.org/show_bug.cgi?id=666654 ---- src/tracker-extract/tracker-extract-abw.c.orig Mon Sep 26 11:26:39 2011 -+++ src/tracker-extract/tracker-extract-abw.c Mon Sep 26 12:30:31 2011 -@@ -180,10 +180,14 @@ tracker_extract_get_metadata (TrackerExtractInfo *info +--- src/tracker-extract/tracker-extract-abw.c.orig Fri Dec 16 16:24:23 2011 ++++ src/tracker-extract/tracker-extract-abw.c Tue Jan 10 09:19:28 2012 +@@ -180,10 +180,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info f = tracker_extract_info_get_file (info); filename = g_file_get_path (f); -+#if defined(__linux__) - fd = g_open (filename, O_RDONLY | O_NOATIME, 0); - if (fd == -1 && errno == EPERM) { - fd = g_open (filename, O_RDONLY, 0); - } -+#else -+ fd = g_open (filename, O_RDONLY, 0); -+#endif +- fd = g_open (filename, O_RDONLY | O_NOATIME, 0); +- if (fd == -1 && errno == EPERM) { +- fd = g_open (filename, O_RDONLY, 0); +- } ++ fd = tracker_file_open_fd (filename); if (fd == -1) { g_warning ("Could not open abw file '%s': %s\n", diff --git a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-gif_c b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-gif_c index 9150a2c6c48..9b8a0331303 100644 --- a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-gif_c +++ b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-gif_c @@ -1,21 +1,18 @@ -$OpenBSD: patch-src_tracker-extract_tracker-extract-gif_c,v 1.3 2011/12/21 14:20:06 ajacoutot Exp $ +$OpenBSD: patch-src_tracker-extract_tracker-extract-gif_c,v 1.4 2012/01/22 15:13:23 ajacoutot Exp $ https://bugzilla.gnome.org/show_bug.cgi?id=666654 ---- src/tracker-extract/tracker-extract-gif.c.orig Mon Sep 26 11:26:47 2011 -+++ src/tracker-extract/tracker-extract-gif.c Mon Sep 26 12:30:46 2011 -@@ -606,10 +606,14 @@ tracker_extract_get_metadata (TrackerExtractInfo *info +--- src/tracker-extract/tracker-extract-gif.c.orig Fri Dec 16 16:24:23 2011 ++++ src/tracker-extract/tracker-extract-gif.c Tue Jan 10 09:19:45 2012 +@@ -606,10 +606,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info return FALSE; } -+#if defined(__linux__) - fd = g_open (filename, O_RDONLY | O_NOATIME, 0); - if (fd == -1 && errno == EPERM) { - fd = g_open (filename, O_RDONLY, 0); - } -+#else -+ fd = g_open (filename, O_RDONLY, 0); -+#endif +- fd = g_open (filename, O_RDONLY | O_NOATIME, 0); +- if (fd == -1 && errno == EPERM) { +- fd = g_open (filename, O_RDONLY, 0); +- } ++ fd = tracker_file_open_fd (filename); if (fd == -1) { g_warning ("Could not open gif file '%s': %s\n", diff --git a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-mp3_c b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-mp3_c index 9eeec7990e0..5d261e81dc9 100644 --- a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-mp3_c +++ b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-mp3_c @@ -1,6 +1,6 @@ -$OpenBSD: patch-src_tracker-extract_tracker-extract-mp3_c,v 1.10 2011/10/06 20:26:47 ajacoutot Exp $ ---- src/tracker-extract/tracker-extract-mp3.c.orig Thu Oct 6 15:07:14 2011 -+++ src/tracker-extract/tracker-extract-mp3.c Thu Oct 6 20:22:53 2011 +$OpenBSD: patch-src_tracker-extract_tracker-extract-mp3_c,v 1.11 2012/01/22 15:13:23 ajacoutot Exp $ +--- src/tracker-extract/tracker-extract-mp3.c.orig Fri Dec 16 16:24:23 2011 ++++ src/tracker-extract/tracker-extract-mp3.c Tue Jan 10 09:32:18 2012 @@ -1049,10 +1049,10 @@ id3v2_strlen (const gchar encoding, case 0x02: @@ -14,3 +14,30 @@ $OpenBSD: patch-src_tracker-extract_tracker-extract-mp3_c,v 1.10 2011/10/06 20:2 } else { pos++; } +@@ -2093,25 +2093,11 @@ tracker_extract_get_metadata (TrackerExtractInfo *info + md.size = size; + buffer_size = MIN (size, MAX_FILE_READ); + +-#if defined(__linux__) +- /* Can return -1 because of O_NOATIME, so we try again after +- * without as a last resort. This can happen due to +- * permissions. +- */ +- fd = g_open (filename, O_RDONLY | O_NOATIME); +- if (fd == -1 && errno == EPERM) { +- fd = g_open (filename, O_RDONLY); ++ fd = tracker_file_open_fd (filename); + +- if (fd == -1) { +- return FALSE; +- } +- } +-#else +- fd = open (filename, O_RDONLY); + if (fd == -1) { + return FALSE; + } +-#endif + + #ifndef G_OS_WIN32 + /* We don't use GLib's mmap because size can not be specified */ diff --git a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-pdf_c b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-pdf_c index a087a060a09..ac594828dd3 100644 --- a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-pdf_c +++ b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-pdf_c @@ -1,21 +1,18 @@ -$OpenBSD: patch-src_tracker-extract_tracker-extract-pdf_c,v 1.4 2011/12/21 14:20:06 ajacoutot Exp $ +$OpenBSD: patch-src_tracker-extract_tracker-extract-pdf_c,v 1.5 2012/01/22 15:13:23 ajacoutot Exp $ https://bugzilla.gnome.org/show_bug.cgi?id=666654 ---- src/tracker-extract/tracker-extract-pdf.c.orig Fri Nov 25 15:50:33 2011 -+++ src/tracker-extract/tracker-extract-pdf.c Fri Nov 25 18:52:47 2011 -@@ -311,10 +311,14 @@ tracker_extract_get_metadata (TrackerExtractInfo *info +--- src/tracker-extract/tracker-extract-pdf.c.orig Fri Dec 16 16:24:23 2011 ++++ src/tracker-extract/tracker-extract-pdf.c Tue Jan 10 09:20:16 2012 +@@ -311,10 +311,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info file = tracker_extract_info_get_file (info); filename = g_file_get_path (file); -+#if defined(__linux__) - fd = g_open (filename, O_RDONLY | O_NOATIME, 0); - if (fd == -1 && errno == EPERM) { - fd = g_open (filename, O_RDONLY, 0); - } -+#else -+ fd = g_open (filename, O_RDONLY, 0); -+#endif +- fd = g_open (filename, O_RDONLY | O_NOATIME, 0); +- if (fd == -1 && errno == EPERM) { +- fd = g_open (filename, O_RDONLY, 0); +- } ++ fd = tracker_file_open_fd (filename); if (fd == -1) { g_warning ("Could not open pdf file '%s': %s\n", diff --git a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-text_c b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-text_c index 91fcee9654d..ae9221063e5 100644 --- a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-text_c +++ b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-text_c @@ -1,21 +1,18 @@ -$OpenBSD: patch-src_tracker-extract_tracker-extract-text_c,v 1.5 2011/12/21 14:20:06 ajacoutot Exp $ +$OpenBSD: patch-src_tracker-extract_tracker-extract-text_c,v 1.6 2012/01/22 15:13:23 ajacoutot Exp $ https://bugzilla.gnome.org/show_bug.cgi?id=666654 --- src/tracker-extract/tracker-extract-text.c.orig Fri Dec 16 16:37:39 2011 -+++ src/tracker-extract/tracker-extract-text.c Fri Dec 16 18:02:12 2011 -@@ -58,10 +58,14 @@ get_file_content (GFile *file, ++++ src/tracker-extract/tracker-extract-text.c Tue Jan 10 09:20:33 2012 +@@ -58,10 +58,7 @@ get_file_content (GFile *file, /* Get filename from URI */ path = g_file_get_path (file); -+#if defined(__linux__) - fd = g_open (path, O_RDONLY | O_NOATIME, 0); - if (fd == -1 && errno == EPERM) { - fd = g_open (path, O_RDONLY, 0); - } -+#else -+ fd = g_open (path, O_RDONLY, 0); -+#endif +- fd = g_open (path, O_RDONLY | O_NOATIME, 0); +- if (fd == -1 && errno == EPERM) { +- fd = g_open (path, O_RDONLY, 0); +- } ++ fd = tracker_file_open_fd (path); if (fd == -1) { g_message ("Could not open file '%s': %s", diff --git a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-tiff_c b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-tiff_c index 27c7a8ee994..58e146d066b 100644 --- a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-tiff_c +++ b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-tiff_c @@ -1,21 +1,18 @@ -$OpenBSD: patch-src_tracker-extract_tracker-extract-tiff_c,v 1.3 2011/12/21 14:20:06 ajacoutot Exp $ +$OpenBSD: patch-src_tracker-extract_tracker-extract-tiff_c,v 1.4 2012/01/22 15:13:23 ajacoutot Exp $ https://bugzilla.gnome.org/show_bug.cgi?id=666654 ---- src/tracker-extract/tracker-extract-tiff.c.orig Mon Sep 26 11:27:18 2011 -+++ src/tracker-extract/tracker-extract-tiff.c Mon Sep 26 12:31:34 2011 -@@ -291,10 +291,14 @@ tracker_extract_get_metadata (TrackerExtractInfo *info +--- src/tracker-extract/tracker-extract-tiff.c.orig Fri Dec 16 16:24:23 2011 ++++ src/tracker-extract/tracker-extract-tiff.c Tue Jan 10 09:19:37 2012 +@@ -291,10 +291,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info metadata = tracker_extract_info_get_metadata_builder (info); graph = tracker_extract_info_get_graph (info); -+#if defined(__linux__) - fd = g_open (filename, O_RDONLY | O_NOATIME, 0); - if (fd == -1 && errno == EPERM) { - fd = g_open (filename, O_RDONLY, 0); - } -+#else -+ fd = g_open (filename, O_RDONLY, 0); -+#endif +- fd = g_open (filename, O_RDONLY | O_NOATIME, 0); +- if (fd == -1 && errno == EPERM) { +- fd = g_open (filename, O_RDONLY, 0); +- } ++ fd = tracker_file_open_fd (filename); if (fd == -1) { g_warning ("Could not open tiff file '%s': %s\n", diff --git a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-xmp_c b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-xmp_c index a65ea083fda..dfc43e56ae3 100644 --- a/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-xmp_c +++ b/x11/gnome/tracker/patches/patch-src_tracker-extract_tracker-extract-xmp_c @@ -1,21 +1,18 @@ -$OpenBSD: patch-src_tracker-extract_tracker-extract-xmp_c,v 1.3 2011/12/21 14:20:06 ajacoutot Exp $ +$OpenBSD: patch-src_tracker-extract_tracker-extract-xmp_c,v 1.4 2012/01/22 15:13:23 ajacoutot Exp $ https://bugzilla.gnome.org/show_bug.cgi?id=666654 ---- src/tracker-extract/tracker-extract-xmp.c.orig Mon Sep 26 11:27:38 2011 -+++ src/tracker-extract/tracker-extract-xmp.c Mon Sep 26 12:31:47 2011 -@@ -154,10 +154,14 @@ tracker_extract_get_metadata (TrackerExtractInfo *info +--- src/tracker-extract/tracker-extract-xmp.c.orig Fri Dec 16 16:24:23 2011 ++++ src/tracker-extract/tracker-extract-xmp.c Tue Jan 10 09:19:59 2012 +@@ -154,10 +154,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info preupdate = tracker_extract_info_get_preupdate_builder (info); metadata = tracker_extract_info_get_metadata_builder (info); -+#if defined(__linux__) - fd = g_open (filename, O_RDONLY | O_NOATIME, 0); - if (fd == -1 && errno == EPERM) { - fd = g_open (filename, O_RDONLY, 0); - } -+#else -+ fd = g_open (filename, O_RDONLY, 0); -+#endif +- fd = g_open (filename, O_RDONLY | O_NOATIME, 0); +- if (fd == -1 && errno == EPERM) { +- fd = g_open (filename, O_RDONLY, 0); +- } ++ fd = tracker_file_open_fd (filename); if (fd == -1) { g_warning ("Could not open xmp file '%s': %s\n",