mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-18 13:54:36 -05:00
helper: Add execute helper
Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
This commit is contained in:
parent
dbac6fba5c
commit
0daab1844e
3 changed files with 39 additions and 31 deletions
|
@ -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
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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;
|
|
||||||
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;
|
GError *error = NULL;
|
||||||
g_spawn_async ( wd, args, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error );
|
|
||||||
|
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 ) {
|
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 );
|
||||||
|
|
Loading…
Reference in a new issue