#!/usr/bin/bash
##
## Find and display vendor-specific manual pages
## Copyright (c) 2009-2012 SATOH Fumiyasu @ OSSTech Corp., Japan
##               <https://www.OSSTech.co.jp/>
##
## License: GNU General Public License version 2 or later
## Date: 2012-03-13, since 2009-03-03
##

set -u

uname=`uname`
man_dir="/opt/osstech/share/man"
man_path="$man_dir"
man_opts=""
man_lang="C"
man_encoding="UTF-8"
out_encoding="UTF-8"

for lang_try in LC_ALL LANG; do
  if eval '[ X"${'"$lang_try"'+set}" = X"set" ]'; then
    eval 'lang="$'"$lang_try"'"'
    break
  fi
done
[ -z "${lang-}" ] && lang="C"

pager=
for pager_try in MANPAGER PAGER; do
  if eval '[ X"${'"$pager_try"'+set}" = X"set" ]'; then
    eval 'pager="$'"$pager_try"'"'
    break
  fi
done
[ -z "$pager" ] && pager="more"

case X"$uname" in
X"SunOS")
  if [ X"$lang" = X"ja" ]; then
    lang="ja_JP.eucJP"
  fi
  if [ X"$lang" != X"C" ]; then
    man_lang="${lang%.*}.UTF-8"
    out_encoding="${lang#*.}"
  fi
  ;;
X"AIX")
  man_opts="-m"
  case X"$lang" in
  X"ja_JP")
    out_encoding="IBM-eucJP"
    ;;
  X"Ja_JP")
    out_encoding="IBM-943"
    ;;
  esac
  if [ X"${lang#[jJ][aA]_}" != X"$lang" ]; then
    man_lang="JA_JP"
  fi
  man_path="$man_dir/$man_lang:$man_path"
  ;;
*)
  if [ -f /etc/debian_version ]; then
    ## Debian man(1) with -M "$man_path" does not see manpages
    ## in $man_path/<language code> directory!
    man_path_env="$man_path"
    man_path=""
  fi
  exec \
    env ${man_path_env:+MANPATH="$man_path_env"} \
    /usr/bin/man ${man_path:+-M "$man_path"} ${1+"$@"}
  exit 1
  ;;
esac

exec \
  env LC_ALL="$man_lang" \
  /usr/bin/man $man_opts -M "$man_path" ${1+"$@"} \
|exec /usr/bin/iconv -f "$man_encoding" -t "$out_encoding" \
|{ [ -t 1 ] && exec $pager || exec /bin/cat; }

