1 |
#!/usr/bin/perl -w |
2 |
|
3 |
use constant kSTATUSOK => 0; |
4 |
use constant kSTATUSCONF => 1; |
5 |
|
6 |
use constant kUNKSECTION => 0; |
7 |
use constant kDEFSSECTION => 1; |
8 |
use constant kMAKESECTION => 2; |
9 |
|
10 |
use constant kCONFIGFILE => "config.local"; |
11 |
use constant kHEADER => "base/include/customizeddefs.h"; |
12 |
|
13 |
my($line); |
14 |
my($section); |
15 |
my($status); |
16 |
my(@defs); |
17 |
my(%defines); |
18 |
my($adef); |
19 |
my($defname); |
20 |
my($val); |
21 |
my($tmp); |
22 |
|
23 |
$status = kSTATUSOK; |
24 |
|
25 |
# create hash table to hold all customizable define names |
26 |
@defs = qw(SERVER DRMS_LOCAL_SITE_CODE USER PASSWD DBNAME DRMSPGPORT POSTGRES_ADMIN SUMS_MANAGER SUMS_MANAGER_UID SUMS_GROUP SUMLOG_BASEDIR SUMBIN_BASEDIR SUMSERVER SUMPGPORT SUM_NUMSUM SUM_MAXNUMSUM SUMS_TAPE_AVAILABLE SUMS_MULTIPLE_PARTNSETS AUTOSELCOMP LOC_SUMEXP_METHFMT LOC_SUMEXP_USERFMT LOC_SUMEXP_HOSTFMT LOC_SUMEXP_PORTFMT PRODUSER_DBHOST PRODUSER_DBNAME |
27 |
PRODUSER_PRODTAB PRODUSER_COLUSER); |
28 |
foreach $adef (@defs) |
29 |
{ |
30 |
$defines{$adef} = 1; |
31 |
} |
32 |
|
33 |
$section = kUNKSECTION; |
34 |
$tmp = kCONFIGFILE; |
35 |
if (open(CONFLOC, "<$tmp")) |
36 |
{ |
37 |
$tmp = kHEADER; |
38 |
if (!open(HEADER, ">$tmp")) |
39 |
{ |
40 |
print STDERR "Can't open file '$tmp' for writing.\n" |
41 |
} |
42 |
else |
43 |
{ |
44 |
while (defined($line = <CONFLOC>)) |
45 |
{ |
46 |
chomp($line); |
47 |
|
48 |
if ($line =~ /^\#/ || $line =~ /^\s*$/) |
49 |
{ |
50 |
next; |
51 |
} |
52 |
|
53 |
if ($line =~ /__DEFS__/) |
54 |
{ |
55 |
$section = kDEFSSECTION; |
56 |
next; |
57 |
} |
58 |
elsif ($line =~ /__MAKE__/) |
59 |
{ |
60 |
$section = kMAKESECTION; |
61 |
next; |
62 |
} |
63 |
|
64 |
if ($section == kDEFSSECTION) |
65 |
{ |
66 |
$val = ""; |
67 |
|
68 |
if ($line =~ /^\s*(\S+)\s+(\S+.*)/) |
69 |
{ |
70 |
$defname = $1; |
71 |
$val = $2; |
72 |
} |
73 |
elsif ($line =~ /^\s*(\S+)\s*/) |
74 |
{ |
75 |
$defname = $1; |
76 |
} |
77 |
else |
78 |
{ |
79 |
print STDERR "Invalid line '$line' in configuration file.\n"; |
80 |
$status = kSTATUSCONF; |
81 |
last; |
82 |
} |
83 |
|
84 |
if (defined($defines{$defname})) |
85 |
{ |
86 |
if (length($val) > 0) |
87 |
{ |
88 |
print HEADER "#ifdef $defname\n #undef $defname\n#endif\n#define $defname $val\n"; |
89 |
} |
90 |
else |
91 |
{ |
92 |
print HEADER "#ifdef $defname\n #undef $defname\n#endif#define $defname\n"; |
93 |
} |
94 |
} |
95 |
else |
96 |
{ |
97 |
print STDERR "Invalid parameter '$defname'.\n"; |
98 |
$status = kSTATUSCONF; |
99 |
last; |
100 |
} |
101 |
} |
102 |
elsif ($section == kMAKESECTION) |
103 |
{ |
104 |
# Done - use customizemake.pl to create the custom.mk file from config.local |
105 |
last; |
106 |
} |
107 |
else |
108 |
{ |
109 |
print STDERR "Invalid configuration file format.\n"; |
110 |
$status = kSTATUSCONF; |
111 |
} |
112 |
} |
113 |
|
114 |
close(HEADER); |
115 |
} |
116 |
|
117 |
close(CONFLOC); |
118 |
} |
119 |
|
120 |
exit($status); |