Hi, This monster patch is the final part of restructuring the libraries. If the patch doesn't work, I've included the patched sources. With this, the structure of the mdocml package looks like: mdocXXX.o (libmdoc.h)-----+ | manXXX.o (libman.h)---(libmandoc.h) libmandoc.a (mandoc.h) | | | roffXXX.o (libroff.h)-----+ | main.o tblXXX.o | XXXterm.o eqnXXX.o libmandoc.o XXXhtml.o read.o etc. In other words, mandoc.h is the public interface to ALL parsing functionality (via mparse_readfd()). No more having main.c dance around libroff and libmdoc, no more inclusion of mdoc.h and man.h in the front-ends. It's all in one header file. Internally, libmandoc.h is now the shared header file used by all back-end compilers. The libmdoc.h, libman.h, and libroff.h have been retained for each private compiler backend. There's no more libmdoc, libroff, and libman. They all now live in libmandoc.a. This considerably simplifies the spaghetti-mess of inclusions, hierarchies, and so on, although there still remains some clean-up to be done (chars.h, out.h, main.h, etc.). On a related note, mdoc.3, man.3, and roff.3 have had their important parts merged into mandoc.3 (this is in progress, as the functions themselves need to be documented, although it's kind of obvious). The rest I've discarded. I also re-wrote the Makefile to be much more readable and fixable, and to track dependencies much closer. This has some changes regarding the www site: I no longer print the ChangeLog (which, according to my logs, is rarely visited and anyways supplanted by cvsweb) and added eqn.7, alongside removing the other .3 manuals. I notice that the compiled binary has bloated. Any ideas why? This troubles me a great deal. Things that remain to be done in the immediate future: - get rid of mdoc_isdelim() (using cues somehow?) - merge chars.h into out.h - do something about out.h/main.h Thoughts? Reactions? Kristaps