Nach obigen Vorbereitigungen (mein letztes Posting) erfolgt das Erstellen des eom-Paketes wie folgt:
Hinweis 1) Du kannst alle Schritte als User machen, mußt also nicht als root arbeiten. Im Procedere wird an manchen stellen Rootrechte gebraucht, das wird dann per sudo bemacht. Root-Rechte brauchst du wenn im Zuge des Erstellens (makepkg) zusätzliche Pakete gebraucht werden und beim anschließenden Installieren des neuen Paketes. Ich gehe jetzt mal davon aus das sudo bei dir funktioniert.
Hinweis 2) Wir verwenden den gleichen Code für eom-1.28.0-3 auf dem dein aktuelles eom beruht als Basis. Im PKGBUILD wird lediglich der Patch hinzugefügt, der dann vor erstellen Teile des Sourcecodes anpasst.
Hinweis 3) Wir arbeiten unten die Schritte in einem Terminal ab, ich würde raten dieses Terminal nur für die Schritte zu verwenden, wenn du Dinge darin prüfen/nachgucken willst nimm ein anderes Terminal oder Dateimanager. Es ist wichtig, daß wir im Arbeitsterminal immer in bestimmten Verzeichnissen sind für die Schritte.
Hinweis 4) Wenn bei irgendeinem der Schritte unten (1-7) irgendwas nicht funktioniert, Fehler ausgibt oder Fragen entstehen, dann bitte fragen und/oder den Befehl und die Ausgaben in Code-Blocks posten.
Das Erstellen im Einzelnen
- Arbeitsverzeichnis erstellen im $HOME
mkdir $HOME/build
cd $HOME/build
- Das aktuelle Archlinux Erstellungs-Repository zu eom clonen
git clone https://gitlab.archlinux.org/archlinux/packaging/packages/eom.git
In das neue Verzeichnis wechseln
cd eom
cp PKGBUILD PKGBUILD.org
Als wesentlich "Einziges" ist da nun nur eine Datei PKGBUILD drin. Das ist der Archlinux-Weg um Pakete für pacman zu erstellen. Darin gibt es Variablen für den Quellcode (Upstream-Code), andere zum Erstellen notwendige Quellen, und woher diese bezogen werden.
Weiterhin Angaben welche zusätzlichen Pakete gebraucht werden um das neu erstellte Paket zu installieren (depends) und Pakete, die nur zur Erstellung benötigt werden (makedepends)
Weiterhin mehrere Funktionen, um das Paket letztendlich zu erstelllen (prepare,build,package).
Siehst im Prinzip aus wie ein Shellscript, ist aber keines. Es wird ein Tool benötigt, welches den Gesamt-Prozess anhand den Angaben im PKGBUILD abarbeitet. Wir verwenden dazu makepkg
Wir wollen nun nicht das Paket genauso bauen wie das aktuell installierte (mit Fehler), wir wollen ein geändertes, "gepatchtes" Paket bauen. Dazu brauchen wir einen Patch und ein anderes PKGBUILD, welches den Patch anwendet.
Wir ersetzten das aktuelle PKGBUILD durch das neue (unten). Text markieren und als neue Datei PKGBUILD im Arbeitsverzeichnis $HOME/build/eom abspeichern.
Genauso brauchen wir den Patch (unten) im Arbeitsverzeichnis. Markieren und speichern als use_fast_content_type_as_fallback.patch
Ein ls sollte nun so aussehen:
$ ls
PKGBUILD PKGBUILD.org use_fast_content_type_as_fallback.patch
4a.
Das Forum hier ist der denkmöglichst schlechteste Platz um sowas wie PKGBUILD/Patch-Dateien zu Verfügung zu stellen. Ich habe aktuell keine andere. In den PKGBUILDs werden Quelldateien(source=) zur Sicherheit mit Prüfsummen auf ihre Integrität geprüft. Durch das händische Kopieren aus diesem Beitrag raus kann sich der Text nun "verändern" (Tabs/Leerzeichen...)
Bei mir ist die Prüfsumme für die Datei mit dem Patch folgende (diese ist auch im PKGBUILD hinterlegt):
$ sha256sum use_fast_content_type_as_fallback.patch
f4a9819c04c6cfaeb90f818a8a798328d47e3b07da3a4164c3f000bf51178342 use_fast_content_type_as_fallback.patch
Wenn du bei dir nun diesen Befehl absetzt sollte die Prüfsumme die Gleiche sein. Wenn nicht - und du sicher bist jede Zeile aus dem Codeblock unten kopiert zu haben, dann mußt du fürs PKGBUILD die Prüfsumme anpassen. Dazu gibt es einen Befehl:
updpkgsums
Der trägt die aktuelle Prüfsumme ins PKGBUILD ein.
Jetzt gehts ans Bauen.
Wir nutzen makepkg, als Optionen lassen wir fürs Bauen notwendige Pakete installieren (-s) und nach dem Bauen wieder entfernen (-r). Mit (-L) lassen wir Logs erstellen. Wir lassen das neu erstellte Paket nicht gleich mitinstallieren, das machen wir in einem extra Schritt. Im Zuge des makepkg wirst du nach deinem sudo-Passwort gefragt, daß ist notwendig um die Zuatzpakete installieren zu dürfen.
makepkg -s -r -L
# Hier "passiert" nun eine Menge, bei Erfolg sollten die letzten Ausgaben in etwa so aussehen (etwas gekürzt)
# ==> Creating package "eom"...
# ==> Creating package "eom-debug"...
# ==> Finished making: eom 1.28.0-3 (Fri May 16 09:43:43 2025)
Ein ls sollte jetzt etwa so aussehen:
$ ls
eom-1.28.0-3-x86_64-build.log eom-1.28.0-3-x86_64-prepare.log PKGBUILD
eom-1.28.0-3-x86_64-package.log eom-1.28.0.tar.gz PKGBUILD.org
eom-1.28.0-3-x86_64.pkg.tar.zst eom-debug-1.28.0-3-x86_64.pkg.tar.zst use_fast_content_type_as_fallback.patch
Am wichtigsten sind die beiden *.pkg.tar.zst Dateien, das sind die von dir gerade erstellten neuen Pakete für eom.
Wir installieren das neue Paket
sudo pacman -U eom-1.28.0-3-x86_64.pkg.tar.zst
Das ersetzt nun das offizielle eom Paket durch das neu erstellte. Die Versionsnummer ist die gleiche.
//Edit: Auf das ebenfalls erstellte eom-debug Paket verzichten wir, ist nicht nötig.
6a. Du kannst jederzeit später die gepatchte Version wieder durch das Original ersetzen mit
pacman -Syu eom
So, und jetzt wäre es an der Zeit mit der neuen Version einen Test zu machen:
eom "/run/user/1000/gvfs/smb-share:server=lager1,share=homes/manfred/data/tt040-.png"
Wird das PNG nun angezeigt? Oder kommen auch Crashmeldungen oder sonstwas? Explodiert dein Rechner? <g>
Die Dateien
Das neue PKGBUILD sieht so aus:
# Maintainer: Alexander Epaneshnikov <alex19ep@archlinux.org>
# Contributor: Brad Fanella <cesura@archlinux.org>
# Contributor: Martin Wimpress <code@flexion.org>
pkgname=eom
pkgver=1.28.0
pkgrel=3
pkgdesc="An image viewer for MATE"
url="https://mate-desktop.org"
arch=('x86_64')
license=('GPL-2.0-or-later')
depends=('dbus-glib' 'gobject-introspection-runtime' 'gettext' 'exempi' 'lcms2' 'libexif' 'libjpeg-turbo' 'mate-desktop' 'libpeas')
makedepends=('autoconf-archive' 'glib2-devel' 'gobject-introspection' 'mate-common' 'itstool' 'yelp-tools')
optdepends=('webp-pixbuf-loader: webp image format support')
groups=('mate-extra')
conflicts=('eom-gtk3')
replaces=('eom-gtk3')
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/mate-desktop/eom/archive/refs/tags/v${pkgver}.tar.gz" use_fast_content_type_as_fallback.patch)
sha256sums=('095ab4ae210662b0f2c9b4b8099962cd50f7ca8d4c59b01fe118686ab617a3a9'
'f4a9819c04c6cfaeb90f818a8a798328d47e3b07da3a4164c3f000bf51178342')
prepare() {
cd "${pkgname}-${pkgver}"
patch -Np1 -i ../use_fast_content_type_as_fallback.patch
./autogen.sh
}
build() {
cd "${pkgname}-${pkgver}"
./configure \
--prefix=/usr \
--localstatedir=/var \
--with-librsvg
make
}
package() {
cd "${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
}
Hier haben sich nun geändert gegenüber dem Original:
- Die Datei mit dem Patch ist nun Teil der Quellen
- In prepare() wird der Patch angewandt.
Hier nun der Patch:
diff -ura eom-1.28.0.orig/src/eom-file-chooser.c eom-1.28.0.new/src/eom-file-chooser.c
--- eom-1.28.0.orig/src/eom-file-chooser.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-file-chooser.c 2025-05-15 14:27:31.048396805 +0200
@@ -29,6 +29,7 @@
#include <glib/gi18n.h>
#include <gio/gio.h>
#include <gtk/gtk.h>
+#include "eom-util.h"
/* We must define MATE_DESKTOP_USE_UNSTABLE_API to be able
to use MateDesktopThumbnail */
@@ -333,7 +334,8 @@
G_FILE_ATTRIBUTE_TIME_MODIFIED ","
G_FILE_ATTRIBUTE_STANDARD_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_SIZE ","
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, NULL);
g_object_unref (file);
@@ -352,7 +354,7 @@
/* read files smaller than 100kb directly */
gchar *mime_type = g_content_type_get_mime_type (
- g_file_info_get_content_type (file_info));
+ eom_util_get_content_type_with_fallback (file_info));
if (G_LIKELY (mime_type)) {
gboolean can_thumbnail, has_failed;
diff -ura eom-1.28.0.orig/src/eom-image.c eom-1.28.0.new/src/eom-image.c
--- eom-1.28.0.orig/src/eom-image.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-image.c 2025-05-15 11:48:09.681383577 +0200
@@ -589,7 +589,8 @@
file_info = g_file_query_info (img->priv->file,
G_FILE_ATTRIBUTE_STANDARD_SIZE ","
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, error);
if (file_info == NULL) {
@@ -607,8 +608,9 @@
if (bytes)
*bytes = g_file_info_get_size (file_info);
- if (mime_type)
- *mime_type = g_strdup (g_file_info_get_content_type (file_info));
+ if (mime_type) {
+ *mime_type = g_strdup (eom_util_get_content_type_with_fallback (file_info));
+ }
g_object_unref (file_info);
}
}
diff -ura eom-1.28.0.orig/src/eom-jobs.c eom-1.28.0.new/src/eom-jobs.c
--- eom-1.28.0.orig/src/eom-jobs.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-jobs.c 2025-05-15 11:58:21.761198550 +0200
@@ -30,6 +30,7 @@
#include "eom-list-store.h"
#include "eom-thumbnail.h"
#include "eom-pixbuf-util.h"
+#include "eom-util.h"
#include <gdk-pixbuf/gdk-pixbuf.h>
@@ -383,7 +384,9 @@
if (file != NULL) {
file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_TYPE","G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_TYPE","
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, NULL);
if (file_info == NULL) {
type = G_FILE_TYPE_UNKNOWN;
@@ -395,7 +398,7 @@
if (G_UNLIKELY (type == G_FILE_TYPE_UNKNOWN)) {
const gchar *ctype;
- ctype = g_file_info_get_content_type (file_info);
+ ctype = eom_util_get_content_type_with_fallback (file_info);
/* If the content type is supported
adjust the file_type */
diff -ura eom-1.28.0.orig/src/eom-list-store.c eom-1.28.0.new/src/eom-list-store.c
--- eom-1.28.0.orig/src/eom-list-store.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-list-store.c 2025-05-15 12:12:22.441445630 +0200
@@ -26,6 +26,7 @@
#include "eom-image.h"
#include "eom-job-queue.h"
#include "eom-jobs.h"
+#include "eom-util.h"
#include <string.h>
@@ -377,12 +378,13 @@
case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
file_info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME,
0, NULL, NULL);
if (file_info == NULL) {
break;
}
- mimetype = g_file_info_get_content_type (file_info);
+ mimetype = eom_util_get_content_type_with_fallback (file_info);
if (is_file_in_list_store_file (store, file, &iter)) {
if (eom_image_is_supported_mime_type (mimetype)) {
@@ -418,12 +420,13 @@
if (!is_file_in_list_store_file (store, file, NULL)) {
file_info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME,
0, NULL, NULL);
if (file_info == NULL) {
break;
}
- mimetype = g_file_info_get_content_type (file_info);
+ mimetype = eom_util_get_content_type_with_fallback (file_info);
if (eom_image_is_supported_mime_type (mimetype)) {
const gchar *caption;
@@ -436,12 +439,13 @@
break;
case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED:
file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, NULL);
if (file_info == NULL) {
break;
}
- mimetype = g_file_info_get_content_type (file_info);
+ mimetype = eom_util_get_content_type_with_fallback (file_info);
if (is_file_in_list_store_file (store, file, &iter) &&
eom_image_is_supported_mime_type (mimetype)) {
eom_list_store_thumbnail_refresh (store, &iter);
@@ -467,7 +471,7 @@
gboolean load_uri = FALSE;
const char *mime_type, *name;
- mime_type = g_file_info_get_content_type (children_info);
+ mime_type = eom_util_get_content_type_with_fallback (children_info);
name = g_file_info_get_name (children_info);
if (!g_str_has_prefix (name, ".")) {
@@ -511,6 +515,7 @@
file_enumerator = g_file_enumerate_children (file,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
G_FILE_ATTRIBUTE_STANDARD_NAME,
0, NULL, NULL);
@@ -563,6 +568,7 @@
file_info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_TYPE","
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE","
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME,
0, NULL, NULL);
if (file_info == NULL) {
@@ -576,7 +582,7 @@
if (G_UNLIKELY (file_type == G_FILE_TYPE_UNKNOWN)) {
const gchar *ctype;
- ctype = g_file_info_get_content_type (file_info);
+ ctype = eom_util_get_content_type_with_fallback (file_info);
/* If the content type is supported adjust file_type */
if (eom_image_is_supported_mime_type (ctype))
diff -ura eom-1.28.0.orig/src/eom-metadata-sidebar.c eom-1.28.0.new/src/eom-metadata-sidebar.c
--- eom-1.28.0.orig/src/eom-metadata-sidebar.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-metadata-sidebar.c 2025-05-15 12:16:41.688144557 +0200
@@ -158,14 +158,15 @@
file = eom_image_get_file (img);
file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, NULL);
if (file_info == NULL) {
str = g_strdup (_("Unknown"));
} else {
const gchar *mime_str;
- mime_str = g_file_info_get_content_type (file_info);
+ mime_str = eom_util_get_content_type_with_fallback (file_info);
str = g_content_type_get_description (mime_str);
g_object_unref (file_info);
}
diff -ura eom-1.28.0.orig/src/eom-thumbnail.c eom-1.28.0.new/src/eom-thumbnail.c
--- eom-1.28.0.orig/src/eom-thumbnail.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-thumbnail.c 2025-05-15 12:31:27.814149372 +0200
@@ -36,6 +36,7 @@
#include "eom-thumbnail.h"
#include "eom-list-store.h"
#include "eom-debug.h"
+#include "eom-util.h"
#define EOM_THUMB_ERROR eom_thumb_error_quark ()
@@ -161,6 +162,7 @@
file_info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_TIME_MODIFIED ","
G_FILE_ATTRIBUTE_THUMBNAIL_PATH ","
G_FILE_ATTRIBUTE_THUMBNAILING_FAILED ","
@@ -176,7 +178,7 @@
/* if available, copy data */
data->mtime = g_file_info_get_attribute_uint64 (file_info,
G_FILE_ATTRIBUTE_TIME_MODIFIED);
- data->mime_type = g_strdup (g_file_info_get_content_type (file_info));
+ data->mime_type = g_strdup (eom_util_get_content_type_with_fallback (file_info));
data->thumb_exists = (g_file_info_get_attribute_byte_string (file_info,
G_FILE_ATTRIBUTE_THUMBNAIL_PATH) != NULL);
diff -ura eom-1.28.0.orig/src/eom-thumb-view.c eom-1.28.0.new/src/eom-thumb-view.c
--- eom-1.28.0.orig/src/eom-thumb-view.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-thumb-view.c 2025-05-15 14:35:29.351606852 +0200
@@ -27,6 +27,7 @@
#include "eom-list-store.h"
#include "eom-image.h"
#include "eom-job-queue.h"
+#include "eom-util.h"
#ifdef HAVE_EXIF
#include "eom-exif-util.h"
@@ -494,7 +495,8 @@
file = eom_image_get_file (image);
file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, NULL);
g_object_unref (file);
if (file_info == NULL) {
@@ -502,7 +504,7 @@
return NULL;
}
- mime_str = g_file_info_get_content_type (file_info);
+ mime_str = eom_util_get_content_type_with_fallback (file_info);
if (G_UNLIKELY (mime_str == NULL)) {
g_free (bytes);
diff -ura eom-1.28.0.orig/src/eom-util.c eom-1.28.0.new/src/eom-util.c
--- eom-1.28.0.orig/src/eom-util.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-util.c 2025-05-15 14:18:55.003390759 +0200
@@ -482,3 +482,21 @@
return TRUE;
}
+
+const char*
+eom_util_get_content_type_with_fallback (GFileInfo *file_info)
+{
+ g_return_val_if_fail (file_info != NULL, NULL);
+
+ if (g_file_info_has_attribute (file_info,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE))
+ return g_file_info_get_content_type (file_info);
+ else if (g_file_info_has_attribute (file_info,
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE))
+ return g_file_info_get_attribute_string (file_info,
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE);
+ else
+ g_warn_if_reached ();
+
+ return NULL;
+}
diff -ura eom-1.28.0.orig/src/eom-util.h eom-1.28.0.new/src/eom-util.h
--- eom-1.28.0.orig/src/eom-util.h 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-util.h 2025-05-15 12:38:56.841583941 +0200
@@ -65,6 +65,9 @@
void eom_util_show_file_in_filemanager (GFile *file,
GtkWindow *toplevel);
+G_GNUC_INTERNAL
+const char *eom_util_get_content_type_with_fallback (GFileInfo *file_info);
+
gboolean eom_notebook_scroll_event_cb (GtkWidget *notebook,
GdkEventScroll *event);
diff -ura eom-1.28.0.orig/src/eom-window.c eom-1.28.0.new/src/eom-window.c
--- eom-1.28.0.orig/src/eom-window.c 2024-02-14 00:27:39.000000000 +0100
+++ eom-1.28.0.new/src/eom-window.c 2025-05-15 12:55:17.525699272 +0200
@@ -738,7 +738,8 @@
return FALSE;
file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, NULL);
if (file_info == NULL)
return FALSE;
@@ -746,7 +747,7 @@
recent_data = g_slice_new (GtkRecentData);
recent_data->display_name = NULL;
recent_data->description = NULL;
- recent_data->mime_type = (gchar *) g_file_info_get_content_type (file_info);
+ recent_data->mime_type = (gchar *) eom_util_get_content_type_with_fallback (file_info);
recent_data->app_name = EOM_RECENT_FILES_APP_NAME;
recent_data->app_exec = g_strjoin(" ", g_get_prgname (), "%u", NULL);
recent_data->groups = groups;
@@ -955,13 +956,14 @@
file = eom_image_get_file (image);
file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0, NULL, NULL);
if (file_info == NULL)
return;
else {
- mime_type = g_file_info_get_content_type (file_info);
+ mime_type = eom_util_get_content_type_with_fallback (file_info);
}
if (priv->open_with_menu_id != 0) {
Der Patch für unser eom basiert auf den Änderungen, die auch im Gnome-eog vorgenommen wurden.
Grundlegend:
Der mime-Typ/Infos wurde bisher über die gvfs/gio Funktion g_file_info_get_content_type ermittelt. Ausgewertet wurde dabei für Content nur G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE als notwendiger Wert. Durch den Fehler/Änderung im gvfs(-smb) wird dieses Feld aber nicht belegt.
Deshalb wird in der Sourcedatei eom-util.c eine neue Funktion erstellt, die auch den G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE berücksichtigt. Alle relevanten Aufrufe der alten Funktion zur Ermittling des mime_type werden nun auf diese neue Funktion ümgeändert.
Das macht im wesentlichen der Patch.