Fix some issues near recent chomp changes.
[openssl.git] / util / files.pl
index 41f033e3b9aa409dba89c65bc9481e6be5d0a8ae..32e712586d72bfac676f454f53ff92afa8b40ec4 100755 (executable)
@@ -4,12 +4,18 @@
 # It is basically a list of all variables from the passed makefile
 #
 
+while ($ARGV[0] =~ /^([^\s=]+)\s*=\s*(.*)$/)
+       {
+       $sym{$1} = $2;
+       shift;
+       }
+
 $s="";
 while (<>)
        {
-       chop;
+       s|\R$||;
        s/#.*//;
-       if (/^(\S+)\s*=\s*(.*)$/)
+       if (/^([^\s=]+)\s*=\s*(.*)$/)
                {
                $o="";
                ($s,$b)=($1,$2);
@@ -17,10 +23,10 @@ while (<>)
                        {
                        if ($b =~ /\\$/)
                                {
-                               chop($b);
+                               $b=$`; # Keep what is before the backslash
                                $o.=$b." ";
-                               $b=<>;
-                               chop($b);
+                               $b = "" unless defined($b = <>);
+                               $b =~ s{\R$}{};
                                }
                        else
                                {
@@ -33,11 +39,11 @@ while (<>)
                $o =~ s/\s+/ /g;
 
                $o =~ s/\$[({]([^)}]+)[)}]/$sym{$1}/g;
-               $sym{$s}=$o;
+               $sym{$s}=$o if !exists $sym{$s};
                }
        }
 
-$pwd=`pwd`; chop($pwd);
+($pwd=`pwd`) =~ s{\R$}{};
 
 if ($sym{'TOP'} eq ".")
        {
@@ -49,7 +55,7 @@ else  {
        @_=split(/\//,$pwd);
        $z=$#_-$n+1;
        foreach $i ($z .. $#_) { $dir.=$_[$i]."/"; }
-       chop($dir);
+       chop($dir);             # Remove the last slash
        }
 
 print "RELATIVE_DIRECTORY=$dir\n";