git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] gitweb: Route rest of action subroutines through %actions

From
Jakub Narebski <jnareb@gmail.com>
Date
Aug 22, 2006, 14:59 UTC
Message-ID
<200608221659.20655.jnareb@gmail.com>
In-Reply-To
<200608221651.19629.jnareb@gmail.com>

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>
---
This is an alternative to (not accepted) patch by Martin Waitz from
in http://permalink.gmane.org/gmane.comp.version-control.git/25535
Message-Id: <11557673281583-git-send-email-tali@admingilde.org>
  gitweb: use action dispatcher for non-project actions, too.
 gitweb/gitweb.perl |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index f59213e..e09204d 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -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");
 }
-- 
1.4.1.1
Previous: Jakub NarebskiNext: Jakub Narebski
Message 8 of 12 in “gitweb: Yet another cleanup series”
  1. 0/3 gitweb: Yet another cleanup seriesJakub Narebski, Aug 22, 2006
  2. 1/3 gitweb: Whitespace cleanup: realign, reindentJakub Narebski, Aug 22, 2006
  3. Junio C HamanoAug 23, 2006
  4. Jakub NarebskiAug 23, 2006
  5. Andreas EricssonAug 23, 2006
  6. Junio C HamanoAug 23, 2006
  7. 2/3 gitweb: Use underscore instead of hyphen to separate words in HTTP headers namesJakub Narebski, Aug 22, 2006
  8. 3/3 gitweb: Route rest of action subroutines through %actionsJakub Narebski, Aug 22, 2006
  9. Jakub NarebskiAug 22, 2006
  10. 4/3 gitweb: Use here-docJakub Narebski, Aug 22, 2006
  11. Jakub NarebskiAug 22, 2006
  12. Junio C HamanoAug 23, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.