Improve variable parsing when generating MINFO
authorMike Bland <mbland@acm.org>
Tue, 24 Jun 2014 04:39:33 +0000 (00:39 -0400)
committerGeoff Thorpe <geoff@openssl.org>
Sun, 16 Nov 2014 21:44:44 +0000 (16:44 -0500)
Before this change, variables for which a '=' appeared in the assignment would
be parsed as the entire string up until the final '='. For example:

  BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \

would result in the variable name "BUILD_CMD=shlib_target". This doesn't
appear to harm the current generation of MINFO, but creates problems for other
Makefile-related work I'm attempting.

Change-Id: I1f3a606d67fd5464bb459e8f36c23b3e967b77e1
Signed-off-by: Mike Bland <mbland@acm.org>
Signed-off-by: Geoff Thorpe <geoff@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
util/files.pl
util/mkfiles.pl

index b15407f0c90562bff4b11ad40cb8d610178e0c99..d5c78bafc1bfecc696c3cc594fc45937ef51b083 100755 (executable)
@@ -4,7 +4,7 @@
 # It is basically a list of all variables from the passed makefile
 #
 
-while ($ARGV[0] =~ /^(\S+)\s*=(.*)$/)
+while ($ARGV[0] =~ /^([^\s=]+)\s*=\s*(.*)$/)
        {
        $sym{$1} = $2;
        shift;
@@ -15,7 +15,7 @@ while (<>)
        {
        chop;
        s/#.*//;
-       if (/^(\S+)\s*=\s*(.*)$/)
+       if (/^([^\s=]+)\s*=\s*(.*)$/)
                {
                $o="";
                ($s,$b)=($1,$2);
index 7dff4a695d9ce89cb631c668c77143fe26f4ab57..42db4666887c7f35ac5f80527ea817f1b185fe16 100755 (executable)
@@ -110,7 +110,7 @@ while (<IN>)
        {
        chop;
        s/#.*//;
-       if (/^(\S+)\s*=\s*(.*)$/)
+       if (/^([^\s=]+)\s*=\s*(.*)$/)
                {
                $o="";
                ($s,$b)=($1,$2);