#!/usr/athena/bin/perl

### parse ARGV

&usage() unless @ARGV;

while (@ARGV) {
    $name = shift(@ARGV);
    &usage() if ($name =~ /^-/);
    $tagged{$name}++;
}

### read files, spew output

# open(BOYS, '/afs/athena/user/m/k/mkgray/.*/lists/boys');
# open(GIRLS, '/afs/athena/user/m/k/mkgray/.*/lists/girls');

open(BORG, '/afs/athena/user/m/k/mkgray/.*/lists/boys');
&decipher();
close(BORG);

open(BORG, '/afs/athena/user/m/k/mkgray/.*/lists/girls');
&decipher();
close(BORG);

### final message

foreach $i (keys %tagged) {
    print "'$i': entry not found in database.\n";
}

### usage

sub usage {
    print <<"EndOfUsage";

usage:
   $0 user [user...]

EndOfUsage
    exit 1;
}

### print out all matching entries

sub decipher {
    local ($name, $gen, $responses, $phone);
    while (<BORG>) {
	($name, $gen, $responses, $phone) = split(/:/, $_);
	if ($tagged{$name}) {
	    do decode($name,$responses);
	    delete $tagged{$name};
	}
    }
}

### decode questions

sub decode {
    local ($who, $ans, @quest) = @_;

    print "\nResponses for $who:\n";

    open(QUEST, '/afs/athena/user/m/k/mkgray/.*/lists/questions');

    while (<QUEST>) {
	chop;   @quest = split(/:/, $_);
	($code,$imp,$ans) = unpack('c1a1a*',$ans);
	if (length($quest[0]) > 25) {
	    print "$quest[0]\n";
	    $quest[0] = "";
	}
	printf "%-26s %-48s (%1d)\n", $quest[0], $quest[$code-96], $imp;
    }
}
