How to adjust man page line length [SOLVED]

David J. Weller-Fahy dave-lists-freebsd-questions at weller-fahy.com
Thu Jan 20 04:51:49 UTC 2011


* Giorgos Keramidas <keramida at ceid.upatras.gr> [2011-01-19 02:57 -0500]:
> On Tue, 18 Jan 2011 12:29:18 -0600, David Kelly <dkelly at hiwaay.net> wrote:
> > On Tue, Jan 18, 2011 at 06:11:13PM +0100, Giorgos Keramidas wrote:
> >> Set the 'columns' attribute of your tty:
> >>     stty columns 60
> >>     man xxx
> >
> > *Should*? You posted without trying it? (I tried, did not work).
> 
> 'Should' as in "I tried it here and it worked".  I'm running a recent
> CURRENT snapshot, but I don't think this affects the results.  What
> does 'stty -a' show in your terminal?  What is your shell's
> environment (e.g. the value of COLUMNS)?  What is your PAGER? etc.

Well... that was an interesting night of experimentation.  Thanks for
the idea about stty (which I didn't know about), because otherwise I
might have gone mad (apparently COLUMNS isn't set in the environment of
a shell script... which makes sense when one thinks about it).

Regardless, I ended up finding two solutions.

First, I created the following shell script.

#v+
dave at heffalump:~$ cat bin/man.sh
#!/bin/sh
mpage=`man -w $1`
tcols=`stty -a | grep columns | awk '{ print $6 }'`

zcat -f `man -w $1` | groff -Tutf8 -man -rIN=7n -rLL=`echo ${tcols} - 3 | bc`n - | less
#v-

That did the job, but made `man -k`, which my fingers find familiar,
unusable.  I remembered you were running a CURRENT snapshot, so figured
I'd check the difference between man in HEAD and 8.1-RELEASE... WOW!
The man in HEAD is now a shell script.

That inspired a second solution: Take the shell script from HEAD, and
install it for my user's use.  So, I checked out the man from HEAD.

	svn checkout svn://svn.freebsd.org/base/head/usr.bin/man

I installed fakeroot (needed to install the man pages).

The Makefile doesn't honor PREFIX, but does honor BINDIR/MANDIR, so I
used the following command-line to install the man from HEAD.

	fakeroot make install BINDIR=/home/dave/usr/bin MANDIR=/home/dave/usr/man/man NO_MANCOMPRESS="YES"

Whoops!  The program and man pages installed, but man pages were not
displayed using the number of columns.  Apparently there's more to the
modified behavior in HEAD than just the man display program... but the
new man is a shell script so I can modify it.

I applied the following patch.

#v+
--- man.sh.orig	2011-01-19 22:41:34.000000000 -0600
+++ man.sh	2011-01-19 22:41:33.000000000 -0600
@@ -891,9 +891,10 @@
 	search_whatis whatis "$@"
 }
 
+cols=`stty -a | grep columns | awk '{ print $6 }'`
 EQN=/usr/bin/eqn
 COL=/usr/bin/col
-NROFF='/usr/bin/groff -S -Wall -mtty-char -man'
+NROFF='/usr/bin/groff -S -Wall -mtty-char -man -rLL=`echo $cols - 3 | bc`n'
 PIC=/usr/bin/pic
 SYSCTL=/sbin/sysctl
 TBL=/usr/bin/tbl
#v-

I installed again, and done!

So, more gymnastics than I would like, but now man uses the current
number of columns.  I'll use this method until the new shell script
version in HEAD makes it into the base of a release I'm running.

Thanks to all for the information and inspiration!

Regards,
-- 
dave [ please don't CC me ]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20110120/7ec03775/attachment.pgp


More information about the freebsd-questions mailing list