[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