On Thursday, 13 February 2025 16:08:39 GMT Alejandro Colomar wrote:
> Hi Deri,
>
> I tried generating a PDF book from the Unix v10 manual pages, and found
> some issues with the Perl script. I don't understand Perl, as you know,
> so I don't know what to do.
>
> I've attached a tarball with the manual pages that I'm trying to handle.
> They're slightly modified V10 files, in order to make them slightly more
> conventional (e.g., the =.1 page is now called eq.1, and the manx/ dir
> and other dirs than didn't have a digit in their names are now divided
> into dirs that have one digit after the name (e.g., man1x/, ...)).
>
> The command I'm trying to run is:
>
> $ make -R build-pdf-book MANDIR=~/Downloads/unix/man/
>
> (Of course, replace that path with wherever you untar the tarball.)
>
> The error I see is a forever loop (or so it seems) with the following
> error line:
>
> Use of uninitialized value $v in exists at
> /srv/alx/src/linux/man-pages/man-pages/contrib/share/mk/build/pdf/book/prep
> are.pl line 67.
>
> Would you mind having a look at it?
> In case it matters:
>
> alx@devuan:~$ groff --version
> GNU groff version 1.23.0.2695-49927
> Copyright (C) 1989-2023 Free Software Foundation, Inc.
> This is free software, distributed under the terms of the GNU General
> Public License, version 3, or any later version, at your option. There is
> NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
>
> programs in constructed pipeline:
>
> GNU grops (groff) version 1.23.0.2695-49927
> GNU troff (groff) version 1.23.0.2695-49927
>
>
> Have a lovely day!
> Alex
Hi Alex,
This was caused by nonsense "aliases", see man1w/splitrules.1, and man1b/pins.1g, which looks like an alias, but is not. This has now been fixed by being more tolerant of weird entries which look like aliases.
There are a lot of pages which should have aliases added.
I found some other issues which I have fixed:-
When an alias points to another alias the code was meant to keep looking until the real page is found. This affects the recent 6.11 (an example is fchown32(2) which has no associated page number in the overview panel, it now works properly.
Since the v10 pages are intended to run on a version of troff with a two character name limit (I think). Code such as ".ne4" cause a problem for groff, which needs ".ne 4" to work (otherwise groff looks for a macro called "ne4" and fails. Many of these issues are now corrected.
A strange issue is that if a page contained a "$" character it sent eqn into the stratosphere (thinking was dealing with an inline equation), I killed it when eqn chewed up over 24gb of memory. I have no idea why, and it is not triggered by a single page containing a "$", so it must be triggered by something in an earlier man page which triggers it, but changing some "$" to "\[Do]" fixed the problem.
One page redefined the ".P" man macro, which then affects all following man pages.
One page introduced a string register called "mc" which then masks the groff command ".mc" with very strange results .
Font L is used in many entries, no clue what font this is, but I convert to font CB. Please change to taste (see lines 130 onwards).
Several pages use lower case macro names, i.e. ".th" rather than ".TH".
I have "fixed" a lot of the problems but there are still many warnings when running groff. I have attached two parthes, one for the V10 man pages, and one for prepare.pl. You should be able to produce a "useful" book after applying these.
If you wish to see the fruits of my labour as a pdf, it is here:-
http://chuzzlewit.co.uk/UnixV10.pdf
Cheers
Deri