Support "mailto:" stripping also from "(at)" obfuscated addresses.
[MyWeb.git] / Web.pm
diff --git a/Web.pm b/Web.pm
index 143f3a7..d24bf28 100644 (file)
--- a/Web.pm
+++ b/Web.pm
@@ -817,7 +817,7 @@ my($in,$contents,%args)=@_;
        if (!defined $contents) {
                $contents=$in;
                $contents=File::Basename::basename($contents) if $args{"basename"};
-               $contents=~s/^mailto:([-.\w]+@[-.\w]+)$/$1/;
+               $contents=~s/^mailto:([-.\w]+(?:@|\Q(at)\E)[-.\w]+)$/$1/;
                $contents=escapeHTML($contents);
                }
        $contents=~s#<a\b[^>]*>##gi;
@@ -831,8 +831,12 @@ my($in,$contents,%args)=@_;
        $r.='"';
        do { $r.=" $_" if $_; } for ($args{"attr"});
        $r.='>'.$contents.'</a>';
-       if ($args{"size"} && uri_is_local($in) && ($args{"size"}>=2 || $in=~/[.](?:gz|Z|rpm|zip|deb|lha)/)) {   # Downloadable?
-               my $path_abs_disk=path_abs_disk $in,%args;
+       my $size_in=$in;
+       do { $size_in=$_ if $_ && !/^\d+$/; } for $args{"size"};
+       if ($args{"size"} && uri_is_local($size_in)
+                       && (($args{"size"} && $args{"size"}=~/^\d+$/ && $args{"size"}>=2)
+                                       || $size_in=~/[.](?:gz|Z|rpm|zip|deb|lha)/)) {  # Downloadable?
+               my $path_abs_disk=path_abs_disk $size_in,%args;
                cluck "File not readable: $path_abs_disk" if !-r $path_abs_disk;
                $r.='&nbsp;('.size_display((stat($path_abs_disk))[7]).')';
                }