Re: CFR: Replace man/manpath/whatis/apropos with a shell script

From: Gordon Tetlow <gordon_at_freebsd.org>
Date: Wed, 18 Aug 2010 14:47:12 -0700
On Wed, Aug 18, 2010 at 12:11 AM, Gordon Tetlow <gordon_at_tetlows.org> wrote:

> All,
>
> I sat down and rewrote the man tools from a relatively old codebase to a
> single shell script. My original motivation was to allow multiple
> configuration files so port installations did not have to mess with
> /etc/manpath.config (like perl for example) when needing to manipulate the
> manpath. After looking at the existing code, I figured I could rewrite it as
> a shell script relatively easily.
>
> Script (install as /usr/bin/man, /usr/bin/manpath, /usr/bin/apropos,
> /usr/bin/whatis)
> http://people.freebsd.org/~gordon/man.sh<http://people.freebsd.org/%7Egordon/man.sh>
>
> Features of the new code:
>
> 1. BSD licensed (old code is GPL).
> 2. Imports configuration from /usr/local/etc/man.d/*.conf and /etc/man.conf
> (purposefully changed the manpath.config file since it is a different
> syntax).
> 3. Allows ports to override the toolset used to display the manpage based
> on language. This was done to try to merge the functionality of the
> japanese/man port into the base system as much as possible.
>
> I've tried to make this mirror the functionality, directory search order,
> and arguments as the current base implementation.
>
> This brings me to my next point. I need some testers willing to try this
> out. It would be particularly great if I could get some foreign language
> testers with localized manpage installations. If something doesn't work the
> way you expect, please contact me and I can help debug it (using man -ddd
> <whatever> will generally give me the debug information I need).
>
> Thanks,
> Gordon
>

I did some additional testing with the japanese/man-doc port and found the
following was necessary:

1. Install my script as /usr/bin/man
2. Install japanese/man-doc
3. Create a /usr/local/etc/man.d/ja-man-doc.conf with the following
contents:

EQN_JA /usr/local/bin/geqn
COL_JA /bin/cat
NROFF_JA /usr/local/bin/groff -S -Wall -mtty-char -man -Tnippon
-dlang=ja_JP.eucJP
PIC_JA /usr/local/bin/gpic
TBL_JA /usr/local/bin/gtbl
TROFF_JA /usr/local/bin/groff -man -dlang=ja_JP.eucJP
MANLOCALE ja_JP.eucJP

4. Create a symlink from /usr/share/man/ja.eucJP -> /usr/local/man/ja
5. Set LC_CTYPE=ja_JP.eucJP
6. man ls

When all is said and done, 3 should be handled by the man-doc port while 4
is a problem.

The current base system man uses the following search order for localized
manpages (which I have emulated):

Look in
/usr/share/man/<lang>.<enc>
/usr/share/man/
...
/usr/local/man/</lang>.<enc>
/usr/local/man/
...

Without step 4 from above, if you were to attempt to get a localized manpage
for ls(1) that resides in /usr/local/man/<lang>.<enc>, you would never see
it because the english language manpage in /usr/share/man would be found
first. The japanese man port gets around this by installing their own man
implementation (jman) forcing /usr/local/man/ja before /usr/share/man in
the search order. I'm interested in feedback about whether the search order
should change or if I should leave it as is.
Received on Wed Aug 18 2010 - 19:47:13 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:06 UTC