finger for aliases
Tom Christiansen
tchrist at convex.com
Fri Feb 2 12:04:11 AEST 1990
Once upon a time, I lived on a machine where finger would automatically
resolve aliases from /usr/lib/aliases for any of its arguments, which was
useful both for mailing lists and for fingering people at their home
machines. Alas, those days are no more, so I've written this front end
that does the dirty work for me and then calls the real finger. It's
brief and actually quite fast, and is also a good example of using
associative arrays bound to dbm files and recursive subroutines in perl.
#!/usr/bin/perl
#
# nfinger -- finger people at their home machines
# as defined in the /usr/lib/aliases
# dbm file. recursively resolve all
# aliases first, so works on lists
dbmopen(alias,'/usr/lib/aliases',0444) || die "can't dbmopen aliases";
@finger = ('/usr/ucb/finger');
while ($ARGV[0] =~ /^-/) {
push(@finger, shift);
}
while ($user = shift) {
push(@finger, &resolve($user));
}
exec @finger;
##############################################################
sub resolve {
local($addr,$alias, at list);
while ($addr = shift) {
unless (defined $alias{$addr."\000"}) {
push(@list, $addr);
next;
}
chop($alias = $alias{$addr."\000"});
$alias =~ s/^\s*(.*)\s*$/$1/;
$alias =~ s/([^!]*)!(.*)/$2@$1/;
push(@list,&resolve(split(/[\s,]+/,$alias)));
}
return @list;
}
--
Tom Christiansen {uunet,uiucdcs,sun}!convex!tchrist
Convex Computer Corporation tchrist at convex.COM
"EMACS belongs in <sys/errno.h>: Editor too big!"
More information about the Alt.sources
mailing list