#!/usr/bin/perl -T
$fcgi_fresh = 0; #Force freshness
sub fcgi_localize(){
if (-e "./lc_cache/localizer_consts-$_[0].dat" && -e "./lc_cache/localizer_locals-$_[0].dat" && $fcgi_fresh == 0){
#print "READ";
&localizer_read($_[0]);
}else{
#print "WRITE";
&fcgi_localizer($_[0]);
&localizer_write($_[0]);
}
}
sub fcgi_localizer(){
require Devel::Symdump;
$obj = Devel::Symdump->new();
@global_constants = ('nky','nkt','nfw','connectionInfo','db','host','passwd','server_id','user','reqs');
my @global_s= $obj->scalars;
my @global_a = $obj->arrays;
my @global_h = $obj->hashes;
my @functions = $obj->functions;
my @globals = @global_s;
push(@globals,@global_a);
push(@globals,@global_h);
undef %saw;
@saw{@globals} = ();
@globals = sort keys %saw;
undef %saw;
@saw{@functions} = ();
@functions = sort keys %saw;
foreach $lvar (@globals){
$valid = 1;
foreach $fun (@functions){
if ($fun eq $lvar){
$valid = 0;
}
}
if ($valid == 1){
$lvar =~ s/main:://g;
if ($lvar !~ m/::/){
if ($lvar =~ m/^[a-z]/){
if ($lvar ne "stdout" && $lvar ne "stderr" && $lvar ne "stdin"){
unless ($$lvar eq ""){
#push (@global_constants,$lvar);
}else{
push (@global_locals,$lvar);
}
}
}
}
}
}
#foreach (@global_locals){
# print "Local: ($_)
\n";
#}
#
#foreach (@global_constants){
# print "Constant: $_
\n";
#}
}
sub localizer_write{
open(WRITER,">./lc_cache/localizer_consts-$_[0].dat") || print "Failed to create Loczlizer Cache!";
foreach (@global_constants){
print WRITER "$_\n";
}
close(WRITER);
open(WRITER,">./lc_cache/localizer_locals-$_[0].dat") || print "Failed to create Loczlizer Cache!";
foreach (@global_locals){
print WRITER "$_\n";
}
close(WRITER);
}
sub localizer_read{
open(READER,"./lc_cache/localizer_consts-$_[0].dat") || print "Failed to create Loczlizer Cache!";
(@global_constants) = ;
close(READER);
open(READER,"./lc_cache/localizer_locals-$_[0].dat") || print "Failed to create Loczlizer Cache!";
(@global_locals) = ;
close(READER);
chomp(@global_constants);
chomp(@global_locals);
}