po: avoid warnings and possible bugs with nested named subroutines
authorintrigeri <intrigeri@boum.org>
Fri, 2 Jan 2009 14:14:58 +0000 (15:14 +0100)
committerintrigeri <intrigeri@boum.org>
Fri, 2 Jan 2009 14:14:58 +0000 (15:14 +0100)
Signed-off-by: intrigeri <intrigeri@boum.org>
IkiWiki/Plugin/po.pm

index 75344b4b625d4b14e53d9f7ca0e50362f9b51071..80b8749390f63c7412b063098061e69f03aeeab0 100644 (file)
@@ -954,17 +954,17 @@ sub po_to_markup ($$;$) {
                                     DIR => File::Spec->tmpdir,
                                     UNLINK => 1)->filename;
 
-       sub failure ($) {
+       my $fail = sub ($) {
                my $msg = "po(po_to_markup) - $page : " . shift;
                if ($nonfatal) {
                        warn $msg;
                        return undef;
                }
                error($msg, sub { unlink $infile, $outfile});
-       }
+       };
 
        writefile(basename($infile), File::Spec->tmpdir, $content)
-               or return failure(sprintf(gettext("failed to write %s"), $infile));
+               or return $fail->(sprintf(gettext("failed to write %s"), $infile));
 
        my $masterfile = srcfile($pagesources{masterpage($page)});
        my %options = (
@@ -976,12 +976,12 @@ sub po_to_markup ($$;$) {
                'file_in_name'  => [ $masterfile ],
                'file_in_charset'  => 'utf-8',
                'file_out_charset' => 'utf-8',
-       ) or return failure(gettext("failed to translate"));
+       ) or return $fail->(gettext("failed to translate"));
        $doc->write($outfile)
-               or return failure(sprintf(gettext("failed to write %s"), $outfile));
+               or return $fail->(sprintf(gettext("failed to write %s"), $outfile));
 
        $content = readfile($outfile)
-               or return failure(sprintf(gettext("failed to read %s"), $outfile));
+               or return $fail->(sprintf(gettext("failed to read %s"), $outfile));
 
        # Unlinking should happen automatically, thanks to File::Temp,
        # but it does not work here, probably because of the way writefile()
@@ -1011,14 +1011,14 @@ sub isvalidpo ($) {
                                    DIR => File::Spec->tmpdir,
                                    UNLINK => 1)->filename;
 
-       sub failure ($) {
+       my $fail = sub ($) {
                my $msg = '[po/isvalidpo] ' . shift;
                unlink $infile;
                return IkiWiki::FailReason->new("$msg");
-       }
+       };
 
        writefile(basename($infile), File::Spec->tmpdir, $content)
-               or return failure(sprintf(gettext("failed to write %s"), $infile));
+               or return $fail->(sprintf(gettext("failed to write %s"), $infile));
 
        my $res = (system("msgfmt", "--check", $infile, "-o", "/dev/null") == 0);