#!/local/bin/perl
#
# $Id: extract,v 2.2 1994/10/23 13:58:06 remy Exp $
#
# remy@ccs.neu.edu
# 27 June 1994
#
# Copyright (C) 1994 by Remy Evard
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# any later version.
#
# A copy of the license may be found in docs/license of the source
# distribution.


if($ARGV[0] eq "-d") {
  $def_file = $ARGV[1];
  shift; shift;
} else {
  $def_file = "./defs";
}

open(DEFS, $def_file) || die "Unable to open $def_file file";

while(<DEFS>) {
  chop;
  next if(/^#/);
  next if(/^\s*$/);

  if(/^\s*(\w+)\s*=\s*(.*)\s*$/) {
    $lv=$1; 
    ($rv=$2) =~ s:\s*$::;
    if($def{$lv}) {
      print "Definition for $lv ($rv) on line $. overrides previous value ",
	    "$def{$lv}\n";
    }
    while($rv =~ /@\{(\w+)\}/) {
      $sub = $def{$1};
      $rv =~ s/@\{\w+\}/$sub/;
    }
    $def{$lv} = $rv;
  }
}

close(DEFS);

if($ARGV[0] eq "-DBUILD_FOR_MAIL") {
  shift;
  foreach $k (keys(%def)) {
    if($def{"MAIL_$k"}) {
      $def{$k} = $def{"MAIL_$k"};
    }
  }
}

@keys = keys(%def);

while(<>) {
  if (/@{.*}/) {
    foreach $k (@keys) {
      $_ =~ s/@\{$k\}/$def{$k}/;
    }
  }
  print;
}

#close(IN);
#close(OUT);
#
#foreach $arg (@ARGV) {
#  ($file = $arg) =~ s:.*/::;
#  foreach $try (("${file}.def", "${src_dir}/${file}", 
#                  "${src_dir}/${file}.def")) {
#    if(-f $try) {
#      open(IN, $try) || die "can't open $try";
#      open(OUT, ">$arg") || die "can't open $arg";
#      $file = $try;
#      last;
#    }
#  }
#
#  print "extracting $arg from $file\n";
#
# while(<IN>) {
#    foreach $k (@keys) {
#      $_ =~ s/@\{$k\}/$def{$k}/;
#    }
#    print OUT;
#  }
#}
#
#close(IN);
#close(OUT);

