#!/bin/bash # Emulate nroff with groff. prog="$0" charset_in=iso-8859-1 charset_out=`locale charmap 2>/dev/null` opts="-mtty-char -Tutf8" # Default device. # First try the "locale charmap" command, because it's most reliable. # On systems where it doesn't exist, look at the environment variables. case "`locale charmap 2>/dev/null`" in UTF-8) T=-Tutf8 ;; ISO-8859-1) T=-Tlatin1 ;; IBM-1047) T=-Tcp1047 ;; EUC-JP) T=-Tnippon ;; EUC-KR) T=-Tkorean ;; *) case "${LC_ALL-${LC_CTYPE-${LANG}}}" in *.UTF-8) T=-Tutf8 ;; iso_8859_1 | *.ISO-8859-1) T=-Tlatin1 ;; *.IBM-1047) T=-Tcp1047 ;; ja_JP.ujis | ja_JP.eucJP) T=-Tnippon ;; ko_KR.eucKR) T=-Tkorean ;; *) case "$LESSCHARSET" in utf-8) T=-Tutf8 ;; latin1) T=-Tlatin1 ;; cp1047) T=-Tcp1047 ;; japanese) T=-Tnippon ;; ko) T=-Tkorean ;; *) T=-Tascii8 ;; esac ;; esac ;; esac for i do case $1 in -c) opts="$opts -P-c" ;; -h) opts="$opts -P-h" ;; -[eq] | -s*) # ignore these options ;; -[mrnoT]) echo $"option $1 requires an argument" >&2 exit 1 ;; -[iptSUC] | -[mrno]*) opts="$opts $1" ;; -Tascii | -Tlatin1 | -Tutf8 | -Tcp1047 | -Tascii8 | -Tnippon | -Tkorean) opts= T=$1 ;; -T*) # ignore other devices ;; -v | --version) echo $"GNU nroff (groff) with Red Hat i18n/l10n support" exit 0 ;; --legacy) shift charset_in=$1 ;; --help) echo $"usage: $prog [-cChipt] [-mNAME] [-nNUM] [--legacy CHARSET] [-oLIST] [-rCN] [FILE...]" exit 0 ;; --) shift break ;; -) break ;; -*) echo $"$prog: invalid option $1" >&2 exit 1 ;; *) break ;; esac shift done if TMPFILE=$(mktemp /tmp/man.XXXXXX 2>/dev/null); then trap "rm -f $TMPFILE" 0 1 2 3 15 cat ${1+"$@"} >| $TMPFILE else buf=$(cat ${1+"$@"}) TMPFILE=buf fi if [ $TMPFILE = buf ]; then echo -n "$buf" | iconv -f utf-8 -t utf-8 &>/dev/null && charset_in=utf-8 else iconv -f utf-8 -t utf-8 $TMPFILE &>/dev/null && charset_in=utf-8 fi if [ $charset_in != utf-8 ]; then echo XXX echo XXX $"WARNING: old character encoding and/or character set" echo XXX fi # en_US is chosen arbitrarily; any UTF-8 locale should work export LC_ALL=en_US.UTF-8 # This shell script is intended for use with man, so warnings are # probably not wanted. Also load nroff-style character definitions. if [ $charset_in = utf-8 -a $charset_out = UTF-8 ]; then if [ $TMPFILE = buf ]; then echo -n "$buf" | /usr/bin/groff $opts 2>/dev/null else exec < $TMPFILE rm -f $TMPFILE exec /usr/bin/groff $opts 2>/dev/null fi else if [ $TMPFILE = buf ]; then echo -n "$buf" | \ /usr/bin/iconv -f $charset_in -t utf-8 | \ /usr/bin/groff $opts 2>/dev/null | \ /usr/bin/iconv -f utf-8 -t ${charset_out}//translit else /usr/bin/iconv -f $charset_in -t utf-8 $TMPFILE | \ /usr/bin/groff $opts 2>/dev/null | \ /usr/bin/iconv -f utf-8 -t ${charset_out}//translit rm -f $TMPFILE fi fi # eof