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);
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";
$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="";
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