:
##########################################################################
# Title      :	malias - resolve mail aliases
# Author     :	Heiner Steven <heiner.steven@odn.de>
# Date       :	1995-09-06
# Requires   :	
# Category   :	
# SCCS-Id.   :	@(#) malias	1.2 03/12/19
##########################################################################
# Description
#
##########################################################################

PN=`basename "$0"`			# Program name
VER='1.2'
Aliases=/etc/aliases
List=${TMPDIR:=/tmp}/ali$$

usage () {
    echo >&2 "$PN - resolve mail aliases, $VER (stv '95)
usage: $PN alias [alias ...]"
    exit 1
}

msg () {
    for i
    do echo "$PN: $i" >&2
    done
}

fatal () { msg "$@"; exit 1; }

# Check arguments before setting them
getopt h "$@" > /dev/null 2>&1	|| usage
set -- `getopt h "$@"`
while [ $# -gt 0 ]
do
    case "$1" in
	--)	shift; break;;
	-h)	usage;;
	-*)	usage;;
	*)	break;;			# first file name
    esac
    shift
done

[ $# -lt 1 ] && usage
[ -r "$Aliases" ] || fatal "cannot read aliases $Aliases"

trap "rm -f $List" 0
trap "exit 2" 1 2 3 15

# Create list of aliases with real names
${AWK:-nawk} '
    BEGIN {
	# Read all aliases into array
	# Alias [ALIAS] = REALNAME
	while ( getline < "'$Aliases'" ) {
	    if ( $1 ~ /^\#/ || $0 == "" ) continue
	    k = split ($0, a, ":")
	    if ( k >= 2 )
		Alias [a [1] ""] = a [2]
	}
	close ("'$Aliases'")

	# Resolve aliases as far as possible
	for ( i in Alias ) {
	    addr = Alias [i ""]
	    while ( Alias [addr ""] != "" && Alias [addr ""] != addr )
		addr = Alias [addr ""]
	    print i "	" addr
	}
    }
' /dev/null > $List || exit

for alias
do
    (${GREP:-grep} "^$alias	" $List || echo "	$alias") |
	cut -f2
done
