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 "
$file_name
\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/