#!/usr/bin/env perl

# This script changes absolute path names as still required by dosfop
# define the variables below and start the script

## first try to find the new values
$newManualRoot = `pwd`;
chomp $newManualRoot;
if (!defined($ENV{OCSSRC})) {
  die "$0: set environment variable OCSSRC to root of Opal source tree";
};
 $newLibRoot = $ENV{OCSSRC} . "/oc";

## read the old values
$conf="$newManualRoot/DOSFOP/Toplevel.config";
open (CONFIG, $conf) or die "$0: could not open $conf";
while(<CONFIG>) {
  if (/USER_GLOBAL/) {
    $_ = <CONFIG>;
    if (/.*directory *= *(.*)/) {
      $oldManualRoot = $1;
      last;
    } else {
      die "$0: could not determine \$oldManualRoot from $conf";
    };
  };
}
close CONFIG;

$conf="$newManualRoot/DOSFOP/Reflections.subsystems.config";
open (CONFIG, $conf) or die "$0: could not open $conf";
while(<CONFIG>) {
  if (/name =/) {
    $_ = <CONFIG>;
    if (m!.*directory *= *(.*/src/oc)!) {
      $oldLibRoot = $1;
      last;
    } else {
      die "$0: could not determine \$oldLibRoot from $config";
    };
  };
}
close CONFIG;

# print "oldManualRoot = $oldManualRoot\n";
# print "newManualRoot = $newManualRoot\n";
# print "oldLibRoot = $oldLibRoot\n";
# print "newLibRoot = $newLibRoot\n";

## don't do anything superfluous
if ($oldManualRoot eq $newManualRoot and $oldLibRoot eq $newLibRoot) {exit 0;};

@configFilesMan = ("$newManualRoot/DOSFOP/config", "$newManualRoot/DOSFOP/Toplevel.config");
@configFilesLib = <$newManualRoot/DOSFOP/*subsystems.config>;

foreach $f (@configFilesMan) {
  if ($f eq "$newManualRoot/DOSFOP/config" and (! -e $f)) {next;};
  open (INFILE, $f) or die "$0: could not open $f";
  open (OUTFILE, ">$f.new") or die "$0: could not open $f.new";
  while (<INFILE>) {
    s /$oldManualRoot/$newManualRoot/g;
    print OUTFILE
  }
  close INFILE;
  close OUTFILE;
  rename "$f", "$f.old";
  rename "$f.new", "$f";
}

foreach $f (@configFilesLib) {
  open (INFILE, $f) or die "$0: could not open $f";
  open (OUTFILE, ">$f.new") or die "$0: could not open $f.new";
  while (<INFILE>) {
    s /$oldLibRoot/$newLibRoot/g;
    print OUTFILE
  }
  close INFILE;
  close OUTFILE;
  rename "$f", "$f.old";
  rename "$f.new", "$f";
}
