#!/usr/local/bin/perl
#
# aliasassign - assign aliases
#
# assumes first field is alias
#
# usage: aliasassign config [files]

#
# find the numbers of the name and alias fields
$anum = -1;
$nnum = -1;
$config=shift;
open (CONFIG,$config) || die "$config: $!\n";
while (<CONFIG>)
{
  if (/:name:/) {($nnum)=(split(':'))[0];}
  elsif (/:alias:/) {($anum)=(split(':'))[0];}
}

#
# collect all the defined aliases
while (<>)
{
  chop;
  ($alias,$rest) = split(/[\t]/,$_,2);
  $alias =~ s/[0-9]*://;
  if ($alias eq "~~~~") {last;}		# marker for no alias
  $aliases{$alias} = 1;
  print "$rest\t$anum:$alias\n";
}
$_ .= "\n";

#
# now, assign new ones
do
{
  chop;
  $aNum = $_;
  $name = $_;
  
  s/[^\t]*\t//;				# strip alias
  $name =~ s/.*\t$nnum:([^\t]*)/$1/;	# grab name
  @name = split(" ",$name);		# break into components
  $logroot = $#name>0 ? substr($name[1],0,1) . "-" . $name[0] : $name;
  $logroot =~ tr/a-z//cd;
  $sequence = "";
  for(;;)
  {
    while (length($logroot)+length($sequence)>8)
    {
      if (!($logroot =~ s/-//))
      {
        chop($logroot);
      }
    }
    if ($aliases{$logroot.$sequence}eq"") {last;}
    $sequence++;
  }
  $alias = $logroot.$sequence;
  $aliases{$alias} = 1;
  print "$anum:$alias\t$_\n";
}
while (<>);
    
