Skip to content
Snippets Groups Projects

Move pressure-vessel-adverb subprocess supervision into common code

Merged Simon McVittie requested to merge wip/smcv/into-library2 into main
Files
4
+ 29
25
@@ -53,7 +53,7 @@
static const char * const *global_original_environ = NULL;
static GPtrArray *global_ld_so_conf_entries = NULL;
static SrtProcessManager *global_process_manager = NULL;
static SrtProcessManagerOptions *global_options = NULL;
static gboolean opt_batch = FALSE;
static gboolean opt_create = FALSE;
static gboolean opt_exit_with_parent = FALSE;
@@ -100,8 +100,8 @@ opt_fd_cb (const char *name,
gpointer data,
GError **error)
{
return _srt_process_manager_lock_fd_cli (global_process_manager,
name, value, error);
return _srt_process_manager_options_lock_fd_cli (global_options,
name, value, error);
}
static gboolean
@@ -210,8 +210,8 @@ opt_assign_fd_cb (const char *name,
gpointer data,
GError **error)
{
return _srt_process_manager_assign_fd_cli (global_process_manager,
name, value, error);
return _srt_process_manager_options_assign_fd_cli (global_options,
name, value, error);
}
static gboolean
@@ -220,8 +220,8 @@ opt_pass_fd_cb (const char *name,
gpointer data,
GError **error)
{
return _srt_process_manager_pass_fd_cli (global_process_manager,
name, value, error);
return _srt_process_manager_options_pass_fd_cli (global_options,
name, value, error);
}
static gboolean
@@ -362,8 +362,8 @@ opt_lock_file_cb (const char *name,
if (lock == NULL)
return FALSE;
_srt_process_manager_take_lock (global_process_manager,
g_steal_pointer (&lock));
_srt_process_manager_options_take_lock (global_options,
g_steal_pointer (&lock));
return TRUE;
}
@@ -829,11 +829,12 @@ int
main (int argc,
char *argv[])
{
g_auto(SrtProcessManager) process_manager = SRT_PROCESS_MANAGER_INIT;
g_auto(SrtProcessManagerOptions) process_manager_options = SRT_PROCESS_MANAGER_OPTIONS_INIT;
g_auto(GStrv) original_environ = NULL;
g_autoptr(GPtrArray) ld_so_conf_entries = NULL;
g_autoptr(GOptionContext) context = NULL;
g_autoptr(GError) local_error = NULL;
g_autoptr(SrtProcessManager) process_manager = NULL;
GError **error = &local_error;
int ret = EX_USAGE;
g_autofree gchar *locales_temp_dir = NULL;
@@ -844,7 +845,7 @@ main (int argc,
setlocale (LC_ALL, "");
global_process_manager = &process_manager;
global_options = &process_manager_options;
original_environ = g_get_environ ();
global_original_environ = (const char * const *) original_environ;
@@ -929,25 +930,28 @@ main (int argc,
ret = EX_UNAVAILABLE;
process_manager.close_fds = TRUE;
process_manager.dump_parameters = TRUE;
process_manager.exit_with_parent = !!opt_exit_with_parent;
process_manager.forward_signals = TRUE;
process_manager.subreaper = (opt_subreaper || opt_terminate_timeout >= 0);
process_manager_options.close_fds = TRUE;
process_manager_options.dump_parameters = TRUE;
process_manager_options.exit_with_parent = !!opt_exit_with_parent;
process_manager_options.forward_signals = TRUE;
process_manager_options.subreaper = (opt_subreaper || opt_terminate_timeout >= 0.0);
if (opt_terminate_idle_timeout > 0.0)
process_manager.terminate_wait_usec = opt_terminate_idle_timeout * G_TIME_SPAN_SECOND;
process_manager_options.terminate_wait_usec = opt_terminate_idle_timeout * G_TIME_SPAN_SECOND;
if (opt_terminate_timeout >= 0.0)
process_manager.terminate_grace_usec = opt_terminate_timeout * G_TIME_SPAN_SECOND;
process_manager_options.terminate_grace_usec = opt_terminate_timeout * G_TIME_SPAN_SECOND;
/* In the absence of --assign-fd arguments, the default is like shell
* redirection 1>&original_stdout 2>&original_stderr */
_srt_process_manager_take_original_stdout_stderr (&process_manager,
glnx_steal_fd (&original_stdout),
glnx_steal_fd (&original_stderr));
_srt_process_manager_options_take_original_stdout_stderr (&process_manager_options,
glnx_steal_fd (&original_stdout),
glnx_steal_fd (&original_stderr));
if (!_srt_process_manager_setup (&process_manager, error))
global_options = NULL;
process_manager = _srt_process_manager_new (&process_manager_options, error);
if (process_manager == NULL)
goto out;
wrapped_command = flatpak_bwrap_new (original_environ);
@@ -1098,15 +1102,15 @@ main (int argc,
}
/* We take the same action whether this succeeds or fails */
_srt_process_manager_run (&process_manager,
_srt_process_manager_run (process_manager,
(const char * const *) wrapped_command->argv->pdata,
(const char * const *) wrapped_command->envp,
error);
ret = process_manager.exit_status;
ret = _srt_process_manager_get_exit_status (process_manager);
out:
global_process_manager = NULL;
global_ld_so_conf_entries = NULL;
global_options = NULL;
g_clear_pointer (&opt_overrides, g_free);
g_clear_pointer (&opt_regenerate_ld_so_cache, g_free);
Loading