18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#!/usr/bin/perl 28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# quick, very dirty little script so that we can put all the 48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# information for building a floor book set in one spec file. 58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#eg: 78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# >floor_44 98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# =44c0_s 44c1_s 44c2_s 108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# build line_128x4_class0 0-256 118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# build line_128x4_0sub0 0-4 128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdie "Could not open $ARGV[0]: $!" unless open (F,$ARGV[0]); 148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$goflag=0; 168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelswhile($line=<F>){ 178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "#### $line"; 198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if($line=~m/^GO/){ 208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $goflag=1; 218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels next; 228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if($goflag==0){ 258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if($line=~m/\S+/ && !($line=~m/^\#/) ){ 268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my $command=$line; 278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print ">>> $command"; 288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't shell command.\n\tcommand:$command\n" 298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels next; 328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # >floor_44 358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # this sets the output bookset file name 368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if($line=~m/^>(\S+)\s+(\S*)/){ 378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # set the output name 388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $globalname=$1; 398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $command="rm -f $globalname.vqh"; 418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't remove file.\n\tcommand:$command\n" 428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels next; 458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels #=path1 path2 path3 488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels #set the search path for input files; each build line will look 498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels #for input files in all of the directories in the search path and 508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels #append them for huffbuild input 518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if($line=~m/^=(.*)/){ 528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # set the output name 538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels @paths=split(' ',$1); 548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels next; 558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # build book.vqd 0-3 [noguard] 588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if($line=~m/^build (.*)/){ 598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # build a huffman book (no mapping) 608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my($datafile,$range,$guard)=split(' ',$1); 618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $command="rm -f $datafile.tmp"; 638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n\n>>> $command\n"; 648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't remove temp file.\n\tcommand:$command\n" 658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # first find all the inputs we want; they'll need to be collected into a single input file 688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels foreach $dir (@paths){ 698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (-e "$dir/$datafile.vqd"){ 708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $command="cat $dir/$datafile.vqd >> $datafile.tmp"; 718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print ">>> $command\n"; 728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't append training data.\n\tcommand:$command\n" 738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my $command="huffbuild $datafile.tmp $range $guard"; 788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print ">>> $command\n"; 798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't build huffbook.\n\tcommand:$command\n" 808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $command="cat $datafile.vqh >> $globalname.vqh"; 838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print ">>> $command\n"; 848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't append to output book.\n\tcommand:$command\n" 858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $command="rm $datafile.vqh"; 888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print ">>> $command\n"; 898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't remove temporary output file.\n\tcommand:$command\n" 908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $command="rm -f $datafile.tmp"; 938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print ">>> $command\n"; 948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels die "Couldn't remove temporary output file.\n\tcommand:$command\n" 958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels next; 978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 1008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$command="rm -f temp$$.vqd"; 1028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint ">>> $command\n"; 1038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdie "Couldn't remove temp files.\n\tcommand:$command\n" 1048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if syst($command); 1058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssub syst{ 1078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels system(@_)/256; 1088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 109