X-Git-Url: https://gitweb.ps.run/flakes/blobdiff_plain/9e25130078296077bf9864978b91bda7dfcea7bc..9a1d0c514456752694e317bfef7b500fa7caeee2:/patches/gitweb.patch
diff --git a/patches/gitweb.patch b/patches/gitweb.patch
new file mode 100644
index 0000000..8372f32
--- /dev/null
+++ b/patches/gitweb.patch
@@ -0,0 +1,137 @@
+--- gitweb.cgi.orig 2020-10-06 10:13:45.621810025 +0100
++++ gitweb.cgi 2020-10-06 10:08:21.651823286 +0100
+@@ -18,9 +18,10 @@
+ use Encode;
+ use Fcntl ':mode';
+ use File::Find qw();
+-use File::Basename qw(basename);
++use File::Basename qw(basename dirname);
+ use Time::HiRes qw(gettimeofday tv_interval);
+ use Digest::MD5 qw(md5_hex);
++use File::Spec; # hack
+
+ binmode STDOUT, ':utf8';
+
+@@ -6644,6 +6645,20 @@
+ print "\n\n"; # class="readme"
+ }
+
++ # hack
++ if (!$prevent_xss) {
++ $file_name = "README.md";
++ my $proj_head_hash = git_get_head_hash($project);
++ my $readme_blob_hash = git_get_hash_by_path($proj_head_hash, "README.md", "blob");
++
++ if ($readme_blob_hash) { # if README.md exists
++ print "
\n";
++ print ""; # TODO find/create a better CSS class than page_body
++ print get_markdown($file_name, $readme_blob_hash);
++ print "
";
++ }
++ }
++
+ # we need to request one more than 16 (0..15) to check if
+ # those 16 are all
+ my @commitlist = $head ? parse_commits($head, 17) : ();
+@@ -7117,6 +7132,9 @@
+ my $syntax = guess_file_syntax($highlight, $file_name);
+ $fd = run_highlighter($fd, $highlight, $syntax);
+
++ # hack
++ my $ismarkdown = ($file_name =~ /md$/);
++
+ git_header_html(undef, $expires);
+ my $formats_nav = '';
+ if (defined $hash_base && (my %co = parse_commit($hash_base))) {
+@@ -7160,6 +7178,10 @@
+ esc_attr(href(action=>"blob_plain", hash=>$hash,
+ hash_base=>$hash_base, file_name=>$file_name)) .
+ qq!" />\n!;
++ } elsif ($ismarkdown) {
++ print qq!\n!;
++ print get_markdown($file_name, $hash);
++ print qq!
\n!; # $cmd_markdownify
+ } else {
+ my $nr;
+ while (my $line = <$fd>) {
+@@ -7177,6 +7199,79 @@
+ git_footer_html();
+ }
+
++# hack
++sub get_norm_rel_path { # http://www.perlmonks.org/bare/?node_id=11907
++ my $unnormpath = shift;
++ while ($unnormpath =~ m!/\.!) {
++ $unnormpath =~ s!/[^\/]+/\.\.!!;
++ # print "Path is now -+$unnormpath+-\n";
++ }
++ return $unnormpath;
++}
++sub get_markdown {
++ my $tfilename = shift;
++ my $thash = shift;
++ my $rethtmlstr = "";
++ use open ":encoding(utf8)"; # needed to have utf8 survive through the shell pipe
++ my $cmd_markdownify = $GIT . " " . git_cmd() . " cat-file blob " . $thash . " | perl -e 'my \$str = do { local \$/; }; \$str =~ s/