Как man.cgi работает с справочными страницами cat и mdoc?

Я хочу создать сайт с коллекцией справочных страниц BSD, похожих на man.cgi, но со статическим HTML, которые также включают в себя все материалы из дерева портов.

Я пытался распаковать man/ из всех пакетов OpenBSD для последнего выпуска и заметил, что хотя некоторые пакеты предоставляют mdoc страницы в man/man?/page.?, некоторые другие предоставляют только страницы в терминальном формате в man/cat?/page.0.

Я могу использовать groff -mdoc -Thtml или mandoc -Txhtml для mdoc файлов в man/man?/, но как преобразовать cat файлы из man/cat?/ в XHTML?

Как это делают сценарии man.cgi на FreeBSD.org и NetBSD.org?


person cnst    schedule 13.03.2013    source источник


Ответы (1)


В MirBSD мы предоставляем все онлайн-справочные страницы в виде статического HTML (фактический веб-CGI, таким образом, очень мал). ) и используйте хитрый скрипт для преобразования вывода nroff -Tcol foo.1 | col -x в XHTML. /1.1 — хотя, чтобы это работало, нам пришлось немного подправить nroff(1) и макропакеты mdoc и man (а также ms и me и т. д.). Однако мы отправляем все man-страницы только из базы, а также историческую документацию BSD.

Кроме того, в GNU gnroff нет -Tcol, но -Tascii будет работать, но если вы хотите использовать это с выводом gnroff, вам может потребоваться соответствующим образом изменить регулярные выражения.

Будьте особенно осторожны при редактировании этого файла: он содержит обычные элементы UTF-8, а также дополнительные управляющие символы и недопустимые последовательности байтов; если вы не будете осторожны, ваш редактор испортит его. (Я сам использую jupp.)

Для получения более подробной обратной связи по этому поводу, не стесняйтесь посетить IRC-канал MirBSD.

Что касается вашей первоначальной цели: я предлагаю собирать man-страницы только из бинарных пакетов, потому что они часто изменяются во время компиляции, например, с помощью AC_SUBST в autoconf, или даже генерируются только как часть сборки пакета.

person mirabilos    schedule 17.09.2013