helper: Add execute helper

Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
This commit is contained in:
Quentin Glidic 2016-03-11 10:43:32 +01:00
parent dbac6fba5c
commit 0daab1844e
No known key found for this signature in database
GPG Key ID: AC203F96E2C34BB7
3 changed files with 39 additions and 31 deletions

View File

@ -39,6 +39,7 @@
* *
* @{ * @{
*/ */
/** /**
* @param string The input string. * @param string The input string.
* @param output Pointer to 2 dimensional array with parsed string. * @param output Pointer to 2 dimensional array with parsed string.
@ -258,6 +259,17 @@ int rofi_scorer_fuzzy_evaluate ( const char *pattern, glong plen, const char *st
*/ */
int utf8_strncmp ( const char *a, const char* b, size_t n ) __attribute__( ( nonnull ( 1, 2 ) ) ); int utf8_strncmp ( const char *a, const char* b, size_t n ) __attribute__( ( nonnull ( 1, 2 ) ) );
/**
* @param args The arguments of the command to exec.
* @param error_precmd Prefix to error message command.
* @param error_cmd Error message command
*
* Executes the command
*
* @returns TRUE when successful, FALSE when failed.
*/
gboolean helper_execute ( const char *wd, char **args, const char *error_precmd, const char *error_cmd );
/** /**
* @param wd The work directory (optional) * @param wd The work directory (optional)
* @param cmd The cmd to execute * @param cmd The cmd to execute
@ -267,7 +279,7 @@ int utf8_strncmp ( const char *a, const char* b, size_t n ) __attribute__( ( non
* *
* @returns FALSE On failure, TRUE on success * @returns FALSE On failure, TRUE on success
*/ */
int helper_execute_command ( const char *wd, const char *cmd, int run_in_term ); gboolean helper_execute_command ( const char *wd, const char *cmd, int run_in_term );
/** /**
* @param file The file path * @param file The file path

View File

@ -78,25 +78,10 @@ static inline int execshssh ( const char *host )
{ {
char **args = NULL; char **args = NULL;
int argsv = 0; int argsv = 0;
helper_parse_setup ( config.ssh_command, &args, &argsv, "{host}", host, NULL ); helper_parse_setup ( config.ssh_command, &args, &argsv, "{host}", host, NULL );
GError *error = NULL; return helper_execute ( NULL, args, "ssh ", host );
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 );
return TRUE;
} }
/** /**

View File

@ -962,21 +962,17 @@ int utf8_strncmp ( const char* a, const char* b, size_t n )
return r; 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; gboolean retv = TRUE;
char **args = NULL; GError *error = NULL;
int argc = 0;
if ( run_in_term ) { GSpawnChildSetupFunc child_setup = NULL;
helper_parse_setup ( config.run_shell_command, &args, &argc, "{cmd}", cmd, NULL ); gpointer user_data = NULL;
}
else { g_spawn_async ( wd, args, NULL, G_SPAWN_SEARCH_PATH, child_setup, user_data, NULL, &error );
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 );
if ( error != NULL ) { 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 ); rofi_view_error_dialog ( msg, FALSE );
g_free ( msg ); g_free ( msg );
// print error. // print error.
@ -989,6 +985,21 @@ int helper_execute_command ( const char *wd, const char *cmd, int run_in_term )
return retv; 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 *helper_get_theme_path ( const char *file )
{ {
char *filename = rofi_expand_path ( file ); char *filename = rofi_expand_path ( file );