]> mj.ucw.cz Git - libucw.git/blobdiff - build/genconf
Released as 6.5.10.
[libucw.git] / build / genconf
index ac9755f4aaa7b28b2495b82baf111cc3d06a30dc..30e8896c3a58901e5085880ed6628d0e5600665d 100755 (executable)
@@ -10,12 +10,19 @@ use warnings;
 open CF, $ARGV[2] or die "Unable to open $ARGV[2]";
 my %options = ();
 my %vars = ();
 open CF, $ARGV[2] or die "Unable to open $ARGV[2]";
 my %options = ();
 my %vars = ();
+sub opt {
+       my ($k,$v) = @_;
+       $vars{$k} = $v;
+       $options{$k} = 1 if ($k =~ /^CONFIG_/);
+}
+foreach my $k (keys %ENV) {
+       opt($k, $ENV{$k});
+}
 while (<CF>) {
        chomp;
        if (my ($k,$v) = /^(\w+)=(.*)/) {
                $v =~ s/\s+$//;
 while (<CF>) {
        chomp;
        if (my ($k,$v) = /^(\w+)=(.*)/) {
                $v =~ s/\s+$//;
-               $vars{$k} = $v;
-               $options{$k} = 1 if ($k =~ /^CONFIG_/);
+               opt($k, $v);
        }
 }
 close CF;
        }
 }
 close CF;
@@ -59,10 +66,13 @@ while (<IN>) {
                        die "Piped command '$cmd' failed" if $?;
                        print OUT `$1`;
                } else {
                        die "Piped command '$cmd' failed" if $?;
                        print OUT `$1`;
                } else {
-                       sub repl ($) {
+                       sub repl($);
+                       sub repl($) {
                                my $v = shift @_;
                                exists $vars{$v} or die "Cannot substitute $v: variable not set";
                                my $v = shift @_;
                                exists $vars{$v} or die "Cannot substitute $v: variable not set";
-                               return $vars{$v};
+                               my $x = $vars{$v};
+                               while ($x =~ s/\$\((\w+)\)/repl($1)/ge) { }
+                               return $x;
                        }
                        s/@(\w+)@/repl($1)/ge;
                        print OUT;
                        }
                        s/@(\w+)@/repl($1)/ge;
                        print OUT;