Handle " and ' in comments
authorJamie Cameron <jcameron@webmin.com>
Fri, 21 Oct 2011 22:42:11 +0000 (15:42 -0700)
committerJamie Cameron <jcameron@webmin.com>
Fri, 21 Oct 2011 22:42:11 +0000 (15:42 -0700)
https://sourceforge.net/tracker/?func=detail&atid=117457&aid=3426769&group_id=17457

firewall/firewall-lib.pl

index b5b9cec..8be8dbe 100755 (executable)
@@ -98,6 +98,8 @@ while(<FILE>) {
                        local @vl;
                        while($rule->{'args'} =~
                               s/\s+(!?)\s*($a)\s+(!?)\s*("[^"]*")(\s+|$)/ / ||
+                             $rule->{'args'} =~
+                               s/\s+(!?)\s*($a)\s+(!?)\s*('[^']*')(\s+|$)/ / ||
                              $rule->{'args'} =~
                               s/\s+(!?)\s*($a)\s+(!?)\s*(([^ \-!]\S*(\s+|$))+)/ / ||
                              $rule->{'args'} =~
@@ -160,7 +162,9 @@ foreach $r (@{$_[0]->{'rules'}}) {
                        foreach $ag (@al) {
                                local $n = shift(@$ag);
                                local @w = ( $n ? ( $n ) : (), $a, @$ag );
-                               @w = map { $_ =~ /\s/ ? "\"$_\"" : $_ } @w;
+                               @w = map { $_ =~ /'/ ? "\"$_\"" :
+                                          $_ =~ /"/ ? "'".$_."'" :
+                                          $_ =~ /\s/ ? "\"$_\"" : $_ } @w;
                                $line .= " ".join(" ", @w);
                                }
                        }