mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-31 16:32:18 +01:00 
			
		
		
		
	glib-compile-resources: Forward errors from spawned processes
We just grab stderr from gdk-pixbuf-to-csource and xmllint and include it in the error message. It's the best we can do.
This commit is contained in:
		
				
					committed by
					
						 Matthias Clasen
						Matthias Clasen
					
				
			
			
				
	
			
			
			
						parent
						
							0a22710d67
						
					
				
				
					commit
					d98eed087d
				
			| @@ -272,6 +272,7 @@ end_element (GMarkupParseContext  *context, | ||||
|       if (state->preproc_options) | ||||
|         { | ||||
|           gchar **options; | ||||
|           gchar *stderr_child = NULL; | ||||
|           guint i; | ||||
|           gboolean xml_stripblanks = FALSE; | ||||
|           gboolean to_pixdata = FALSE; | ||||
| @@ -324,9 +325,8 @@ end_element (GMarkupParseContext  *context, | ||||
|               g_assert (argc <= G_N_ELEMENTS (argv)); | ||||
|  | ||||
|               if (!g_spawn_sync (NULL /* cwd */, argv, NULL /* envv */, | ||||
|                                  G_SPAWN_STDOUT_TO_DEV_NULL | | ||||
|                                  G_SPAWN_STDERR_TO_DEV_NULL, | ||||
|                                  NULL, NULL, NULL, NULL, &status, &my_error)) | ||||
|                                  G_SPAWN_STDOUT_TO_DEV_NULL, | ||||
|                                  NULL, NULL, NULL, &stderr_child, &status, &my_error)) | ||||
|                 { | ||||
|                   g_propagate_error (error, my_error); | ||||
|                   goto cleanup; | ||||
| @@ -334,12 +334,13 @@ end_element (GMarkupParseContext  *context, | ||||
| #ifdef HAVE_SYS_WAIT_H | ||||
|               if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) | ||||
|                 { | ||||
|                   g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, | ||||
|                                       _("Error processing input file with xmllint")); | ||||
|                   g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, | ||||
|                                _("Error processing input file with xmllint:\n%s"), stderr_child); | ||||
|                   goto cleanup; | ||||
|                 } | ||||
| #endif | ||||
|  | ||||
|               g_free (stderr_child); | ||||
|               g_free (real_file); | ||||
|               real_file = g_strdup (tmp_file); | ||||
|             } | ||||
| @@ -347,6 +348,7 @@ end_element (GMarkupParseContext  *context, | ||||
|           if (to_pixdata) | ||||
|             { | ||||
|               gchar *argv[4]; | ||||
|               gchar *stderr_child = NULL; | ||||
|               int status, fd, argc; | ||||
|  | ||||
|               if (gdk_pixbuf_pixdata == NULL) | ||||
| @@ -379,9 +381,8 @@ end_element (GMarkupParseContext  *context, | ||||
|               g_assert (argc <= G_N_ELEMENTS (argv)); | ||||
|  | ||||
|               if (!g_spawn_sync (NULL /* cwd */, argv, NULL /* envv */, | ||||
|                                  G_SPAWN_STDOUT_TO_DEV_NULL | | ||||
|                                  G_SPAWN_STDERR_TO_DEV_NULL, | ||||
|                                  NULL, NULL, NULL, NULL, &status, &my_error)) | ||||
|                                  G_SPAWN_STDOUT_TO_DEV_NULL, | ||||
|                                  NULL, NULL, NULL, &stderr_child, &status, &my_error)) | ||||
|                 { | ||||
|                   g_propagate_error (error, my_error); | ||||
|                   goto cleanup; | ||||
| @@ -389,12 +390,13 @@ end_element (GMarkupParseContext  *context, | ||||
| #ifdef HAVE_SYS_WAIT_H | ||||
|               if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) | ||||
|                 { | ||||
|                   g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, | ||||
| 				       _("Error processing input file with to-pixdata")); | ||||
|                   g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, | ||||
| 			       _("Error processing input file with to-pixdata:\n%s"), stderr_child); | ||||
|                   goto cleanup; | ||||
|                 } | ||||
| #endif | ||||
|  | ||||
|               g_free (stderr_child); | ||||
|               g_free (real_file); | ||||
|               real_file = g_strdup (tmp_file2); | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user