#---------- licence and source code ----------
-sub srcdump_dump_thing ($$$) {
- my ($c,$r, $thing, $outfn) = @_;
+sub srcdump_dump ($$$) {
+ my ($c,$r, $thing) = @_;
die if $thing =~ m/\W/ || $thing !~ m/\w/;
my $path = $r->_get_path('srcdump');
my $ctf = new IO::File "$path/$thing.ctype", 'r'
or die "$path/$thing.ctype $!";
my $ct = <$ctf>;
chomp $ct or die "$path/$thing ?";
- $ct->close or die "$path/$thing $!";
+ $ctf->close or die "$path/$thing $!";
my $df = new IO::File "$path/$thing.data", 'r'
or die "$path/$thing.data $!";
$r->_ch('dump', $ct, $df);
sub dump_plain ($$$$) {
my ($c, $r, $ct, $df) = @_;
- $r->_print($c->header(-type $ct));
+ $r->_print($c->header('-type' => $ct));
my $buffer;
for (;;) {
my $got = read $df, $buffer, 65536;
");
}
-sub scrdump_dir_cpio ($$$$$) {
+sub srcdump_dir_cpio ($$$$$) {
my ($c,$v,$dumpdir,$dir,$tarballcounter,$script) = @_;
my $outfile = "$dumpdir/$$tarballcounter.tar";
my $pid = fork();
sub srcdump_dirscan_prepare ($$) {
my ($c, $v) = @_;
my $dumpdir = $v->_get_path('srcdump');
+ mkdir $dumpdir or $!==&EEXIST or die "mkdir $dumpdir $!";
my $lockf = new IO::File "$dumpdir/generate.lock", 'w+'
or die "$dumpdir/generate.lock $!";
flock $lockf, LOCK_EX or die "$dumpdir/generate.lock $!";
my $needlicence = "$dumpdir/licence.tmp";
- unlink $needlicence || $!==&ENOENT or die "rm $needlicence $!";
+ unlink $needlicence or $!==&ENOENT or die "rm $needlicence $!";
if (defined $v->{S}{srcdump_licence_path}) {
copy($v->{S}{srcdump_licence_path}, $needlicence)
or die "$v->{S}{srcdump_licence_path} $!";
my $srctarballcounter = 'aaa';
my %dirsdone;
my @srcfiles = ("$dumpdir/licence.data");
- foreach my $incdir ($v->_ch('getsource_includedirs')) {
+ foreach my $incdir ($v->_ch('srcdump_includedirs')) {
if (defined $needlicence) {
foreach my $try (@{ $v->{S}{srcdump_licence_files} }) {
last if copy("$incdir/$try", $needlicence);
gen_login_form => \&gen_plain_login_form,
gen_login_link => \&gen_plain_login_link,
gen_postmainpage_form => \&gen_postmainpage_form,
- srcdump_dump_thing => \&srcdump_dump_thing,
+ srcdump_dump => \&srcdump_dump,
srcdump_prepare => \&srcdump_dirscan_prepare,
srcdump_licence_path => undef,
srcdump_licence_files => [qw(AGPLv3 CGI/Auth/Flexible/AGPLv3)],
+ srcdump_includedirs => sub { return @INC; },
srcdump_system_dir => sub { $_[2] =~ m#^/etc/|^/usr/(?!local/)#; },
+ srcdump_process_dir => \&srcdump_process_dir,
srcdump_vcs_dirs => [qw(.git .hg .svn CVS)],
srcdump_byvcs_git => \&srcdump_byvcs_git,
srcdump_byvcs_hg => \&srcdump_byvcs_hg,
srcdump_byvcs_cvs => \&srcdump_byvcs_cvs,
srcdump_novcs => \&srcdump_novcs,
srcdump_excludes => [qw(*~ *.bak *.tmp), '#*#'],
+ dump => \&dump_plain,
gettext => sub { gettext($_[2]); },
print => sub { print $_[2] or die $!; },
debug => sub { }, # like print; msgs contain trailing \n
}
bless $verifier, $class;
$verifier->_dbopen();
+ $verifier->_ch('srcdump_prepare');
return $verifier;
}
my $cookie = $r->construct_cookie($cookiesecret);
if ($kind =~ m/^SRCDUMP-(\w+)$/) {
- $r->_ch('srcdump_dump_thing', (lc $1));
+ $r->_ch('srcdump_dump', (lc $1));
return 0;
}