Instead of passing the args through the wrapper so the CVS plugin
authorAmitai Schlair <schmonz@magnetic-babysitter.(none)>
Sun, 23 Aug 2009 22:25:02 +0000 (18:25 -0400)
committerAmitai Schlair <schmonz@magnetic-babysitter.(none)>
Sun, 23 Aug 2009 22:25:02 +0000 (18:25 -0400)
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

index 4d92716ff0d31a523e855b7fe86d76abb326709f..2354717c3a855746479a19fc6823065652a587a3 100644 (file)
@@ -44,6 +44,17 @@ EOF
                $test_receive=IkiWiki::Receive::gen_wrapper();
        }
 
                $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}) {
        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;
 
 int main (int argc, char **argv) {
        char *s;
 
+$check_cvs_add_dir
 $check_commit_hook
 $test_receive
 $envsave
 $check_commit_hook
 $test_receive
 $envsave
@@ -139,7 +151,7 @@ $envsave
        }
 
 $pre_exec
        }
 
 $pre_exec
-       execv("$this", argv);
+       execl("$this", "$this", NULL);
        perror("exec $this");
        exit(1);
 }
        perror("exec $this");
        exit(1);
 }