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

[PATCH 22]

From
Jakub Narebski <jnareb@gmail.com>
Date
Aug 1, 2006, 00:59 UTC
Message-ID
<200608010259.13721.jnareb@gmail.com>
In-Reply-To
<200607292239.11034.jnareb@gmail.com>
>From d69d3357f134bb5548f18fafff7664499adc1fcd Mon Sep 17 00:00:00 2001
From: Jakub Narebski <jnareb@gmail.com>
Date: Tue, 1 Aug 2006 02:56:51 +0200
Subject: [PATCH] gitweb: Refactoring git_project_list

Slightly reworking git_project_list, including moving setting $order, as it is used only in this action. Mostly reindent.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
After Matthias Lederhofer <matled@gmx.net> patch,
"[PATCH] gitweb: use a hash to lookup the sub for an action"
 gitweb/gitweb.cgi |   57 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 35 insertions(+), 22 deletions(-)
diff --git a/gitweb/gitweb.cgi b/gitweb/gitweb.cgi
index 75390c8..27c36ef 100755
--- a/gitweb/gitweb.cgi
+++ b/gitweb/gitweb.cgi
@@ -80,14 +80,6 @@ if (defined $action) {
 	}
 }
 
-our $order = $cgi->param('o');
-if (defined $order) {
-	if ($order =~ m/[^0-9a-zA-Z_]/) {
-		undef $order;
-		die_error(undef, "Invalid order parameter.");
-	}
-}
-
 our $project = ($cgi->param('p') || $ENV{'PATH_INFO'});
 if (defined $project) {
 	$project =~ s|^/||; $project =~ s|/$||;
@@ -1303,10 +1295,15 @@ sub git_logo {
 }
 
 sub git_project_list {
+	my $order = $cgi->param('o');
+	if (defined $order && $order !~ m/project|descr|owner|age/) {
+		die_error(undef, "Invalid order parameter '$order'.");
+	}
+
 	my @list = git_read_projects();
 	my @projects;
 	if (!@list) {
-		die_error(undef, "No project found.");
+		die_error(undef, "No projects found.");
 	}
 	foreach my $pr (@list) {
 		my $head = git_read_head($pr->{'path'});
@@ -1328,6 +1325,7 @@ sub git_project_list {
 		}
 		push @projects, $pr;
 	}
+
 	git_header_html();
 	if (-f $home_text) {
 		print "<div class=\"index_include\">\n";
@@ -1338,29 +1336,42 @@ sub git_project_list {
 	}
 	print "<table class=\"project_list\">\n" .
 	      "<tr>\n";
-	if (!defined($order) || (defined($order) && ($order eq "project"))) {
+	$order ||= "project";
+	if ($order eq "project") {
 		@projects = sort {$a->{'path'} cmp $b->{'path'}} @projects;
 		print "<th>Project</th>\n";
 	} else {
-		print "<th>" . $cgi->a({-class => "header", -href => "$my_uri?" . esc_param("o=project")}, "Project") . "</th>\n";
+		print "<th>" .
+		      $cgi->a({-href => "$my_uri?" . esc_param("o=project"),
+		               -class => "header"}, "Project") .
+		      "</th>\n";
 	}
-	if (defined($order) && ($order eq "descr")) {
+	if ($order eq "descr") {
 		@projects = sort {$a->{'descr'} cmp $b->{'descr'}} @projects;
 		print "<th>Description</th>\n";
 	} else {
-		print "<th>" . $cgi->a({-class => "header", -href => "$my_uri?" . esc_param("o=descr")}, "Description") . "</th>\n";
+		print "<th>" .
+		      $cgi->a({-href => "$my_uri?" . esc_param("o=descr"),
+		               -class => "header"}, "Description") .
+		      "</th>\n";
 	}
-	if (defined($order) && ($order eq "owner")) {
+	if ($order eq "owner") {
 		@projects = sort {$a->{'owner'} cmp $b->{'owner'}} @projects;
 		print "<th>Owner</th>\n";
 	} else {
-		print "<th>" . $cgi->a({-class => "header", -href => "$my_uri?" . esc_param("o=owner")}, "Owner") . "</th>\n";
+		print "<th>" .
+		      $cgi->a({-href => "$my_uri?" . esc_param("o=owner"),
+		               -class => "header"}, "Owner") .
+		      "</th>\n";
 	}
-	if (defined($order) && ($order eq "age")) {
+	if ($order eq "age") {
 		@projects = sort {$a->{'commit'}{'age'} <=> $b->{'commit'}{'age'}} @projects;
 		print "<th>Last Change</th>\n";
 	} else {
-		print "<th>" . $cgi->a({-class => "header", -href => "$my_uri?" . esc_param("o=age")}, "Last Change") . "</th>\n";
+		print "<th>" .
+		      $cgi->a({-href => "$my_uri?" . esc_param("o=age"),
+		               -class => "header"}, "Last Change") .
+		      "</th>\n";
 	}
 	print "<th></th>\n" .
 	      "</tr>\n";
@@ -1372,14 +1383,16 @@ sub git_project_list {
 			print "<tr class=\"light\">\n";
 		}
 		$alternate ^= 1;
-		print "<td>" . $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=summary"), -class => "list"}, esc_html($pr->{'path'})) . "</td>\n" .
+		print "<td>" . $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=summary"),
+		                        -class => "list"}, esc_html($pr->{'path'})) . "</td>\n" .
 		      "<td>" . esc_html($pr->{'descr'}) . "</td>\n" .
 		      "<td><i>" . chop_str($pr->{'owner'}, 15) . "</i></td>\n";
-		print "<td class=\"". age_class($pr->{'commit'}{'age'}) . "\">" . $pr->{'commit'}{'age_string'} . "</td>\n" .
+		print "<td class=\"". age_class($pr->{'commit'}{'age'}) . "\">" .
+		      $pr->{'commit'}{'age_string'} . "</td>\n" .
 		      "<td class=\"link\">" .
-		      $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=summary")}, "summary") .
-		      " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=shortlog")}, "shortlog") .
-		      " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=log")}, "log") .
+		      $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=summary")}, "summary")   . " | " .
+		      $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=shortlog")}, "shortlog") . " | " .
+		      $cgi->a({-href => "$my_uri?" . esc_param("p=$pr->{'path'};a=log")}, "log") .
 		      "</td>\n" .
 		      "</tr>\n";
 	}
-- 
1.4.1.1
Previous: Luben TuikovNext: Junio C Hamano
Message 41 of 54 in “Some gitweb patches”
  1. Some gitweb patchesJakub Narebski, Jul 29, 2006
  2. gitweb: whitespace cleanupJakub Narebski, Jul 29, 2006
  3. gitweb: Use list for of open for running git commands, thorougly.Jakub Narebski, Jul 29, 2006
  4. Jakub NarebskiJul 30, 2006
  5. Junio C HamanoJul 31, 2006
  6. Jakub NarebskiJul 31, 2006
  7. Jakub NarebskiJul 31, 2006
  8. Jakub NarebskiJul 31, 2006
  9. Jakub NarebskiJul 31, 2006
  10. gitweb: simplify git_get_hash_by_pathJakub Narebski, Jul 29, 2006
  11. gitweb: More explicit error messages for open "-|"Jakub Narebski, Jul 29, 2006
  12. gitweb: Cleanup - chomp $line in consistent styleJakub Narebski, Jul 30, 2006
  13. gitweb: Correct error from changing "-|" open to list form in git_commitJakub Narebski, Jul 30, 2006
  14. gitweb: Cleanup - chomp @lines in consistent styleJakub Narebski, Jul 30, 2006
  15. gitweb: Add git_page_nav for later useJakub Narebski, Jul 30, 2006
  16. gitweb: Navbar refactoring - use git_page_nav to generate navigation barJakub Narebski, Jul 30, 2006
  17. gitweb: Replace form-feed character by ^LJakub Narebski, Jul 30, 2006
  18. gitweb: Read project description using utf-8 encodingJakub Narebski, Jul 30, 2006
  19. Jakub NarebskiJul 30, 2006
  20. gitweb: Show project descriptions with utf-8 characters in project list correctlyJakub Narebski, Jul 30, 2006
  21. gitweb: Add "\n" after <br/> in git_page_navJakub Narebski, Jul 30, 2006
  22. gitweb: Pager refactoring - use git_get_paging_nav for paginationJakub Narebski, Jul 30, 2006
  23. gitweb: Remove $project from git_get_paging_nav argumentsJakub Narebski, Jul 30, 2006
  24. gitweb: Headers refactoring - use git_header_div for header divsJakub Narebski, Jul 30, 2006
  25. gitweb: Remove characters entities entirely when shortening stringJakub Narebski, Jul 30, 2006
  26. Jakub NarebskiJul 31, 2006
  27. Jakub NarebskiJul 31, 2006
  28. gitweb: Ref refactoring - use git_get_referencing for marking tagged/head commitsJakub Narebski, Jul 31, 2006
  29. gitweb: Refactor generation of shortlog, tags and heads bodyJakub Narebski, Jul 31, 2006
  30. gitweb: No need to quote path for list version of open "-|"Jakub Narebski, Jul 31, 2006
  31. Junio C HamanoJul 31, 2006
  32. Jakub NarebskiJul 31, 2006
  33. Junio C HamanoAug 1, 2006
  34. There can be more than two levels of subdirectoriesJunio C Hamano, Aug 1, 2006
  35. gitweb: Reordering code and dividing it into categoriesJakub Narebski, Jul 31, 2006
  36. gitweb: Reordering code and dividing it into categoriesJakub Narebski, Jul 31, 2006
  37. gitweb: use a hash to lookup the sub for an actionMatthias Lederhofer, Jul 31, 2006
  38. Junio C HamanoJul 31, 2006
  39. Jakub NarebskiJul 31, 2006
  40. Luben TuikovAug 1, 2006
  41. Jakub Narebski, Aug 1, 2006
  42. Perhaps an obvious cut and paste error.Junio C Hamano, Aug 1, 2006
  43. Jakub NarebskiAug 1, 2006
  44. A few more fixups to gitwebJunio C Hamano, Aug 1, 2006
  45. Jakub NarebskiAug 1, 2006
  46. Junio C HamanoAug 1, 2006
  47. 1/2 Use tabs for indent in shell scriptsJakub Narebski, Aug 1, 2006
  48. 2/2 Set User-Agent string in shell scripts used for fetchingJakub Narebski, Aug 1, 2006
  49. Junio C HamanoAug 1, 2006
  50. Junio C HamanoAug 1, 2006
  51. Jakub NarebskiAug 1, 2006
  52. Luben TuikovAug 1, 2006
  53. gitweb: clean up user configuration partMatthias Lederhofer, Aug 1, 2006
  54. gitweb: include perl files for configurationMatthias Lederhofer, Aug 1, 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.