diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 2000-02-06 17:18:39 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 2000-02-06 17:18:39 +0000 |
commit | 24e8e38014028731fb2fddf4fe788525eb66a6b5 (patch) | |
tree | 73f8787e5729b6649526706dd34657ea8ca2581b /vos/config.pl | |
parent | 18b095192e336ba31465f4d3dab1ecc90871c3a9 (diff) | |
download | perl-24e8e38014028731fb2fddf4fe788525eb66a6b5.tar.gz |
VOS port updates (from Paul Green <Paul_Green@stratus.com>)
p4raw-id: //depot/perl@5005
Diffstat (limited to 'vos/config.pl')
-rw-r--r-- | vos/config.pl | 108 |
1 files changed, 72 insertions, 36 deletions
diff --git a/vos/config.pl b/vos/config.pl index 33629d7081..c6014ade9a 100644 --- a/vos/config.pl +++ b/vos/config.pl @@ -1,48 +1,84 @@ # This file fills in a config_h.SH template based on the data -# of the file config.def and outputs a config.sh. +# of the file config.def and outputs a config.h. +# +# Written January 24, 2000 by Jarkko Hietaniemi [jhi@iki.fi] +# Modified February 2, 2000 by Paul Green [Paul_Green@stratus.com] + +# +# Read in the definitions file +# if (open(CONFIG_DEF, "config.def")) { while (<CONFIG_DEF>) { - if (/^([^=]+)='(.+)'$/) { - my ($var, $val) = ($1, $2); - $define{$var} = $val; - } else { - warn "config.def: $.: illegal line: $_"; - } + if (/^([^=]+)='(.*)'$/) { + my ($var, $val) = ($1, $2); + $define{$var} = $val; + } else { + warn "config.def: $.: illegal line: $_"; + } } } else { die "$0: Cannot open config.def: $!"; } -if (open(CONFIG_SH, "config_h.SH_orig")) { - while (<CONFIG_SH>) { - last if /^sed <<!GROK!THIS!/; +close (CONFIG_DEF); + +# +# Open the template input file. +# + +unless (open(CONFIG_SH, "config_h.SH_orig")) { + die "$0: Cannot open config_h.SH_orig: $!"; +} + +# +# Open the output file. +# + +unless (open(CONFIG_H, ">config.h.new")) { + die "$0: Cannot open config.h.new for output: $!"; +} + +# +# Skip lines before the first !GROK!THIS! +# + +while (<CONFIG_SH>) { + last if /^sed <<!GROK!THIS!/; +} + +# +# Process the rest of the file, a line at a time. +# Stop when the next !GROK!THIS! is found. +# + +while (<CONFIG_SH>) { + last if /^!GROK!THIS!/; +# +# The case of #$d_foo at the BOL has to be handled carefully. +# If $d_foo is "undef", then we must first comment out the entire line. +# + if (/^#\$\w+/) { + s@^#(\$\w+)@("$define{$1}" eq "undef")?"/*#define":"#$define{$1}"@e; } - while (<CONFIG_SH>) { - last if /^!GROK!THIS!/; - s/\\\$Id:/\$Id:/; - s/\$package/perl5/; - s/\$cf_time/localtime/e; - s/\$myuname/$define{OSNAME}/; - s/\$seedfunc/$define{seedfunc}/; - if (/^#\$\w+\s+(\w+)/) { - if (exists $define{$1}) { - if ($define{$1} eq 'define') { - print "#define $1\t/**/\n"; - } else { - print "#define $1 $define{$1}\n"; - } - } else { - print "/*#define $1\t/**/\n"; - } - } elsif (/^#define\s+(\S+)/) { - print "#define $1 $define{$1}\n"; - } elsif (s/\$cpp_stuff/$define{cpp_stuff}/g) { - print; - } else { - print; - } +# +# There could be multiple $variables on this line. +# Find and replace all of them. +# + if (/(\$\w+)/) { + s/(\$\w+)/(exists $define{$1}) ? $define{$1} : $1/ge; + print CONFIG_H; + } +# +# There are no variables, just print the line out. +# + else { + print CONFIG_H; } -} else { - die "$0: Cannot open config_h.SH_orig: $!"; } + +unless (close (CONFIG_H)) { + die "$0: Cannot close config.h.new: $!"; + } + +close (CONFIG_SH); |