]> xenbits.xensource.com Git - osstest.git/commitdiff
Osstest: fix config file reader handling of here docs
authorIan Jackson <ian.jackson@eu.citrix.com>
Thu, 14 Feb 2013 11:45:02 +0000 (11:45 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 14 Feb 2013 11:45:02 +0000 (11:45 +0000)
Osstest.pm

index b4c2d42391d2a390de7eb0429917648c0f5785ff..29e90522833fd6c2bff6b9185e5fd92b1d45b09a 100644 (file)
@@ -109,7 +109,7 @@ sub readglobalconfig () {
            next unless m/\S/;
            if (m/^($cfgvar_re)\s+(\S.*)$/) {
                $c{$1} = $2;
-           } elsif (m/^($cfgvar_re)=\s*\<\<(\')(.*)\2\s*$/) {
+           } elsif (m/^($cfgvar_re)=\s*\<\<(\'?)(.*)\2\s*$/) {
                my ($vn,$qu,$delim) = ($1,$2,$3);
                my $val = '';
                $!=0; while (<C>) {
@@ -117,10 +117,16 @@ sub readglobalconfig () {
                    $val .= $_;
                }
                die $! unless length $_;
-               if ($qu eq '') { eval "\$val = ($val); 1;" or die $@; }
+               die unless $val =~ m/\n$/;
+               if ($qu eq '') {
+                   my $reconstruct =
+                       "\$val = <<${qu}${delim}${qu}; 1;\n".
+                       "${val}${delim}\n";
+                   eval $reconstruct or die "$1 here doc ($reconstruct) $@";
+               }
                $c{$vn} = $val;
            } elsif (m/^($cfgvar_re)=(.*)$/) {
-               eval "\$c{$1} = ( $2 ); 1;" or die $@;
+               eval "\$c{$1} = ( $2 ); 1;" or die "$1 parsed val ($2) $@";
            } else {
                die "bad syntax";
            }