- if($OS eq "WIN"){
- $cmd{'cmd'} =~ s/\${EXEEXT:=}/.exe/g;
- $cmd{'cmd'} =~ s/\${EXEEXT}/.exe/g;
- $cmd{'cmd'} =~ s/\$EXEEXT/.exe/g;
- }
- else{
- $cmd{'cmd'} =~ s/\${EXEEXT:=}//g;
- }
- $cmd{'cmd'} =~ s/\${bindir:=}/$bindir/g;
- $cmd{'cmd'} =~ s/\${srcdir:=}/$srcdir/g;
- $cmd{'cmd'} =~ s/\${bindir:=.}/$bindir/g;
- $cmd{'cmd'} =~ s/\${srcdir:=.}/$srcdir/g;
- $cmd{'cmd'} =~ s/\${bindir}/$bindir/g;
- $cmd{'cmd'} =~ s/\${srcdir}/$srcdir/g;
-# $cmd{'cmd'} =~ s|^\./||g;
-# $cmd{'cmd'} =~ s|tesh|tesh.pl|g;
- $cmd{'cmd'} =~ s/\(%i:%P@%h\)/\\\(%i:%P@%h\\\)/g;
+ if($OS eq "WIN") {
+ var_subst($cmd{'cmd'}, "EXEEXT", ".exe");
+ } else {
+ var_subst($cmd{'cmd'}, "EXEEXT", "");
+ }
+
+ # substitute environ variables
+ foreach my $key (keys %environ) {
+ $cmd{'cmd'} = var_subst($cmd{'cmd'}, $key, $environ{$key});
+ }
+ # substitute remaining variables, if any
+ while ($cmd{'cmd'} =~ /\${(\w+)(?::[=-][^}]*)?}/) {
+ $cmd{'cmd'} = var_subst($cmd{'cmd'}, $1, "");
+ }
+ while ($cmd{'cmd'} =~ /\$(\w+)/) {
+ $cmd{'cmd'} = var_subst($cmd{'cmd'}, $1, "");
+ }
+
+ # add cfg options