From dd5a59e5f6f578ed57833b642273f4876dfec1b9 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Wed, 2 Oct 2013 00:54:27 +0200 Subject: [PATCH] Expand variables before running shell builtins. --- utils/mxsh.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/utils/mxsh.cpp b/utils/mxsh.cpp index 78a2436d..2c088b2b 100644 --- a/utils/mxsh.cpp +++ b/utils/mxsh.cpp @@ -132,6 +132,22 @@ readcmd: cmdnext = cmdend + 1; argv = (char**) (tokens + cmdstart); + updateenv(); + char statusstr[32]; + sprintf(statusstr, "%i", status); + setenv("?", statusstr, 1); + + for ( char** argp = argv; *argp; argp++ ) + { + char* arg = *argp; + if ( arg[0] != '$' ) + continue; + arg = getenv(arg+1); + if ( !arg ) + arg = (char*) ""; + *argp = arg; + } + internal = false; internalresult = 0; if ( strcmp(argv[0], "cd") == 0 ) @@ -247,20 +263,6 @@ readcmd: } } - updateenv(); - char statusstr[32]; - sprintf(statusstr, "%i", status); - setenv("?", statusstr, 1); - - for ( char** argp = argv; *argp; argp++ ) - { - char* arg = *argp; - if ( arg[0] != '$' ) { continue; } - arg = getenv(arg+1); - if ( !arg ) { arg = (char*) ""; } - *argp = arg; - } - if ( !strcmp(argv[0], "env") ) { for ( size_t i = 0; i < envlength(); i++ )