#!/usr/bin/perl
# Copyright (C) Dirk Husemann, Computer Science Department IV, 
# 	Friedrich-Alexander-Universitt Erlangen-Nrnberg, Germany, 1993
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
#    must display the following acknowledgement:
#      This product includes software developed by the Dirk Husemann,
#      Friedrich-Alexander-Universitt Erlangen-Nrnberg, Germany
# 4. The name of the University may not be used to endorse or promote
#    products derived from this software without specific prior written
#    permission. 
# 
# THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE UNIVERSITY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

require 'getopts.pl';

$usage = "$0 fig-file new-cover-file-name";

$fig2dev = "/usr/X11/bin/fig2dev";
$tmpdir = "/tmp";

%x_tags = (
    "X-to", "to",
    "X-to-company", "to-company",
    "X-to-location", "to-location",
    "X-to-voice-number", "to-voice-number",
    "X-to-fax-number", "to-fax-number",
    "X-regarding", "regarding",
    "X-page-count", "page-count",
    "X-from", "from",
    "X-from-company", "from-company",
    "X-from-location", "from-location",
    "X-from-fax-number", "from-fax-number",
    "X-comments", "comments",
    "X-todays-date", "todays-date",
);

&Getopts('P');

($#ARGV == 1) || die "$usage\n";

$figfile = $ARGV[0], $coverfile = $ARGV[1];
(-e $figfile) || die "can't find fig input file $figfile\n";

if (!defined($opt_P)) {
    # first convert fig file to ps intermediary file
    ($tmpfile = "$tmpdir/.fig2cover.$$") && (unlink($tmpfile));
    system("$fig2dev -L ps $figfile > $tmpfile");
} else {
    $tmpfile = $figfile;
}

open(PSFILE, "<$tmpfile") || die "can't open tmp input file $tmpfile\n";
open(COVERFILE, ">$coverfile") || 
    die "can't open cover output file $coverfile\n";

printf COVERFILE "%%!\n%%%% Coverfile created from $figfile\n";
while($tline = <PSFILE>) {
    chop $tline;
    foreach $tag (%x_tags) {
	$tline =~ s/\($tag\)/$x_tags{$tag}/g;
    }
    if ($tline =~ /^showpage$/) {
	($tline = <PSFILE>) && chop $tline;	# skip over this showpage
	printf COVERFILE "%s\n", $tline;
	printf COVERFILE "\n";
	printf COVERFILE "showpage\n";
	printf COVERFILE "%%%%Trailer\n";
	printf COVERFILE "%%%%EOF\n";
	$tline = <PSFILE>;	# skip obsolete end
	next;
    }
    printf COVERFILE "%s\n", $tline;
}
close(COVERFILE);
close(PSFILE);

exit 0;
