#! /bin/sh # Convert manual page troff stdin to formatted .txt stdout. # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. manflags= while case $1 in -*) :;; *) false;; esac do manflags="$manflags $1" shift done groff="groff -dAD=l -rHY=0 $manflags -mtty-char -man -ww -P-bcou" if ($groff) /dev/null 2>&1; then $groff "$@" elif (type mandoc && type col) >/dev/null 2>&1; then mandoc $manflags -man "$@" | col -bx elif (type nroff && type perl) >/dev/null 2>&1; then printf '%s\n' '. .\" Left-adjust and do not hyphenate. .am TH .na .hy 0 .. .\" Omit internal page headers and footers. .\" Unfortunately this also omits the starting header and ending footer, .\" but that is the best old nroff can easily do. .rm }H .rm }F .' | nroff -man - "$@" | perl -ne ' binmode STDIN, '\'':encoding(utf8)'\''; binmode STDOUT, '\'':encoding(utf8)'\''; chomp; s/.\010//g; s/\s*$//; if (/^$/) { $sawblank = 1; next; } else { if ($sawblank && $didprint) { print "\n"; $sawblank = 0; } print "$_\n"; $didprint = 1; } ' else printf >&2 '%s\n' "$0: please install groff, or mandoc and col" exit 1 fi