X-Git-Url: https://git.ladys.computer/Gitweb/blobdiff_plain/557f4ba7c6c5713b0b3eb1ceddbe48d792d2ac92550cc9347f62a799a7631ead..2ac28deddea24ba8a957eee283275b3460eddbd1c0286d948b5f5b703d60192d:/gitweb.perl
diff --git a/gitweb.perl b/gitweb.perl
index 2f2e52f..84293a5 100755
--- a/gitweb.perl
+++ b/gitweb.perl
@@ -437,12 +437,11 @@ my %allowed_options = (
our @extra_options = $cgi->param('opt');
if (defined @extra_options) {
- foreach(@extra_options)
- {
- if (not grep(/^$_$/, keys %allowed_options)) {
+ foreach my $opt (@extra_options) {
+ if (not exists $allowed_options{$opt}) {
die_error(undef, "Invalid option parameter");
}
- if (not grep(/^$action$/, @{$allowed_options{$_}})) {
+ if (not grep(/^$action$/, @{$allowed_options{$opt}})) {
die_error(undef, "Invalid option parameter for this action");
}
}
@@ -599,7 +598,6 @@ sub href(%) {
action => "a",
file_name => "f",
file_parent => "fp",
- extra_options => "opt",
hash => "h",
hash_parent => "hp",
hash_base => "hb",
@@ -609,6 +607,7 @@ sub href(%) {
searchtext => "s",
searchtype => "st",
snapshot_format => "sf",
+ extra_options => "opt",
);
my %mapping = @mapping;
@@ -631,7 +630,13 @@ sub href(%) {
for (my $i = 0; $i < @mapping; $i += 2) {
my ($name, $symbol) = ($mapping[$i], $mapping[$i+1]);
if (defined $params{$name}) {
- push @result, $symbol . "=" . esc_param($params{$name});
+ if (ref($params{$name}) eq "ARRAY") {
+ foreach my $par (@{$params{$name}}) {
+ push @result, $symbol . "=" . esc_param($par);
+ }
+ } else {
+ push @result, $symbol . "=" . esc_param($params{$name});
+ }
}
}
$href .= "?" . join(';', @result) if scalar @result;
@@ -1511,6 +1516,7 @@ sub git_get_projects_list {
File::Find::find({
follow_fast => 1, # follow symbolic links
+ follow_skip => 2, # ignore duplicates
dangling_symlinks => 0, # ignore dangling symlinks, silently
wanted => sub {
# skip project-list toplevel, if we get it.
@@ -2286,9 +2292,17 @@ EOF
printf(''."\n",
esc_param($project), href(action=>"rss"));
+ printf(''."\n",
+ esc_param($project), href(action=>"rss",
+ extra_options=>"--no-merges"));
printf(''."\n",
esc_param($project), href(action=>"atom"));
+ printf(''."\n",
+ esc_param($project), href(action=>"atom",
+ extra_options=>"--no-merges"));
} else {
printf(''."\n",