--- /dev/null
+#!/bin/bash
+set -e
+. settings
+export GROUP
+export ABBREV
+export INFOHEADER
+find -name '*.IN[O1]' -exec perl -e '
+ use IO::Handle;
+ use POSIX;
+ my $f= shift;
+ my $d= $f;
+ $d =~ s/\.IN([O1])$//;
+ my $overwrite= ($1 eq 'O');
+ my $g= "$d.new";
+ open F, "< $f" or die "$f $!";
+ open G, "> $g" or die "$g $!";
+ while (<F>) {
+ s/\%(\w+)\%/
+ exists($ENV{$1}) ? $ENV{$1} : die "$1 ?"
+ /ge;
+ print G or die $!;
+ }
+ F->error and die $!;
+ close F or die $!;
+ close G or die $!;
+ if ($overwrite) {
+ rename $g, $d or die "$g $d $!";
+ } else {
+ if (link $g, $d) {
+ unlink $g or die $!;
+ } else {
+ die "$g $d $!" unless $!==&EEXIST;
+ }
+ }
+' '{}' \;