From b511bd1efb43ffc49c753e309717a242ec686ef1 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Tue, 1 Apr 2014 17:23:36 +0100
Subject: [PATCH] gdk-pixbuf: add an option so that loader errors are fatal

If an environment variable is specified set the return value from main() to
non-zero if the loader had errors (missing libraries, generally).

Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/merge_requests/144]
Signed-off-by: Ross Burton <ross.burton@intel.com>

---
 gdk-pixbuf/queryloaders.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/gdk-pixbuf/queryloaders.c b/gdk-pixbuf/queryloaders.c
index 1d39b44..2b00815 100644
--- a/gdk-pixbuf/queryloaders.c
+++ b/gdk-pixbuf/queryloaders.c
@@ -216,7 +216,7 @@ write_loader_info (GString *contents, const char *path, GdkPixbufFormat *info)
         g_string_append_c (contents, '\n');
 }
 
-static void
+static gboolean
 query_module (GString *contents, const char *dir, const char *file)
 {
         char *path;
@@ -225,6 +225,7 @@ query_module (GString *contents, const char *dir, const char *file)
         void                    (*fill_vtable)   (GdkPixbufModule *module);
         gpointer fill_info_ptr;
         gpointer fill_vtable_ptr;
+        gboolean ret = TRUE;
 
         if (g_path_is_absolute (file))
                 path = g_strdup (file);
@@ -274,10 +275,13 @@ query_module (GString *contents, const char *dir, const char *file)
                                    g_module_error());
                 else
                         g_fprintf (stderr, "Cannot load loader %s\n", path);
+                ret = FALSE;
         }
         if (module)
                 g_module_close (module);
         g_free (path);
+
+        return ret;
 }
 
 #if defined(G_OS_WIN32) && defined(GDK_PIXBUF_RELOCATABLE)
@@ -318,6 +322,7 @@ int main (int argc, char **argv)
         gint first_file = 1;
         GFile *pixbuf_libdir_file;
         gchar *pixbuf_libdir;
+        gboolean success = TRUE;
 
 #ifdef G_OS_WIN32
         gchar *libdir;
@@ -456,7 +461,9 @@ int main (int argc, char **argv)
                 }
                 modules = g_list_sort (modules, (GCompareFunc)strcmp);
                 for (l = modules; l != NULL; l = l->next)
-                        query_module (contents, moduledir, l->data);
+                        if (!query_module (contents, moduledir, l->data))
+                                success = FALSE;
+
                 g_list_free_full (modules, g_free);
                 g_free (moduledir);
 #else
@@ -472,7 +479,8 @@ int main (int argc, char **argv)
                         infilename = g_locale_to_utf8 (infilename,
                                                        -1, NULL, NULL, NULL);
 #endif
-                        query_module (contents, cwd, infilename);
+                        if (!query_module (contents, cwd, infilename))
+                                success = FALSE;
                 }
                 g_free (cwd);
         }
@@ -490,5 +498,8 @@ int main (int argc, char **argv)
 
         g_free (pixbuf_libdir);
 
-        return 0;
+        if (g_getenv ("GDK_PIXBUF_FATAL_LOADER"))
+                return success ? 0 : 1;
+        else
+                return 0;
 }
