#!/bin/bash
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: /var/cvsroot/gentoo-src/portage/bin/prepman,v 1.10.2.3 2005/05/29 12:40:08 jstubbs Exp $

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

if [[ -z $1 ]] ; then 
	z="${D}usr/share/man"
else
	z="${D}$1/man"
fi

if [[ ! -d ${z} ]] ; then
	vecho "QA Notice: prepman called with non-existent dir '${z#${D}}'" 2>&1
	exit 0
fi

for x in $(find "${z}"/ -type d 2>/dev/null) ; do
	for y in $(find "${x}"/ -mindepth 1 -maxdepth 1 \( -type f -or -type l \) ! -name '.keep' 2>/dev/null) ; do
		if [[ -L ${y} ]] ; then
			# Symlink ...
			mylink=${y}
			linkto=$(readlink "${y}")
			
			# Do NOT change links to directories
			if [[ -d ${z}/${linkto} ]] ; then
				continue
			fi

			if [[ ${linkto##*.} != "gz" ]] && [[ ${linkto##*.} != "bz2" ]] ; then
				linkto="${linkto}.gz"
			fi
			if [[ ${mylink##*.} != "gz" ]] && [[ ${mylink##*.} != "bz2" ]] ; then
				mylink="${mylink}.gz"
			fi

			vecho "fixing man page symlink: ${mylink##*/}"
			ln -snf "${linkto}" "${mylink}"
			if [[ ${y} != "${mylink}" ]] ; then
				vecho "removing old symlink: ${y##*/}"
				rm -f "${y}"
			fi
		else
			if [[ ${y##*.} != "gz" ]] && [[ ${y##*.} != "bz2" ]] && [[ ! -d ${y} ]] ; then
				vecho "gzipping man page: ${y##*/}"
				gzip -f -9 "${y}"
			fi
		fi	
	done
done
