gitweb: Route rest of action subroutines through %actions

Route rest of action subroutines, namely git_project_list and git_opml
(both of which doesn't need $project) through %actions hash.

This has disadvantage that all parameters are read and validated;
earlier git_opml was called as soon as $action was parsed and
validated, git_project_list was called as soon as $project was parsed
and validated.  This has advantage that all action dispatch is grouped
in one place.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Jakub Narebski 2006-08-22 16:59:20 +02:00 committed by Junio C Hamano
parent 134a6941ec
commit 77a153fd92

View File

@ -155,11 +155,6 @@ if (defined $action) {
if ($action =~ m/[^0-9a-zA-Z\.\-_]/) {
die_error(undef, "Invalid action parameter");
}
# action which does not check rest of parameters
if ($action eq "opml") {
git_opml();
exit;
}
}
our $project = ($cgi->param('p') || $ENV{'PATH_INFO'});
@ -179,9 +174,6 @@ if (defined $project) {
die_error(undef, "No such project");
}
$ENV{'GIT_DIR'} = "$projectroot/$project";
} else {
git_project_list();
exit;
}
our $file_name = $cgi->param('f');
@ -255,9 +247,16 @@ my %actions = (
"tags" => \&git_tags,
"tree" => \&git_tree,
"snapshot" => \&git_snapshot,
# those below don't need $project
"opml" => \&git_opml,
"project_list" => \&git_project_list,
);
$action = 'summary' if (!defined($action));
if (defined $project) {
$action ||= 'summary';
} else {
$action ||= 'project_list';
}
if (!defined($actions{$action})) {
die_error(undef, "Unknown action");
}