summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/exec.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/core/exec.c b/src/core/exec.c
index f65a4647..18fc57f5 100644
--- a/src/core/exec.c
+++ b/src/core/exec.c
@@ -115,17 +115,21 @@ static char * expand_command ( const char *command ) {
head = expcmd;
- /* Locate opener */
- start = strstr ( expcmd, "${" );
- if ( ! start )
+ /* Locate setting to be expanded */
+ start = NULL;
+ end = NULL;
+ for ( tmp = expcmd ; *tmp ; tmp++ ) {
+ if ( ( tmp[0] == '$' ) && ( tmp[1] == '{' ) )
+ start = tmp;
+ if ( tmp[0] == '}' )
+ end = tmp;
+ if ( start && end )
+ break;
+ }
+ if ( ! ( start && end ) )
break;
*start = '\0';
name = ( start + 2 );
-
- /* Locate closer */
- end = strstr ( name, "}" );
- if ( ! end )
- break;
*end = '\0';
tail = ( end + 1 );