#! /bin/sh set -e # Check that a manual page formats without errors. Lintian does something # similar for Debian packages. Relies on top_builddir, LINGUA, and EGREP # variables exported from 'make check', or you can set them manually. if [ -z "$top_builddir" ]; then echo "top_builddir unset; try 'make check' instead?" exit 77 elif [ -z "$LINGUA" ]; then echo "LINGUA unset; try 'make check' instead?" exit 77 elif [ -z "$EGREP" ]; then echo "EGREP unset; try 'make check' instead?" exit 77 fi [ -x "$top_builddir/src/man" ] || exit 77 code=0 errors="$(LC_ALL=C MANWIDTH=80 MAN_KEEP_FORMATTING=1 "$top_builddir/libtool" \ --mode=execute \ -dlopen "$top_builddir/lib/.libs/libman.la" \ -dlopen "$top_builddir/libdb/.libs/libmandb.la" \ "$top_builddir/src/man" --warnings -E UTF-8 -l "$1" \ 2>&1 >/dev/null)" || code=$? # Ignore wrapping failures for CJK manual pages; this should go away once # groff supports these natively. # Indeed, even for other languages we're going to get "cannot adjust line" # if %manpath_config_file% expands to something long. Hmm. We'll just ignore # this across the board for now. errors="$(echo "$errors" | $EGREP -v "(cannot adjust line|can't break line)")" || true if [ "$code" != 0 ]; then echo "man -E UTF-8 -l $1 failed with exit status $code and error output:" echo "$errors" exit $code elif [ "$errors" ]; then echo "man -E UTF-8 -l $1 produced error output:" echo "$errors" exit 1 else exit 0 fi