source: trunk/third/perl/win32/config_sh.PL @ 14545

Revision 14545, 2.0 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
Line 
1# take a semicolon separated path list and turn it into a quoted
2# list of paths that Text::Parsewords will grok
3sub mungepath {
4    my $p = shift;
5    # remove leading/trailing semis/spaces
6    $p =~ s/^[ ;]+//;
7    $p =~ s/[ ;]+$//;
8    $p =~ s/'/"/g;
9    my @p = map { $_ = "\"$_\"" if /\s/ and !/^".*"$/; $_ } split /;/, $p;
10    return join(' ', @p);
11}
12
13# generate an array of option strings from command-line args
14# or an option file
15#    -- added by BKS, 10-17-1999 to fix command-line overflow problems
16sub loadopts {
17    if ($ARGV[0] =~ /--cfgsh-option-file/) {
18        shift @ARGV;
19        my $optfile = shift @ARGV;
20        local (*F);
21        open OPTF, $optfile or die "Can't open $optfile: $!\n";
22        my @opts;
23        chomp(my $line = <OPTF>);
24        my @vars = split(/\t+~\t+/, $line);
25        for (@vars) {
26            push(@opts, $_) unless (/^\s*$/);
27        }
28        close OPTF;
29        return \@opts;
30    }
31    else {
32        return \@ARGV;
33    }
34}
35
36my %opt;
37my $optref = loadopts();
38while (@{$optref} && $optref->[0] =~ /^([\w_]+)=(.*)$/) {
39    $opt{$1}=$2;
40    shift(@{$optref});
41}
42
43my $pl_h = '../patchlevel.h';
44
45if (-e $pl_h) {
46    open PL, "<$pl_h" or die "Can't open $pl_h: $!";
47    while (<PL>) {
48        if (/^#\s*define\s+(PERL_\w+)\s+([\d.]+)/) {
49            $opt{$1} = $2;
50        }
51    }
52    close PL;
53}
54else {
55    die "Can't find $pl_h: $!";
56}
57$opt{VERSION} = "$opt{PERL_REVISION}.$opt{PERL_VERSION}.$opt{PERL_SUBVERSION}";
58$opt{INST_VER} =~ s|~VERSION~|$opt{VERSION}|g;
59
60$opt{'cf_by'} = $ENV{USERNAME} unless $opt{'cf_by'};
61$opt{'cf_email'} = $opt{'cf_by'} . '@' . (gethostbyname('localhost'))[0]
62        unless $opt{'cf_email'};
63$opt{'usemymalloc'} = 'y' if $opt{'d_mymalloc'} eq 'define';
64
65$opt{libpth} = mungepath($opt{libpth}) if exists $opt{libpth};
66$opt{incpath} = mungepath($opt{incpath}) if exists $opt{incpath};
67
68while (<>) {
69    s/~([\w_]+)~/$opt{$1}/g;
70    if (/^([\w_]+)=(.*)$/) {
71        my($k,$v) = ($1,$2);
72        # this depends on cf_time being empty in the template (or we'll
73        # get a loop)
74        if ($k eq 'cf_time') {
75            $_ = "$k='" . localtime(time) . "'\n" if $v =~ /^\s*'\s*'/;
76        }
77        elsif (exists $opt{$k}) {
78            $_ = "$k='$opt{$k}'\n";
79        }
80    }
81    print;
82}
83
Note: See TracBrowser for help on using the repository browser.