mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-05 11:01:13 +02:00
32105: support combinations of man or nroff with colcrt or col.
This commit is contained in:
parent
8ffba43be9
commit
beb40845d9
2 changed files with 36 additions and 5 deletions
|
@ -1,5 +1,8 @@
|
||||||
2013-12-13 Barton E. Schaefer <schaefer@zsh.org>
|
2013-12-13 Barton E. Schaefer <schaefer@zsh.org>
|
||||||
|
|
||||||
|
* Martin Vaeth: 32105: Util/helpfiles: support all combinations of
|
||||||
|
man or nroff with colcrt or col.
|
||||||
|
|
||||||
* Aaron Peschel: 32103: Completion/Unix/Type/_hosts: parse
|
* Aaron Peschel: 32103: Completion/Unix/Type/_hosts: parse
|
||||||
host:port format in ssh known_hosts files.
|
host:port format in ssh known_hosts files.
|
||||||
|
|
||||||
|
|
|
@ -65,13 +65,40 @@ $ENV{'LANG'} = 'C';
|
||||||
$ENV{'MANWIDTH'} = '80';
|
$ENV{'MANWIDTH'} = '80';
|
||||||
$ENV{'GROFF_NO_SGR'} = ''; # We need "classical" formatting of man pages.
|
$ENV{'GROFF_NO_SGR'} = ''; # We need "classical" formatting of man pages.
|
||||||
|
|
||||||
unless(open(MANPAGE, '-|', "man $manfile | colcrt -")) {
|
$mantmp = $destdir . '/man.tmp';
|
||||||
close(MANPAGE);
|
$coltmpbase = 'col.tmp';
|
||||||
open(MANPAGE, '-|', "man $manfile | col -bx")
|
$coltmp = $destdir . '/' . $coltmpbase;
|
||||||
|
$args = "$manfile >$mantmp";
|
||||||
|
unlink($mantmp);
|
||||||
|
&Info('attempting man ', $args);
|
||||||
|
if(system('man ' . $args) || !(-s $mantmp)) {
|
||||||
|
unlink($mantmp);
|
||||||
|
&Info('attempting nroff -man ', $args);
|
||||||
|
if(system('nroff -man ' . $args) || !(-s $mantmp)) {
|
||||||
|
unlink($mantmp);
|
||||||
|
&Die('man and nroff -man both failed for ', $manfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$args = "$mantmp >$coltmp";
|
||||||
|
unlink($coltmp);
|
||||||
|
&Info('attempting colcrt ', $args);
|
||||||
|
if(system('colcrt ' . $args) || !(-s $coltmp)) {
|
||||||
|
unlink($coltmp);
|
||||||
|
&Info('attempting col -bx <', $args);
|
||||||
# The x is necessary so that spaces don't turn into tabs, which messes
|
# The x is necessary so that spaces don't turn into tabs, which messes
|
||||||
# up the calculations of indentation on machines which randomly wrap lines
|
# up the calculations of indentation on machines which randomly wrap lines
|
||||||
# round to the previous line (so you see what we're up against).
|
# round to the previous line (so you see what we're up against).
|
||||||
|| &Die('can run neither "man | colcrt -" nor "man | col -bx"');
|
if(system('col -bx <' . $args) || !(-s $coltmp)) {
|
||||||
|
unlink($mantmp);
|
||||||
|
unlink($coltmp);
|
||||||
|
&Die('colcrt and col -bx both failed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unlink($mantmp) || &Die('cannot remove tempfile ', $mantmp);
|
||||||
|
|
||||||
|
unless(open(MANPAGE, '<', $coltmp)) {
|
||||||
|
unlink($coltmp);
|
||||||
|
&Die('generated tmpfile cannot be read');
|
||||||
}
|
}
|
||||||
|
|
||||||
unless($linkfile eq '') {
|
unless($linkfile eq '') {
|
||||||
|
@ -198,7 +225,8 @@ BUILTINS: while (<MANPAGE>) {
|
||||||
|
|
||||||
select STDOUT;
|
select STDOUT;
|
||||||
close OUT;
|
close OUT;
|
||||||
close(MANPAGE) || &Die('piping from man ', $manfile, ' failed');
|
close(MANPAGE);
|
||||||
|
unlink($coltmpbase) || &Die('cannot remove tempfile ', $coltmpbase);
|
||||||
|
|
||||||
foreach $file (<*>) {
|
foreach $file (<*>) {
|
||||||
open (IN, $file);
|
open (IN, $file);
|
||||||
|
|
Loading…
Reference in a new issue