From 884040dfcc0a072dae2dabb96c902c23cd991622 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 13 Feb 2015 10:29:41 +0100 Subject: [PATCH] Move run helpers from builtin-run to xdg-app-run.c file --- Makefile.am | 2 + xdg-app-builtins-build.c | 1 + xdg-app-builtins-run.c | 110 +---------------------------------- xdg-app-builtins.h | 6 -- xdg-app-run.c | 120 +++++++++++++++++++++++++++++++++++++++ xdg-app-run.h | 11 ++++ 6 files changed, 135 insertions(+), 115 deletions(-) create mode 100644 xdg-app-run.c create mode 100644 xdg-app-run.h diff --git a/Makefile.am b/Makefile.am index 8f7a5d4c..74ffb561 100644 --- a/Makefile.am +++ b/Makefile.am @@ -88,6 +88,8 @@ xdg_app_SOURCES = \ xdg-app-builtins-repo-update.c \ xdg-app-dir.c \ xdg-app-dir.h \ + xdg-app-run.c \ + xdg-app-run.h \ xdg-app-utils.h \ xdg-app-utils.c \ $(dbus_built_sources) \ diff --git a/xdg-app-builtins-build.c b/xdg-app-builtins-build.c index dd4ea70c..4230d5a0 100644 --- a/xdg-app-builtins-build.c +++ b/xdg-app-builtins-build.c @@ -10,6 +10,7 @@ #include "xdg-app-builtins.h" #include "xdg-app-utils.h" +#include "xdg-app-run.h" static gboolean opt_runtime; static gboolean opt_network; diff --git a/xdg-app-builtins-run.c b/xdg-app-builtins-run.c index af94fc74..ae028e91 100644 --- a/xdg-app-builtins-run.c +++ b/xdg-app-builtins-run.c @@ -11,6 +11,7 @@ #include "xdg-app-builtins.h" #include "xdg-app-utils.h" #include "xdg-app-dbus.h" +#include "xdg-app-run.h" static char *opt_arch; static char *opt_branch; @@ -31,115 +32,6 @@ static GOptionEntry options[] = { { NULL } }; -static char * -extract_unix_path_from_dbus_address (const char *address) -{ - const char *path, *path_end; - - if (address == NULL) - return NULL; - - if (!g_str_has_prefix (address, "unix:")) - return NULL; - - path = strstr (address, "path="); - if (path == NULL) - return NULL; - path += strlen ("path="); - path_end = path; - while (*path_end != 0 && *path_end != ',') - path_end++; - - return g_strndup (path, path_end - path); -} - -void -xdg_app_run_add_x11_args (GPtrArray *argv_array) -{ - char *x11_socket = NULL; - const char *display = g_getenv ("DISPLAY"); - - if (display && display[0] == ':' && g_ascii_isdigit (display[1])) - { - const char *display_nr = &display[1]; - const char *display_nr_end = display_nr; - gs_free char *d = NULL; - - while (g_ascii_isdigit (*display_nr_end)) - display_nr_end++; - - d = g_strndup (display_nr, display_nr_end - display_nr); - x11_socket = g_strdup_printf ("/tmp/.X11-unix/X%s", d); - - g_ptr_array_add (argv_array, g_strdup ("-x")); - g_ptr_array_add (argv_array, x11_socket); - } -} - -void -xdg_app_run_add_wayland_args (GPtrArray *argv_array) -{ - char *wayland_socket = g_build_filename (g_get_user_runtime_dir (), "wayland-0", NULL); - if (g_file_test (wayland_socket, G_FILE_TEST_EXISTS)) - { - g_ptr_array_add (argv_array, g_strdup ("-y")); - g_ptr_array_add (argv_array, wayland_socket); - } - else - g_free (wayland_socket); -} - -void -xdg_app_run_add_no_x11_args (GPtrArray *argv_array) -{ - g_unsetenv ("DISPLAY"); -} - -void -xdg_app_run_add_pulseaudio_args (GPtrArray *argv_array) -{ - char *pulseaudio_socket = g_build_filename (g_get_user_runtime_dir (), "pulse/native", NULL); - if (g_file_test (pulseaudio_socket, G_FILE_TEST_EXISTS)) - { - g_ptr_array_add (argv_array, g_strdup ("-p")); - g_ptr_array_add (argv_array, pulseaudio_socket); - } -} - -void -xdg_app_run_add_system_dbus_args (GPtrArray *argv_array) -{ - const char *dbus_address = g_getenv ("DBUS_SYSTEM_BUS_ADDRESS"); - char *dbus_system_socket = NULL; - - dbus_system_socket = extract_unix_path_from_dbus_address (dbus_address); - if (dbus_system_socket == NULL && - g_file_test ("/var/run/dbus/system_bus_socket", G_FILE_TEST_EXISTS)) - { - dbus_system_socket = g_strdup ("/var/run/dbus/system_bus_socket"); - } - - if (dbus_system_socket != NULL) - { - g_ptr_array_add (argv_array, g_strdup ("-D")); - g_ptr_array_add (argv_array, dbus_system_socket); - } -} - -void -xdg_app_run_add_session_dbus_args (GPtrArray *argv_array) -{ - const char *dbus_address = g_getenv ("DBUS_SESSION_BUS_ADDRESS"); - char *dbus_session_socket = NULL; - - dbus_session_socket = extract_unix_path_from_dbus_address (dbus_address); - if (dbus_session_socket != NULL) - { - g_ptr_array_add (argv_array, g_strdup ("-d")); - g_ptr_array_add (argv_array, dbus_session_socket); - } -} - static void add_extension_arg (const char *directory, const char *type, const char *extension, const char *arch, const char *branch, diff --git a/xdg-app-builtins.h b/xdg-app-builtins.h index d80f4304..aa9e229b 100644 --- a/xdg-app-builtins.h +++ b/xdg-app-builtins.h @@ -49,12 +49,6 @@ BUILTINPROTO(repo_update); #undef BUILTINPROTO -void xdg_app_run_add_x11_args (GPtrArray *argv_array); -void xdg_app_run_add_no_x11_args (GPtrArray *argv_array); -void xdg_app_run_add_pulseaudio_args (GPtrArray *argv_array); -void xdg_app_run_add_system_dbus_args (GPtrArray *argv_array); -void xdg_app_run_add_session_dbus_args (GPtrArray *argv_array); - G_END_DECLS #endif /* __XDG_APP_BUILTINS_H__ */ diff --git a/xdg-app-run.c b/xdg-app-run.c new file mode 100644 index 00000000..06d233d4 --- /dev/null +++ b/xdg-app-run.c @@ -0,0 +1,120 @@ +#include "config.h" + +#include +#include +#include + +#include +#include "libgsystem.h" + +#include "xdg-app-run.h" +#include "xdg-app-utils.h" + +static char * +extract_unix_path_from_dbus_address (const char *address) +{ + const char *path, *path_end; + + if (address == NULL) + return NULL; + + if (!g_str_has_prefix (address, "unix:")) + return NULL; + + path = strstr (address, "path="); + if (path == NULL) + return NULL; + path += strlen ("path="); + path_end = path; + while (*path_end != 0 && *path_end != ',') + path_end++; + + return g_strndup (path, path_end - path); +} + +void +xdg_app_run_add_x11_args (GPtrArray *argv_array) +{ + char *x11_socket = NULL; + const char *display = g_getenv ("DISPLAY"); + + if (display && display[0] == ':' && g_ascii_isdigit (display[1])) + { + const char *display_nr = &display[1]; + const char *display_nr_end = display_nr; + gs_free char *d = NULL; + + while (g_ascii_isdigit (*display_nr_end)) + display_nr_end++; + + d = g_strndup (display_nr, display_nr_end - display_nr); + x11_socket = g_strdup_printf ("/tmp/.X11-unix/X%s", d); + + g_ptr_array_add (argv_array, g_strdup ("-x")); + g_ptr_array_add (argv_array, x11_socket); + } +} + +void +xdg_app_run_add_wayland_args (GPtrArray *argv_array) +{ + char *wayland_socket = g_build_filename (g_get_user_runtime_dir (), "wayland-0", NULL); + if (g_file_test (wayland_socket, G_FILE_TEST_EXISTS)) + { + g_ptr_array_add (argv_array, g_strdup ("-y")); + g_ptr_array_add (argv_array, wayland_socket); + } + else + g_free (wayland_socket); +} + +void +xdg_app_run_add_no_x11_args (GPtrArray *argv_array) +{ + g_unsetenv ("DISPLAY"); +} + +void +xdg_app_run_add_pulseaudio_args (GPtrArray *argv_array) +{ + char *pulseaudio_socket = g_build_filename (g_get_user_runtime_dir (), "pulse/native", NULL); + if (g_file_test (pulseaudio_socket, G_FILE_TEST_EXISTS)) + { + g_ptr_array_add (argv_array, g_strdup ("-p")); + g_ptr_array_add (argv_array, pulseaudio_socket); + } +} + +void +xdg_app_run_add_system_dbus_args (GPtrArray *argv_array) +{ + const char *dbus_address = g_getenv ("DBUS_SYSTEM_BUS_ADDRESS"); + char *dbus_system_socket = NULL; + + dbus_system_socket = extract_unix_path_from_dbus_address (dbus_address); + if (dbus_system_socket == NULL && + g_file_test ("/var/run/dbus/system_bus_socket", G_FILE_TEST_EXISTS)) + { + dbus_system_socket = g_strdup ("/var/run/dbus/system_bus_socket"); + } + + if (dbus_system_socket != NULL) + { + g_ptr_array_add (argv_array, g_strdup ("-D")); + g_ptr_array_add (argv_array, dbus_system_socket); + } +} + +void +xdg_app_run_add_session_dbus_args (GPtrArray *argv_array) +{ + const char *dbus_address = g_getenv ("DBUS_SESSION_BUS_ADDRESS"); + char *dbus_session_socket = NULL; + + dbus_session_socket = extract_unix_path_from_dbus_address (dbus_address); + if (dbus_session_socket != NULL) + { + g_ptr_array_add (argv_array, g_strdup ("-d")); + g_ptr_array_add (argv_array, dbus_session_socket); + } +} diff --git a/xdg-app-run.h b/xdg-app-run.h new file mode 100644 index 00000000..c30afe37 --- /dev/null +++ b/xdg-app-run.h @@ -0,0 +1,11 @@ +#ifndef __XDG_APP_RUN_H__ +#define __XDG_APP_RUN_H__ + +void xdg_app_run_add_x11_args (GPtrArray *argv_array); +void xdg_app_run_add_no_x11_args (GPtrArray *argv_array); +void xdg_app_run_add_wayland_args (GPtrArray *argv_array); +void xdg_app_run_add_pulseaudio_args (GPtrArray *argv_array); +void xdg_app_run_add_system_dbus_args (GPtrArray *argv_array); +void xdg_app_run_add_session_dbus_args (GPtrArray *argv_array); + +#endif /* __XDG_APP_RUN_H__ */