#!/usr/bin/perl -w
#
# fixpaths  - substitute makefile variables into text files


$usage = "Usage: $0 [-x<file dot-suffix>] [-Dstring=replacement] [[infile] ...]\n";

$ext="out";

if (!defined(@ARGV)) { die ("$usage"); }

# read in the command line and get some definitions
while ($_=$ARGV[0], /^-/) {
  if (/^-[Dx]/) {
    # definition
    shift(@ARGV);
    if ( /-D(.*)=(.*)/ ) {
      $def{"$1"}=$2;
    } elsif ( /-x\s*(\w+)/ ) {
	$ext=$1;
    } else {
      die ("$usage$0: error in command line arguments.\n");
    }
  } else {
    @cmd = split(//, $ARGV[0]); $opt = $cmd[1];
    die ("$usage$0: unknown option '-$opt'\n");
  }
} # while parsing arguments

if (!defined(%def)) {
  die ("$0: nothing to do - no substitutions listed!\n");
}

for $f (@ARGV) {

  $f =~ /(.*\/)*(.*)$/;
  $of = $2.".$ext"; 

  open(IN, "<$f")          || die ("$0: input file $f missing!\n");
  if (open(OUT, ">$of")) {
    while (<IN>) {
      for $s (keys(%def)) {
	s#$s#$def{$s}#;
      } # for $s
      print OUT;
    } # while <IN>
  } # if (outfile open)
} # for $f

exit 0;
