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