#!/usr/bin/perl
#
# $Id: bubblestofile,v 1.1 1996/09/08 01:35:52 jwz Exp $
#
#----------------------------------------------------------------------------
#  Copyright (C) 1995-1996 James Macnicol
#
#   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, or (at your option) any later
# version.
#
#   This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
#-----------------------------------------------------------------------------
#
# Contact me (J.Macnicol@student.anu.edu.au) if you have problems.
#
# [ The moral of this story is use a version of rm which safely backs up
# files when you delete them in case you do something stupid like
# "rm * xpm" which trashed all the scripts in this directory so I had
# to write them again.  Grrrrrr..... ]
#
#-----------------------------------------------------------------------------
#
# This script takes a set of XPM files (from povbubbles, for example)
# whose names are listed in file with extension .names (of same format
# as output by povbubbles) and puts them together into a file which can
# loaded with the -file option or place in a directory suitable for
# use with the -directory option to bubbles.  Note that neither of these
# options are available if you have just compiled bubbles as provided.
# You must edit bubbles.h to enable these.  Files generated by this script
# have by default the extension ".bub".
#
# To use it, provide as an argument the base-name of the .names file,
# i.e. if you ran povbubbles on the file foo.pov by typing "povbubbles foo"
# then this created a file "foo.names" so you can now make the loadable file
# "foo.bub" by typing "bubblestofile foo".
#

sub die_help {
    print STDERR "Usage: $0 [-help] base-name\n";
    print STDERR "  -help\n";
    print STDERR "    gives this message.\n";
    print STDERR "  base-name is the name of the file used to generate\n";
    print STDERR "    the XPM files, e.g. if you invoked povbubbles with\n";
    print STDERR "              \"povbubbles foo\"\n";
    print STDERR "    then you should invoke $0 with\n";
    die("              \"$0 foo\"\n");
}

sub die_usage {
    die "Usage: $0 [-help] base-name\n";
}

$infile = undef;

# Process command line arguments
while ($op = shift) {
    if ($op eq "-help") {
        &die_help;
    } else {
        $infile = $op;
        # Ignore further arguments
        break;
    }
}
if ($infile eq undef) {
    &die_usage;
}

$namesfile = $infile . ".names";
$outfile = $infile . ".bub";

if (! -f $namesfile) {
    die("File list $namesfile doesn't exist\n");
}

if (-f $outfile) {
    print "Backing up $outfile\n";
    system("mv -f $outfile $outfile.bak");
}

open(OUT, ">$outfile") || die("Couldn't open $outfile\n");
open(NAMES, $namesfile) || die ("Couldn't open $namesfile\n");
$numbubbles = 0;
while (<NAMES>) {
    if (/\s*(\S+)\:(\S+)\s*/) {
	$filename = $1;
	$xpmname = $2;
	open(CAT, $filename) || die("Couldn't open file $filename listed in\
$namesfile\n");
	while (<CAT>) {
	    print OUT;
	}
	close(CAT);
    } else {
	print STDERR "Can't understand the line \"$_\"\n";
	print STDERR "  in $namesfile.  Ignoring...\n";
    }
}
close(NAMES);
close(OUT);


