Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

[PATCHv3] gitweb: Git config keys are case insensitive, make config search too

From: Jakub Narebski <hidden>
Date: 2016-06-15 22:51:41
Subsystem: the rest · Maintainer: Linus Torvalds

"git config -z -l" that gitweb uses in git_parse_project_config() to
populate %config hash returns section and key names of config
variables in lowercase (they are case insensitive).  When checking
%config in git_get_project_config() we have to take it into account.

Helped-by: Junio C Hamano [off-list ref]
Signed-off-by: Jakub Narebski <redacted>
---
On Thu, 28 Jul 2011, Junio C Hamano napisał:
Jakub Narebski [off-list ref] writes:
quoted
"git config -z -l" that gitweb uses in git_parse_project_config() to
populate %config hash returns section and key names of config
variables in lowercase (they are case insensitive).  When checking
%config in git_get_project_config() we have to take it into account.

Gitweb does not (yet?) use git config variables with subsection, so we
can simply lowercase $key in git_get_project_config (only subsection
names are case sensitive).
Why stop there, I have to wonder, instead of futureproofing with minimum
cost, even with something naïve like:

	if (my ($hi, $mi, $lo) = ($key =~ /^([^.]*)\.(.*)\.(.*)$)) {
		$key = join(".", lc($hi), $mi, lc($lo);
	} else {
        	$key = lc($key);
	}
Well, I thought it would be more involved than this.

Anyway, here it is:

 gitweb/gitweb.perl |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 1070805..f858d1b 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -2526,6 +2526,13 @@ sub git_get_project_config {
 
 	# key sanity check
 	return unless ($key);
+	# only subsection, if exists, is case sensitive,
+	# and not lowercased by 'git config -z -l'
+	if (my ($hi, $mi, $lo) = ($key =~ /^([^.]*)\.(.*)\.([^.]*)$/)) {
+		$key = join(".", lc($hi), $mi, lc($lo));
+	} else {
+		$key = lc($key);
+	}
 	$key =~ s/^gitweb\.//;
 	return if ($key =~ m/\W/);
 
-- 
1.7.5
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help