Abstract out CVS's involvement in the wrapper:
* In Wrapper.pm, add a new hook "wrapperargcheck" to examine argc/argv and return success or failure. In the failure case, the wrapper terminates. * In cvs.pm, implement the new hook to return failure if a directory is being cvs added.master
parent
5f44dd8e77
commit
aafd267ee0
|
@ -6,6 +6,7 @@ use strict;
|
|||
use IkiWiki;
|
||||
|
||||
sub import {
|
||||
hook(type => "wrapperargcheck", id => "cvs", call => \&wrapperargcheck);
|
||||
hook(type => "checkconfig", id => "cvs", call => \&checkconfig);
|
||||
hook(type => "getsetup", id => "cvs", call => \&getsetup);
|
||||
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||
|
@ -20,6 +21,17 @@ sub import {
|
|||
hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime);
|
||||
}
|
||||
|
||||
sub wrapperargcheck () {
|
||||
my $check_args=<<"EOF";
|
||||
int j;
|
||||
for (j = 1; j < argc; j++)
|
||||
if (strstr(argv[j], "New directory") != NULL)
|
||||
return 0;
|
||||
return 1;
|
||||
EOF
|
||||
return $check_args;
|
||||
}
|
||||
|
||||
sub checkconfig () {
|
||||
if (! defined $config{cvspath}) {
|
||||
$config{cvspath}="ikiwiki";
|
||||
|
|
|
@ -44,17 +44,8 @@ EOF
|
|||
$test_receive=IkiWiki::Receive::gen_wrapper();
|
||||
}
|
||||
|
||||
my $check_cvs_add_dir="";
|
||||
if ($config{rcs} eq 'cvs') {
|
||||
$check_cvs_add_dir=<<"EOF";
|
||||
{
|
||||
int j;
|
||||
for (j = 1; j < argc; j++)
|
||||
if (strstr(argv[j], "New directory") != NULL)
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
}
|
||||
my $check_args=" return 0;";
|
||||
run_hooks(wrapperargcheck => sub { $check_args = shift->(); });
|
||||
|
||||
my $check_commit_hook="";
|
||||
my $pre_exec="";
|
||||
|
@ -128,10 +119,16 @@ addenv(char *var, char *val) {
|
|||
newenviron[i++]=s;
|
||||
}
|
||||
|
||||
int checkargs(int argc, char **argv) {
|
||||
$check_args
|
||||
}
|
||||
|
||||
int main (int argc, char **argv) {
|
||||
char *s;
|
||||
|
||||
$check_cvs_add_dir
|
||||
if (!checkargs(argc, argv))
|
||||
exit(0);
|
||||
|
||||
$check_commit_hook
|
||||
$test_receive
|
||||
$envsave
|
||||
|
|
Loading…
Reference in New Issue