Also, rework the way we build convenience libs for the classes to use
libtool. This fixes some potential linking issues and dependency
checking.
Next up will be to see if we can link and install it, along with it's
message catalogs, resources, etc.
The return value from CanvasRenderer::_dofont is a pointer. It will be passed
to the free function. Ensure that pointer always points to a dynamically
allocated memory to avoid segmentation faults.
CDE has relied upon catgets() implementations following a relaxed
interpretation of the XPG internationalization standard that ignored
-1, the standard error value returned by catopen, as the catalog
argument. However, this same behavior causes segmentation faults with
the musl C library.
This patch:
- Centralizes (with the exception of ToolTalk) all calls to catopen(),
catgets(), and catclose() through MsgCat within the DtSvc library.
- Prevents calls to catgets() and catclose() that rely upon
undefined behavior.
- Eliminates a number of bespoke catgets() wrappers, including multiple
redundant caching implementations designed to work around a design
peculiarity in HP/UX.
- Eases building CDE without XPG internationalization support by providing
the appropriate macros.
Also, restructure some of the dependencies in the lib/tt binaries. We
will link with libtt (which will include libtirpc as a dependency),
and XTOOLLIB - all the right X11 stuff without needing to add it to
every OS. Removed several uneeded OS specializations ("if LINUX",
etc) as a result.
bdftopcf specifically will not read symbolic links. This causes it to
fail when creating the programs/fontaliases/*/C/dtinfo.pcf.Z file and
subsequently, the fonts.dir file.
So, we add a new Imake macro: CopySourceFile(), to copy rather than
symlink the dtinfo.bdf file so these operations can complete
successfully. The dtinfo.bdf file is only 5KB, so there's very little
impact having an extra copy created during a build.