summaryrefslogtreecommitdiff
path: root/Build/source/utils/psutils/maketext
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/psutils/maketext')
-rw-r--r--Build/source/utils/psutils/maketext51
1 files changed, 51 insertions, 0 deletions
diff --git a/Build/source/utils/psutils/maketext b/Build/source/utils/psutils/maketext
new file mode 100644
index 00000000000..b5715b3a25d
--- /dev/null
+++ b/Build/source/utils/psutils/maketext
@@ -0,0 +1,51 @@
+#!/usr/bin/env perl
+# maketext: perl filter to substitute names in scripts and man pages.
+
+%change = (); # names -> substitutions
+
+# get release and patchlevel for all scripts
+open(H, "patchlev.h") || die "can't open patchlev.h";
+while(<H>) {
+ $change{$1} = $2 if /^\#define\s*(\S*)\s*(\S*)/;
+}
+close(H);
+
+$os = "" ;
+
+%perlstart = ("UNIX", "\#!PERL",
+ "DOS", "\@rem = '-*- Perl -*-\n\@echo off\nPERL -S %0.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9\ngoto endofperl\n';\n",
+ "WINNT", "\@rem = '-*- Perl -*-\n\@echo off\nPERL -S %0.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9\ngoto endofperl\n';\n",
+ "Win32", "\@rem = '-*- Perl -*-\n\@echo off\nPERL -S %0.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9\ngoto endofperl\n';\n",
+ "OS2", "extproc PERL -x\n\#! PERL\n",
+ "", "PSUTILS MAKEFILE CONFIGURATION ERROR") ;
+%perlend = ("UNIX", "",
+ "DOS", "__END__\n:endofperl\n",
+ "WINNT", "__END__\n:endofperl\n",
+ "Win32", "__END__\n:endofperl\n",
+ "OS2", "\# End of Script",
+ "", "PSUTILS MAKEFILE CONFIGURATION ERROR");
+
+foreach (@ARGV) {
+ if (/MAN=(.*)/) { # name.ext name.ext -> name(ext), name(ext)
+ local(@man) = split(' ', $1);
+ $change{"MAN"} = join(", ", grep(s/\.(.)/($1)/, @man));
+ } elsif (/OS=(.*)/) { # set operating system name
+ $os = $1 ;
+ } elsif (/PERL=(.*)/) { # substitute name for value
+ local($perl) = $1 ;
+ $change{"PERL"} = $perlstart{$os} ;
+ $change{"END"} = $perlend{$os} ;
+ $change{"PERL"} =~ s/PERL/$perl/g ;
+ $change{"END"} =~ s/PERL/$perl/g ;
+ } elsif (/(.*)=(.*)/) { # substitute name for value
+ $change{$1} = $2;
+ } else { # open file and substitute
+ local(@change) = keys %change;
+ open(FILE, $_) || die "can't open $_";
+ while ($line = <FILE>) {
+ grep($line =~ s/\@$_\@/$change{$_}/g, @change);
+ print $line;
+ }
+ close(FILE);
+ }
+}