dot2pic: Be less picky parsing "dot" output.
authorBen Pfaff <blp@nicira.com>
Wed, 1 Dec 2010 19:03:12 +0000 (11:03 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 1 Dec 2010 19:03:12 +0000 (11:03 -0800)
Some versions of "dot" put two spaces after the "node" keyword instead of
one, which didn't match the regular expression used in dot2pic.  This
commit changes dot2pic not to care about the number of spaces in "node" and
"graph" lines.  (The "graph" lines weren't actually a problem but I don't
see a reason to be picky about them either.)

Different versions of "dot" still produce different output for the same
input, but I don't see how to avoid that.

Reported-by: Justin Pettit <jpettit@nicira.com>
ovsdb/dot2pic

index 3e2f30893fc0a94fe3243627d357adb53b219b8c..caca9f8d071234a5eddc020f94d5a9743e1e7679 100755 (executable)
@@ -21,9 +21,10 @@ my ($scale) = 1;
 print ".PS\n";
 print "linethick = 1;\n";
 while (<>) {
-    if (/graph (\S+) (\S+) (\S+)/) {
-        $scale = $1;
-    } elsif (my ($name, $x, $y, $width, $height, $label, $style, $shape, $color, $fillcolor) = /node (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+)/) {
+    if (/^graph/) {
+        (undef, $scale) = split;
+    } elsif (/^node/) {
+        my (undef, $name, $x, $y, $width, $height, $label, $style, $shape, $color, $fillcolor) = split;
         $x *= $scale;
         $y *= $scale;
         $width *= $scale;