$path = "..\\..\\";
@filelist = ("SetupLibs.bat",
"../lib/dns/win32/libdns.mak",
"../lib/dns/win32/libdns.dsp",
"../bin/check/win32/checktool.dsp",
"../bin/check/win32/namedcheckconf.dsp",
"../bin/check/win32/namedcheckconf.mak",
"../bin/check/win32/namedcheckzone.dsp",
"../bin/check/win32/namedcheckzone.mak",
"../bin/confgen/win32/confgentool.dsp",
"../bin/confgen/win32/ddnsconfgen.dsp",
"../bin/confgen/win32/ddnsconfgen.mak",
"../bin/confgen/win32/rndcconfgen.dsp",
"../bin/confgen/win32/rndcconfgen.mak",
"../bin/dig/win32/dig.dsp",
"../bin/dig/win32/dig.mak",
"../bin/dig/win32/dighost.dsp",
"../bin/dig/win32/host.dsp",
"../bin/dig/win32/host.mak",
"../bin/dig/win32/nslookup.dsp",
"../bin/dig/win32/nslookup.mak",
"../bin/dnssec/win32/dnssectool.dsp",
"../bin/dnssec/win32/dsfromkey.dsp",
"../bin/dnssec/win32/dsfromkey.mak",
"../bin/dnssec/win32/keyfromlabel.dsp",
"../bin/dnssec/win32/keyfromlabel.mak",
"../bin/dnssec/win32/keygen.dsp",
"../bin/dnssec/win32/keygen.mak",
"../bin/dnssec/win32/revoke.dsp",
"../bin/dnssec/win32/revoke.mak",
"../bin/dnssec/win32/settime.dsp",
"../bin/dnssec/win32/settime.mak",
"../bin/dnssec/win32/signzone.dsp",
"../bin/dnssec/win32/signzone.mak",
"../bin/named/win32/named.dsp",
"../bin/named/win32/named.mak",
"../bin/nsupdate/win32/nsupdate.dsp",
"../bin/nsupdate/win32/nsupdate.mak",
"../bin/rndc/win32/rndc.dsp",
"../bin/rndc/win32/rndc.mak",
"../bin/tools/win32/journalprint.dsp",
"../bin/tools/win32/journalprint.mak",
"../lib/bind9/win32/libbind9.dsp",
"../lib/bind9/win32/libbind9.mak",
"../lib/dns/win32/libdns.dsp",
"../lib/dns/win32/libdns.mak",
"../lib/isc/win32/libisc.dsp",
"../lib/isc/win32/libisc.mak",
"../lib/isc/win32/libisc.def",
"../lib/isccc/win32/libisccc.dsp",
"../lib/isccc/win32/libisccc.mak",
"../lib/isccfg/win32/libisccfg.dsp",
"../lib/isccfg/win32/libisccfg.mak");
$substr = getdirectory();
if ($substr eq 0) {
print "No directory found\n";
}
else {
print "Found $substr directory\n";
}
if ($substr ne 0) {
$ind = 0;
updateconfig(1);
foreach $file (@filelist) {
print "Updating file $file\n";
updatefile($file, $substr, 1);
$ind++;
}
}
else {
$ind = 0;
updateconfig(0);
foreach $file (@filelist) {
print "Updating file $file\n";
updatefile($file, $substr, 0);
$ind++;
}
}
sub getdirectory {
my(@namelist);
my($file, $name);
my($cnt);
opendir(DIR,$path) || return (0);
@namelist = grep (/^libxml2-[0-9]+\.[0-9]+\.[0-9]+[a-z]*$/i, readdir(DIR));
closedir(DIR);
if (scalar(@namelist) == 0) {
return (0);
}
foreach $file (sort {uc($a) cmp uc($b)} @namelist) {
if (-d $path.$file) {
$name = $file;
}
}
if (defined($name)) {
return ($name);
}
else {
return (0);
}
}
sub updatefile {
my($filename, $substr, $line);
my(@Lines);
$filename = $_[0];
$substr = $_[1];
$havexml = $_[2];
open (RFILE, $filename) || die "Can't open file $filename: $!";
@Lines = <RFILE>;
close (RFILE);
foreach $line (@Lines) {
if ($havexml) {
$line =~ s/libxml2-[0-9]+\.[0-9]+\.[0-9]+[a-z]*/$substr/gi;
if ($filename =~ /\.mak$/) {
$line =~ s/^ } elsif ($filename =~ /\.dsp$/ ) {
$line =~ s/^!MESSAGE (LIBXML=.*\/libxml2\.lib.*)$/\1/;
$line =~ s/^!MESSAGE ( }
$line =~ s/^; (isc_socketmgr_renderxml)$/\1/;
$line =~ s/^; (isc_mem_renderxml)$/\1/;
$line =~ s/^; (isc_taskmgr_renderxml)$/\1/;
} else {
if ($filename =~ /\.mak$/) {
$line =~ s/^(LIBXML=.*\/libxml2.lib.*)$/ } elsif ($filename =~ /\.dsp$/ ) {
$line =~ s/^( $line =~ s/^(LIBXML=.*\/libxml2.lib.*)$/!MESSAGE \1/i;
}
$line =~ s/^(isc_socketmgr_renderxml)$/; \1/;
$line =~ s/^(isc_mem_renderxml)$/; \1/;
$line =~ s/^(isc_taskmgr_renderxml)$/; \1/;
}
}
open (RFILE, ">$filename") || die "Can't open file $filename: $!";
foreach $line (@Lines) {
print RFILE $line;
}
close(RFILE);
}
sub updateconfig {
my($havexml, $substr, $line);
my(@Lines);
$havexml = $_[0];
open (RFILE, "../config.h") || die "Can't open config.h";
@Lines = <RFILE>;
close (RFILE);
foreach $line (@Lines) {
if ($havexml) {
$line =~ s/^.* } else {
$line =~ s/^ }
}
open (RFILE, ">../config.h") || die "Can't open config.h";
print "Updating file ../config.h\n";
foreach $line (@Lines) {
print RFILE $line;
}
close(RFILE);
}