From: Amitai Schlair Date: Sat, 22 Aug 2009 05:25:41 +0000 (-0400) Subject: Pass along wrapper args to ikiwiki, then handle the "cvs add dir" X-Git-Tag: 3.14159265~61^2~29 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=524de4db2639d37aa7049de4363c5d482cd34a0e;p=ikiwiki.git Pass along wrapper args to ikiwiki, then handle the "cvs add dir" case with a getopt hook directly in my plugin. If the wrapper change is safe, we won't need a wrapper wrapper. --- diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm index c09e4f9aa..076af26f3 100644 --- a/IkiWiki/Plugin/cvs.pm +++ b/IkiWiki/Plugin/cvs.pm @@ -6,6 +6,7 @@ use strict; use IkiWiki; sub import { + hook(type => "getopt", id => "cvs", call => \&getopt); 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,13 @@ sub import { hook(type => "rcs", id => "rcs_getctime", call => \&rcs_getctime); } +sub getopt () { + # "cvs add dir" acts immediately on the repository. + # post-commit gets confused by this and doesn't need to act on it. + # If that's why we're here, terminate the process. + @ARGV == 3 && $ARGV[1] eq "NONE" && $ARGV[2] eq "NONE" && exit 0; +} + sub checkconfig () { if (! defined $config{cvspath}) { $config{cvspath}="ikiwiki"; diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 6555fe625..4d92716ff 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -139,7 +139,7 @@ $envsave } $pre_exec - execl("$this", "$this", NULL); + execv("$this", argv); perror("exec $this"); exit(1); }