From 0daab1844efe172318e68909520ec8b97a3acff9 Mon Sep 17 00:00:00 2001 From: Quentin Glidic Date: Fri, 11 Mar 2016 10:43:32 +0100 Subject: helper: Add execute helper Signed-off-by: Quentin Glidic --- source/dialogs/ssh.c | 19 ++----------------- source/helper.c | 37 ++++++++++++++++++++++++------------- 2 files changed, 26 insertions(+), 30 deletions(-) (limited to 'source') diff --git a/source/dialogs/ssh.c b/source/dialogs/ssh.c index 96230bf8..66fdc74a 100644 --- a/source/dialogs/ssh.c +++ b/source/dialogs/ssh.c @@ -78,25 +78,10 @@ static inline int execshssh ( const char *host ) { char **args = NULL; int argsv = 0; - helper_parse_setup ( config.ssh_command, &args, &argsv, "{host}", host, NULL ); - - GError *error = NULL; - g_spawn_async ( NULL, args, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error ); - - if ( error != NULL ) { - char *msg = g_strdup_printf ( "Failed to execute: 'ssh %s'\nError: '%s'", host, error->message ); - rofi_view_error_dialog ( msg, FALSE ); - g_free ( msg ); - // print error. - g_error_free ( error ); - g_strfreev ( args ); - return FALSE; - } - // Free the args list. - g_strfreev ( args ); + helper_parse_setup ( config.ssh_command, &args, &argsv, "{host}", host, NULL ); - return TRUE; + return helper_execute ( NULL, args, "ssh ", host ); } /** diff --git a/source/helper.c b/source/helper.c index e0a0563e..ebcf783d 100644 --- a/source/helper.c +++ b/source/helper.c @@ -962,21 +962,17 @@ int utf8_strncmp ( const char* a, const char* b, size_t n ) return r; } -int helper_execute_command ( const char *wd, const char *cmd, int run_in_term ) +gboolean helper_execute ( const char *wd, char **args, const char *error_precmd, const char *error_cmd ) { - int retv = TRUE; - char **args = NULL; - int argc = 0; - if ( run_in_term ) { - helper_parse_setup ( config.run_shell_command, &args, &argc, "{cmd}", cmd, NULL ); - } - else { - helper_parse_setup ( config.run_command, &args, &argc, "{cmd}", cmd, NULL ); - } - GError *error = NULL; - g_spawn_async ( wd, args, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error ); + gboolean retv = TRUE; + GError *error = NULL; + + GSpawnChildSetupFunc child_setup = NULL; + gpointer user_data = NULL; + + g_spawn_async ( wd, args, NULL, G_SPAWN_SEARCH_PATH, child_setup, user_data, NULL, &error ); if ( error != NULL ) { - char *msg = g_strdup_printf ( "Failed to execute: '%s'\nError: '%s'", cmd, error->message ); + char *msg = g_strdup_printf ( "Failed to execute: '%s%s'\nError: '%s'", error_precmd, error_cmd, error->message ); rofi_view_error_dialog ( msg, FALSE ); g_free ( msg ); // print error. @@ -989,6 +985,21 @@ int helper_execute_command ( const char *wd, const char *cmd, int run_in_term ) return retv; } +gboolean helper_execute_command ( const char *wd, const char *cmd, int run_in_term ) +{ + char **args = NULL; + int argc = 0; + + if ( run_in_term ) { + helper_parse_setup ( config.run_shell_command, &args, &argc, "{cmd}", cmd, NULL ); + } + else { + helper_parse_setup ( config.run_command, &args, &argc, "{cmd}", cmd, NULL ); + } + + return helper_execute ( wd, args, "", cmd ); +} + char *helper_get_theme_path ( const char *file ) { char *filename = rofi_expand_path ( file ); -- cgit v1.2.3