Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [RFC PATCH 01/10] gitweb: Print to explicit filehandle (preparing for caching)

From: Jakub Narebski <hidden>
Date: 2016-06-15 22:48:05

As you can (or rather can't ;-)) see this patch didn't made it into list,
because with 119,993 characters in format-patch patch it probably exceeds
a little bit exceeding 100,000 characters message size limit on VGER.

The problem is that it doesn't make sense to send partial patch... well,
perhaps reindent and breaking of exceedingly long lines should be split
into separate patch...

For now you can view the patch via gitweb
  http://repo.or.cz/w/git/jnareb-git.git/commitdiff/0dd15cb3f18e2a26fc834fd3b071e6d3ecc00557
and apply it from
  http://repo.or.cz/w/git/jnareb-git.git/patch/0dd15cb3f18e2a26fc834fd3b071e6d3ecc00557

The comment for this message (for this patch) can be seen below.

-- >8 --
On Sat, 23 Jan 2010, Jakub Narebski wrote:
This means replacing

  print <something>;
by
  print {$out} <something>;

and

  binmode STDOUT, <layer>;
by
  binmode $out, <layer>;

where $out is global variable set to \*STDOUT at the beginning of
gitweb, but after reading gitweb config.  This way it would be simple
to e.g. tie output filehandle or use PerlIO layers to simultaneously
write to standard output and to some specified file (like "tee"
utility does), or redirect output to a scalar, or a file.

die_error (re)sets $out to \*STDOUT; we would (probably) want to treat
errors in a special way, and do not cache them.


The only other differences are reindent of continued lines (if
needed), and sometimes word-wrapping lines which this change made too
long.

Signed-off-by: Jakub Narebski <redacted>
---
This patch is meant as (straight) replacement for the following patch
by J.H. (John 'Warthog9' Hawley):
* [PATCH 8/9] gitweb: Convert output to using indirect file handle
  Message-ID: [ref]
  http://permalink.gmane.org/gmane.comp.version-control.git/136915

Actually this patch precedes (was written before) the patch by J.H.

This patch was written _before_ comment from Junio that it would be
better to simply use
  print $out <something>;
and do not try to be too clever.


Differences from patch by J.H.:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Only one output handle, instead of having one output handle for text,
  (':utf8'), and another output handler for binary files (:raw).  

  I do assume that I can write to handler with appropriate layer:
  :utf8/:raw, and then I can simply read from cache file in :raw
  binmode, as the data is already converted correctly.

* Shorter name for output handle: $out instead of $output_handler

* Set output handler to \*STDOUT (default value in declaration of this
  variable, and also in die_error() subroutine), instead of *STDOUT.
  This way $out is indirect filehandle, instead of using direct
  filehandle which is _global_ to current package (see perlopentut(1)).

* Reindent continuation lines, i.e.

    print <line1> .
          <line2>;

  got replaced (reindented) with

    print {$out} <line1> .
                 <line2>;

  In some places lines were broken into two, when after indent the
  line got too long.

* Slightly different replacement for printf
-- 
Jakub Narebski
Poland
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help