package Apache::Checksum3;
# file: Apache/Checksum3.pm
use strict;
use Apache::Constants qw(:common);
use Apache::File ();
use MD5 ();

my $MD5 = MD5->new;

sub handler {
    my $r = shift;
    my $uri = $r->uri;
    return DECLINED unless $uri =~ s/\.cksm$//;
    $r->uri($uri);
    $r->handler("perl-script");
    $r->push_handlers(PerlHandler => \&checksum_handler);
    return DECLINED;
}

sub checksum_handler {
    my $r = shift;
    my $file = $r->filename;
    my $sfile = Apache::File->new($file) || return DECLINED;
    $r->content_type('text/plain');
    $r->send_http_header;
    return OK if $r->header_only;
    $MD5->reset;
    $MD5->addfile($sfile);
    $r->print($MD5->hexdigest(),"\t",$r->uri,"\n");
    return OK;
}

1;
__END__
