--- /dev/null
+#!/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);
+
+