src/Tools/8bit/perl/patcher.pl
author oheimb
Mon, 19 Oct 1998 15:37:02 +0200
changeset 5674 dfbe923fb881
parent 2795 d136fff43370
permissions -rwxr-xr-x
corrected Header
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2795
d136fff43370 fixed perl path;
wenzelm
parents: 1826
diff changeset
     1
#!/usr/local/dist/bin/perl
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     2
'di';
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     3
'ig00';
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     4
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     5
# $Header$
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     6
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     7
# $Log$
5674
dfbe923fb881 corrected Header
oheimb
parents: 2795
diff changeset
     8
# Revision 1.3  1998/10/19 13:37:03  oheimb
dfbe923fb881 corrected Header
oheimb
parents: 2795
diff changeset
     9
# corrected Header
dfbe923fb881 corrected Header
oheimb
parents: 2795
diff changeset
    10
#
dfbe923fb881 corrected Header
oheimb
parents: 2795
diff changeset
    11
# Revision 1.2  1997/03/17  11:25:53  wenzelm
2795
d136fff43370 fixed perl path;
wenzelm
parents: 1826
diff changeset
    12
# fixed perl path;
d136fff43370 fixed perl path;
wenzelm
parents: 1826
diff changeset
    13
#
d136fff43370 fixed perl path;
wenzelm
parents: 1826
diff changeset
    14
# Revision 1.1.1.1  1996/06/25  15:44:59  oheimb
d136fff43370 fixed perl path;
wenzelm
parents: 1826
diff changeset
    15
# Graphical 8bit Font Packet, see isabelle/Tools/8bit/doc/manual.dvi
d136fff43370 fixed perl path;
wenzelm
parents: 1826
diff changeset
    16
# Author: Franz Regensburger; improvements by David von Oheimb
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    17
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    18
# Revision 1.1.1.1  1996/06/25  13:58:24  oheimb
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    19
# Graphical 8bit Font Package imported, second attempt
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    20
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    21
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    22
# patcher
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    23
# Franz Regensburger <regensbu@informatik.tu-muenchen.de>
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    24
# 10.2.8.95
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    25
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    26
# last changed: 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    27
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    28
# a universal patcher for text files
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    29
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    30
# don't use character @ in configfile
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    31
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    32
# I like to see the output as it happens (flushed output)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    33
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    34
$| = 1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    35
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    36
# cash current working directory 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    37
require "pwd.pl";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    38
&initpwd;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    39
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    40
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    41
# comand line processing
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    42
# processes all known switches and ingnores others.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    43
# first non-switch which is the name of a text file is 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    44
# interpreted as name of the configuration file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    45
#
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    46
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    47
# initialize
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    48
$config_file="";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    49
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    50
$do_debug = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    51
$do_ddebug = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    52
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    53
while (@ARGV){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    54
    $cur_arg = shift @ARGV;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    55
    if ($cur_arg eq '-d')  {$do_debug = 1;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    56
    elsif ($cur_arg eq '-dd') {$do_debug = 1; $do_ddebug = 1;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    57
    elsif ((-T $cur_arg) && !$config_file) {$config_file = $cur_arg;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    58
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    59
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    60
# complain if no config file is found
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    61
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    62
if ($config_file eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    63
    print "\nno config file suplied or argument is not a text file\n\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    64
    print "usage patcher [-d -dd ] config-file \n", 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    65
          "options must be seperated by blanks!";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    66
    die "\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    67
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    68
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    69
print "debug mode is on\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    70
print "double debug mode is on\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    71
print "name of config file is $config_file\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    72
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    73
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    74
# open the config file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    75
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    76
open(INFILE,$config_file) || die "can't open $config_file: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    77
print "opened config file,\nprocessing\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    78
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    79
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    80
# look for stem of filenames
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    81
$stem = &look_for_value('^\s*STEM\s*"(.*)"',"STEM");
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    82
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    83
if ($stem eq "") {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    84
    die "\ncan't find STEM  in configuration file\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    85
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    86
if (! (-d $stem)){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    87
    die "\nSTEM is not a directory\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    88
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    89
if (! (-r $stem)){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    90
    die "\nno read permission for directory STEM \n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    91
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    92
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    93
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    94
# read in the configuration commands
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    95
print "\nreading commands\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    96
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    97
$index = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    98
$end_config = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    99
$pattern1 = '^\s*(ADD|EXTRACT)\s*([^\s]*)\s*IN\s*([^\s]*)\s*BETWEEN\s*"([^"]*)"\s*"([^"]*)"';
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   100
$pattern2 = '^\s*(CLEAN)\s*IN\s*([^\s]*)\s*BETWEEN\s*"([^"]*)"\s*"([^"]*)"';
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   101
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   102
#$pattern = '^#\s*([^#]*)#\s*([^#]*)#\s*([^#]*)#\s*([^#]*)#\s*([^#]*)';
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   103
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   104
while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   105
    if (($cmd,$patchfile,$infile,$pragma1,$pragma2) = /$pattern1/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   106
	$config_table[$index]= join('@',$cmd,$patchfile,$infile,$pragma1,$pragma2);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   107
	# the @ is used as seperator
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   108
	printf "line $.: %s %s %s %s %s\n", 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   109
	     $cmd,$patchfile,$infile,$pragma1,$pragma2 if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   110
	$index +=1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   111
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   112
  elsif (($cmd,$infile,$pragma1,$pragma2) = /$pattern2/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   113
	$config_table[$index]= join('@',$cmd,"",$infile,$pragma1,$pragma2);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   114
	# the @ is used as seperator
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   115
	printf "line $.: %s %s %s %s\n", 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   116
	     $cmd,$infile,$pragma1,$pragma2 if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   117
	$index +=1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   118
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   119
} #while
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   120
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   121
if ($index > 0) {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   122
	$end_config = $index - 1;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   123
   else {$end_config = -1;}	
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   124
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   125
print "there were  $index commands found\n"  if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   126
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   127
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   128
# close the handle for the config file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   129
close(INFILE);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   130
print "closed config file\n\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   131
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   132
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   133
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   134
# do all the commands
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   135
print "processing all the commands\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   136
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   137
$index = 0;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   138
while ($index <= $end_config) {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   139
    ($cmd,$patchfile,$infile,$pragma1,$pragma2) =
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   140
    split(/@/,$config_table[$index]); 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   141
    print "current command is:\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   142
    printf " %s %s %s %s %s\n", 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   143
	     $cmd,$patchfile,$infile,$pragma1,$pragma2 if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   144
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   145
$filename = $stem.$infile;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   146
$tempfile = $stem."patcher.tmp";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   147
$thepatchfile = $stem.$patchfile;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   148
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   149
open(INFILE ,$filename) || die "can't open $filename: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   150
print "opened $filename for reading\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   151
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   152
if ( $cmd eq "ADD" ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   153
open(PATCHFILE,$thepatchfile) || die "can't open $thepatchfile: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   154
print "opened $thepatchfile for reading\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   155
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   156
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   157
if ( $cmd eq "EXTRACT" ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   158
open(PATCHFILE,">".$thepatchfile) || die "can't open $thepatchfile: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   159
print "opened $thepatchfile for writing\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   160
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   161
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   162
open(OUTFILE,">".$tempfile) || die "can't open temporary file $tempfile: $!\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   163
print "opened $tempfile for writing\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   164
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   165
$found = &replicate_until($pragma1);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   166
if ($found eq "") {die "\ncan't find $pragma1\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   167
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   168
if ( $cmd eq "ADD" ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   169
    while (<PATCHFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   170
	printf(OUTFILE "%s",$_);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   171
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   172
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   173
if ( $cmd eq "EXTRACT" ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   174
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   175
	printf(OUTFILE "%s",$_);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   176
	if (/$pragma2/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   177
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   178
	printf(PATCHFILE "%s",$_);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   179
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   180
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   181
else {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   182
    $found = &skip_until($pragma2);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   183
    if ($found eq "") {die "\ncan't find $pragma2\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   184
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   185
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   186
# print the rest
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   187
while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   188
	printf(OUTFILE "%s",$_);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   189
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   190
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   191
close(INFILE);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   192
close(PATCHFILE) if $cmd eq "ADD" | $cmd eq "EXTRACT";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   193
close(OUTFILE);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   194
print "closed the files\n" if $do_ddebug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   195
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   196
$status = system("cp $tempfile $filename") ;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   197
if ($status) { die "can't copy $tempfile to $filename: $!\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   198
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   199
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   200
    $index += 1;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   201
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   202
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   203
# erase the patcher.tmp file
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   204
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   205
$status = system("rm $tempfile") ;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   206
if ($status) { die "can't erase $tempfile: $!\n";}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   207
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   208
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   209
########################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   210
# END of script
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   211
# 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   212
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   213
print "\nprogram patcher properly terminated\n\n";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   214
exit(0);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   215
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   216
#######################################################################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   217
# subroutines
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   218
#######################################################################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   219
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   220
sub look_for_value {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   221
    local ($pattern,$label) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   222
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   223
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   224
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   225
	if (($temp) = /$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   226
	    print "line $.: $label is $temp\n" if $do_debug;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   227
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   228
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   229
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   230
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   231
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   232
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   233
sub look_for_label {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   234
    local ($pattern,$label) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   235
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   236
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   237
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   238
	if (/$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   239
	    $temp=true;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   240
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   241
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   242
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   243
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   244
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   245
sub replicate_until {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   246
    local ($pattern) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   247
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   248
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   249
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   250
	printf(OUTFILE "%s",$_);
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   251
	if (/$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   252
	    $temp = "true";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   253
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   254
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   255
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   256
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   257
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   258
sub skip_until {
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   259
    local ($pattern) = @_;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   260
    local ($temp) = "";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   261
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   262
    while (<INFILE> ){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   263
	if (/$pattern/){
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   264
	    printf(OUTFILE "%s",$_);  #restore last line
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   265
	    $temp = "true";
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   266
	    last;}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   267
    }
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   268
    return $temp;
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   269
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   270
###############################################################
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   271
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   272
    # These next few lines are legal in both Perl and nroff.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   273
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   274
.00;                       # finish .ig
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   275
 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   276
'di           \" finish diversion--previous line must be blank
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   277
.nr nl 0-1    \" fake up transition to first page again
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   278
.nr % 0         \" start at page 1
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   279
'; __END__ ##### From here on it's a standard manual page #####