summaryrefslogtreecommitdiffstats
path: root/source/script-dialog.c
diff options
context:
space:
mode:
authorQC <qball@gmpclient.org>2014-11-22 22:40:53 +0100
committerQC <qball@gmpclient.org>2014-11-22 22:40:53 +0100
commitf42c0f11327335d33195821b1995c9909d347eab (patch)
treedec4b7522d33b72c13bae819142775927db346ac /source/script-dialog.c
parent18c6186501db5a729851ead5c5fcf38935f52a05 (diff)
Use glib for escaping.
Diffstat (limited to 'source/script-dialog.c')
-rw-r--r--source/script-dialog.c36
1 files changed, 1 insertions, 35 deletions
diff --git a/source/script-dialog.c b/source/script-dialog.c
index fe487035..5cd7d1ce 100644
--- a/source/script-dialog.c
+++ b/source/script-dialog.c
@@ -99,45 +99,11 @@ static char **get_script_output ( char *command, unsigned int *length )
return retv;
}
-// There should be a glib version for this.
-// Fixing.
-char *escape_string ( const char *string )
-{
- int new_length = 0;
- int length = strlen ( string );
-
- // Characters to escape
- const char echars[] = "'\\ \"";
- const char num_echars = sizeof ( echars ) / sizeof ( char );
-
- // Count strings, Calculate new length.
- for ( int i = 0; i < length; i++ ) {
- for ( int j = 0; j < num_echars; j++ ) {
- if ( echars[j] == string[i] ) {
- new_length++;
- }
- }
- new_length++;
- }
- // Create escaped string.
- char *retv = g_malloc0 ( ( new_length + 1 ) * sizeof ( char ) );
- new_length = 0;
- for ( int i = 0; i < length; i++ ) {
- for ( int j = 0; j < num_echars; j++ ) {
- if ( echars[j] == string[i] ) {
- retv[new_length++] = '\\';
- }
- }
- retv[new_length++] = string[i];
- }
- return retv;
-}
-
char **execute_executor ( ScriptOptions *options, const char *result, unsigned int *length )
{
char **retv = NULL;
- char *arg = escape_string ( result );
+ char *arg = g_shell_quote ( result );
char *command = g_strdup_printf ( "%s %s", options->script_path, arg );
retv = get_script_output ( command, length );
g_free ( command );