home *** CD-ROM | disk | FTP | other *** search
- #!/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";
-
- chop($host = `hostname`);
-
- @finger = ('/usr/ucb/finger');
-
- while ($ARGV[0] =~ /^-/) {
- if ($ARGV[0] eq '-v') {
- $verbose++;
- shift;
- } else {
- push(@finger, shift);
- }
- }
-
- while ($user = shift) {
- push(@finger, &resolve($user));
- }
-
- print "@finger\n" if $verbose;
- exec @finger;
-
- ##############################################################
-
- sub resolve {
- local($addr,$alias,@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/;
- if ($alias eq "$addr@$host") {
- push(@list, $addr);
- } else {
- push(@list,&resolve(split(/[\s,]+/,$alias)));
- }
- }
- return @list;
- }
-