#!/bin/bash
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh

if [[ $# -lt 1 ]] ; then
	echo "$0: at least one argument needed" 1>&2
	exit 1
fi

i18n=""

ret=0

for x in "$@" ; do
	if [[ ${x:0:6} == "-i18n=" ]] ; then
		i18n=${x:6}/
		continue
	fi
	if [[ ${x:0:6} == ".keep_" ]] ; then
		continue
	fi

	suffix=${x##*.}

	# These will be automatically decompressed by ecompressdir.
	if hasq ${suffix} Z gz bz2 ; then
		realname=${x%.*}
		suffix=${realname##*.}
	fi

	if ! hasq "${EAPI:-0}" 0 1 && \
		[[ $x =~ (.*)\.([a-z][a-z](_[A-Z][A-Z])?)\.(.*) ]] ; then
		name=${BASH_REMATCH[1]##*/}.${BASH_REMATCH[4]}
		mandir=${BASH_REMATCH[2]}/man${suffix:0:1}
	else
		name=${x##*/}
		mandir=${i18n}man${suffix:0:1}
	fi


	if [[ ${mandir} =~ man[0-9n](f|p|pm)?$ ]] ; then
		if [[ -s ${x} ]] ; then
			if [[ ! -d ${D}/usr/share/man/${mandir} ]] ; then
				install -d "${D}/usr/share/man/${mandir}"
			fi

			install -m0644 "${x}" "${D}/usr/share/man/${mandir}/${name}"
			((ret+=$?))
		elif [[ ! -e ${x} ]] ; then
			vecho "doman: ${x} does not exist" 1>&2
			((++ret))
		fi
	else
		vecho "doman: '${x}' is probably not a man page; skipping" 1>&2
		((++ret))
	fi
done

exit ${ret}
