From: Miklos Vajna Date: Thu, 12 Jul 2007 18:39:27 +0000 (+0200) Subject: gitweb: new cgi parameter: opt X-Git-Tag: v1.5.3-rc1~2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/868bc068bb45e3b9d135151f2126ce3dba849426 gitweb: new cgi parameter: opt Currently the only supported value is '--no-merges' for the 'rss', 'atom', 'log', 'shortlog' and 'history' actions, but it can be easily extended to allow other parameters for other actions. Signed-off-by: Miklos Vajna Signed-off-by: Junio C Hamano --- diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 27580b5670..c8ba3a27a3 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -386,6 +386,23 @@ sub check_export_ok { } } +my %allowed_options = ( + "--no-merges" => [ qw(rss atom log shortlog history) ], +); + +our @extra_options = $cgi->param('opt'); +if (defined @extra_options) { + foreach(@extra_options) + { + if (not grep(/^$_$/, keys %allowed_options)) { + die_error(undef, "Invalid option parameter"); + } + if (not grep(/^$action$/, @{$allowed_options{$_}})) { + die_error(undef, "Invalid option parameter for this action"); + } + } +} + our $hash_parent_base = $cgi->param('hpb'); if (defined $hash_parent_base) { if (!validate_refname($hash_parent_base)) { @@ -537,6 +554,7 @@ (%) action => "a", file_name => "f", file_parent => "fp", + extra_options => "opt", hash => "h", hash_parent => "hp", hash_base => "hb", @@ -1773,6 +1791,7 @@ sub parse_commits { ($arg ? ($arg) : ()), ("--max-count=" . $maxcount), ("--skip=" . $skip), + @extra_options, $commit_id, "--", ($filename ? ($filename) : ())