: ########################################################################## # Title : malias - resolve mail aliases # Author : Heiner Steven # 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