From 5da229aa51adcec27b109ebe2e696f7426cbd781 Mon Sep 17 00:00:00 2001 From: Amitai Schlair Date: Sun, 23 Aug 2009 18:25:02 -0400 Subject: [PATCH] Instead of passing the args through the wrapper so the CVS plugin can evaluate them, check them in the wrapper right off the bat. This doesn't prevent the deadlock in web commits that need to cvs add directories, but I'm committing so Joey can take a look if he wants. --- IkiWiki/Wrapper.pm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 4d92716ff..2354717c3 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -44,6 +44,17 @@ EOF $test_receive=IkiWiki::Receive::gen_wrapper(); } + my $check_cvs_add_dir=""; + # XXX conditionalize on $config{rcs} eq 'cvs' + $check_cvs_add_dir=<<"EOF"; + { + int j; + for (j = 1; j < argc; j++) + if (strcmp(argv[j], "New directory") == 0) + exit(0); + } +EOF + my $check_commit_hook=""; my $pre_exec=""; if ($config{post_commit}) { @@ -119,6 +130,7 @@ addenv(char *var, char *val) { int main (int argc, char **argv) { char *s; +$check_cvs_add_dir $check_commit_hook $test_receive $envsave @@ -139,7 +151,7 @@ $envsave } $pre_exec - execv("$this", argv); + execl("$this", "$this", NULL); perror("exec $this"); exit(1); } -- 2.26.2