X-Git-Url: https://gitweb.ps.run/ps-gitweb/blobdiff_plain/4d16656d9376c1e39b89252434920a2003012c80..6eebfa8f992b5dfc402d25d146256f1e6edcb3bb:/gitweb/gitweb.perl
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index b5490df..ed1dacd 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -18,7 +18,8 @@ use CGI::Carp qw(fatalsToBrowser set_message);
use Encode;
use Fcntl ':mode';
use File::Find qw();
-use File::Basename qw(basename);
+use File::Basename qw(basename dirname);
+use File::Spec;
use Time::HiRes qw(gettimeofday tv_interval);
use Digest::MD5 qw(md5_hex);
@@ -6662,6 +6663,19 @@ sub git_summary {
print "\n\n"; # class="readme"
}
+ 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) : ();
@@ -7136,6 +7150,8 @@ sub git_blob {
my $syntax = guess_file_syntax($highlight, $file_name);
$fd = run_highlighter($fd, $highlight, $syntax);
+ my $ismarkdown = ($file_name =~ /md$/);
+
git_header_html(undef, $expires);
my $formats_nav = '';
if (defined $hash_base && (my %co = parse_commit($hash_base))) {
@@ -7179,7 +7195,11 @@ sub git_blob {
esc_attr(href(action=>"blob_plain", hash=>$hash,
hash_base=>$hash_base, file_name=>$file_name)) .
qq!" />\n!;
- } else {
+ } elsif ($ismarkdown) {
+ print qq!\n!;
+ print get_markdown($file_name, $hash);
+ print qq!
\n!; # $cmd_markdownify
+ } else {
my $nr;
while (my $line = <$fd>) {
chomp $line;
@@ -7196,6 +7216,78 @@ sub git_blob {
git_footer_html();
}
+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/