From: Amitai Schlair Date: Sun, 30 Aug 2009 20:13:17 +0000 (-0400) Subject: On some systems the commit message gets quoted properly already. Don't X-Git-Tag: 3.14159265~61^2~14 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=1af7d7d8429b6e73493a5f8ba877c6cfb888cfe1;p=ikiwiki.git On some systems the commit message gets quoted properly already. Don't requote in such cases, do quote in all others. --- diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm index fa4c4da8e..849302df4 100644 --- a/IkiWiki/Plugin/cvs.pm +++ b/IkiWiki/Plugin/cvs.pm @@ -119,11 +119,21 @@ sub cvs_runcvs(@) { sub cvs_shquote_commit ($) { my $message = shift; + my $test_message = "CVS autodiscover quoting CVS"; eval q{use String::ShellQuote}; error($@) if $@; + eval q{use IPC::Cmd}; + error($@) if $@; - return shell_quote(IkiWiki::possibly_foolish_untaint($message)); + my $cmd = ['echo', shell_quote($test_message)]; + my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf) = + IPC::Cmd::run(command => $cmd, verbose => 0); + if ((grep /'$test_message'/, @$stdout_buf) > 0) { + return IkiWiki::possibly_foolish_untaint($message); + } else { + return shell_quote(IkiWiki::possibly_foolish_untaint($message)); + } } sub cvs_is_controlling {