gitweb: disable UTF-8 encoding fix in git_blob_plain() and git_snapshot()
authorJulien Moutinho <julm@sourcephile.fr>
Fri, 27 Mar 2020 18:22:25 +0000 (19:22 +0100)
committerJulien Moutinho <julm@sourcephile.fr>
Fri, 27 Mar 2020 19:06:30 +0000 (20:06 +0100)
servers/mermet/nginx/sourcephile.fr/git.nix

index 11e3478d48dd097dd0972660aed217758a089193..b0f89d09f3b0ebb2f6a02c57de355c654df33771 100644 (file)
@@ -112,6 +112,8 @@ in
       $projects_list_description_width = 50;
       $projects_list_group_categories = 1;
       $default_projects_order = "age";
+      $default_text_plain_charset = 'utf-8';
+      #$fallback_encoding = "utf-8";
       $omit_owner = 1;
       $export_ok = "git-daemon-export-ok";
       $prevent_xss = 0;
@@ -131,15 +133,26 @@ in
       # Fix a bug in Gitweb: FCGI is not Unicode aware.
       if ($first_request) {
           my $enc = Encode::find_encoding('UTF-8');
-          my $org = \&FCGI::Stream::PRINT;
-          no warnings 'redefine';
-          *FCGI::Stream::PRINT = sub {
+          my $old_PRINT = \&FCGI::Stream::PRINT;
+          my $new_PRINT = sub {
               my @OUTPUT = @_;
               for (my $i = 1; $i < @_; $i++) {
                   $OUTPUT[$i] = $enc->encode($_[$i], Encode::FB_CROAK|Encode::LEAVE_SRC);
               }
               @_ = @OUTPUT;
-              goto $org;
+              goto $old_PRINT;
+          };
+          no warnings 'redefine';
+          *FCGI::Stream::PRINT = $new_PRINT;
+          *git_blob_plain = sub {
+            *FCGI::Stream::PRINT = $old_PRINT;
+            goto $old_git_blob_plain;
+            *FCGI::Stream::PRINT = $new_PRINT;
+          };
+          *git_snapshot = sub {
+            *FCGI::Stream::PRINT = $old_PRINT;
+            goto $old_git_snapshot;
+            *FCGI::Stream::PRINT = $new_PRINT;
           };
       };
     '';