Skip to content
Snippets Groups Projects
Commit a4b7afcd authored by Simon McVittie's avatar Simon McVittie
Browse files

pv_bwrap_run_sync: Output the exit status

parent 67e03d71
Branches
Tags
No related merge requests found
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
/** /**
* pv_bwrap_run_sync: * pv_bwrap_run_sync:
* @bwrap: A #FlatpakBwrap on which flatpak_bwrap_finish() has been called * @bwrap: A #FlatpakBwrap on which flatpak_bwrap_finish() has been called
* @exit_status_out: (out) (optional): Used to return the exit status,
* or -1 if it could not be launched or was killed by a signal
* @error: Used to raise an error on failure * @error: Used to raise an error on failure
* *
* Try to run a command. Its standard output and standard error go to * Try to run a command. Its standard output and standard error go to
...@@ -38,6 +40,7 @@ ...@@ -38,6 +40,7 @@
*/ */
gboolean gboolean
pv_bwrap_run_sync (FlatpakBwrap *bwrap, pv_bwrap_run_sync (FlatpakBwrap *bwrap,
int *exit_status_out,
GError **error) GError **error)
{ {
gint exit_status; gint exit_status;
...@@ -53,6 +56,9 @@ pv_bwrap_run_sync (FlatpakBwrap *bwrap, ...@@ -53,6 +56,9 @@ pv_bwrap_run_sync (FlatpakBwrap *bwrap,
g_return_val_if_fail (pv_bwrap_was_finished (bwrap), FALSE); g_return_val_if_fail (pv_bwrap_was_finished (bwrap), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
if (exit_status_out != NULL)
*exit_status_out = -1;
for (i = 0; i < bwrap->argv->len; i++) for (i = 0; i < bwrap->argv->len; i++)
{ {
g_autofree gchar *quoted = NULL; g_autofree gchar *quoted = NULL;
...@@ -87,6 +93,12 @@ pv_bwrap_run_sync (FlatpakBwrap *bwrap, ...@@ -87,6 +93,12 @@ pv_bwrap_run_sync (FlatpakBwrap *bwrap,
g_print ("%s", output); g_print ("%s", output);
g_printerr ("%s", errors); g_printerr ("%s", errors);
if (exit_status_out != NULL)
{
if (WIFEXITED (exit_status))
*exit_status_out = WEXITSTATUS (exit_status);
}
if (!g_spawn_check_exit_status (exit_status, error)) if (!g_spawn_check_exit_status (exit_status, error))
return FALSE; return FALSE;
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "glib-backports.h" #include "glib-backports.h"
gboolean pv_bwrap_run_sync (FlatpakBwrap *bwrap, gboolean pv_bwrap_run_sync (FlatpakBwrap *bwrap,
int *exit_status_out,
GError **error); GError **error);
gboolean pv_bwrap_execve (FlatpakBwrap *bwrap, gboolean pv_bwrap_execve (FlatpakBwrap *bwrap,
GError **error); GError **error);
......
...@@ -272,7 +272,7 @@ try_bind_dri (FlatpakBwrap *bwrap, ...@@ -272,7 +272,7 @@ try_bind_dri (FlatpakBwrap *bwrap,
NULL); NULL);
flatpak_bwrap_finish (temp_bwrap); flatpak_bwrap_finish (temp_bwrap);
if (!pv_bwrap_run_sync (temp_bwrap, error)) if (!pv_bwrap_run_sync (temp_bwrap, NULL, error))
return FALSE; return FALSE;
g_clear_pointer (&temp_bwrap, flatpak_bwrap_free); g_clear_pointer (&temp_bwrap, flatpak_bwrap_free);
...@@ -294,7 +294,7 @@ try_bind_dri (FlatpakBwrap *bwrap, ...@@ -294,7 +294,7 @@ try_bind_dri (FlatpakBwrap *bwrap,
NULL); NULL);
flatpak_bwrap_finish (temp_bwrap); flatpak_bwrap_finish (temp_bwrap);
if (!pv_bwrap_run_sync (temp_bwrap, error)) if (!pv_bwrap_run_sync (temp_bwrap, NULL, error))
return FALSE; return FALSE;
} }
...@@ -316,7 +316,7 @@ try_bind_dri (FlatpakBwrap *bwrap, ...@@ -316,7 +316,7 @@ try_bind_dri (FlatpakBwrap *bwrap,
NULL); NULL);
flatpak_bwrap_finish (temp_bwrap); flatpak_bwrap_finish (temp_bwrap);
if (!pv_bwrap_run_sync (temp_bwrap, error)) if (!pv_bwrap_run_sync (temp_bwrap, NULL, error))
return FALSE; return FALSE;
} }
...@@ -600,7 +600,7 @@ bind_runtime (FlatpakBwrap *bwrap, ...@@ -600,7 +600,7 @@ bind_runtime (FlatpakBwrap *bwrap,
NULL); NULL);
flatpak_bwrap_finish (temp_bwrap); flatpak_bwrap_finish (temp_bwrap);
if (!pv_bwrap_run_sync (temp_bwrap, error)) if (!pv_bwrap_run_sync (temp_bwrap, NULL, error))
return FALSE; return FALSE;
g_clear_pointer (&temp_bwrap, flatpak_bwrap_free); g_clear_pointer (&temp_bwrap, flatpak_bwrap_free);
...@@ -655,7 +655,7 @@ bind_runtime (FlatpakBwrap *bwrap, ...@@ -655,7 +655,7 @@ bind_runtime (FlatpakBwrap *bwrap,
NULL); NULL);
flatpak_bwrap_finish (temp_bwrap); flatpak_bwrap_finish (temp_bwrap);
if (!pv_bwrap_run_sync (temp_bwrap, NULL, NULL, error)) if (!pv_bwrap_run_sync (temp_bwrap, NULL, error))
return FALSE; return FALSE;
g_clear_pointer (&temp_bwrap, flatpak_bwrap_free); g_clear_pointer (&temp_bwrap, flatpak_bwrap_free);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment