@self= split /\s+/, $2;
@self_ns= @self if $1 ne '-soa';
@self_soa= @self if $1 ne '-ns';
- } elsif (m/^primary\-dir\s+(\S+)((?:\s+(\S+))??:\s+(\S+))?$/) {
+ } elsif (m/^primary\-dir\s+(\S+)((?:\s+(\S+))?:\s+(\S+))?$/) {
($dir, $prefix, $suffix) = (qualify($1),$2,$3);
- $suffix= '_db' if !length $suffix;
+ $suffix= '_db' if !defined $suffix;
+ $prefix= '' if !defined $prefix;
opendir D, $dir or cfg_fail("open primary-dir $dir:\n $!");
$lprefix= length $prefix; $lsuffix= length $suffix;
- while ($!=0, $_= readdir D) {
+ while (defined($_= readdir D)) {
next if m/^\./ && !$lprefix;
next unless length > $lprefix+$lsuffix;
next unless substr($_,0,$lprefix) eq $prefix;
$z= substr($_,$lprefix,length($_)-($lprefix+$lsuffix));
zone_conf($z,'primary',"$dir/$_");
}
- $! and cfg_fail("read primary-dir $dir:\n $!");
closedir D or cfg_fail("close primary-dir $dir:\n $!");
} elsif (m/^primary\s+(\S+)\s+(\S+)$/) {
zone_conf($1,'primary',qualify($2));
zone_conf($1,'secondary','',$2);
} elsif (m/^stealth\s+(\S+)\s+([0-9. \t]+)$/) {
zone_conf($1,'stealth','',split /\s+/, $2);
- } elsif (m/^slave\-dir\s+(\S+)((?:\s+(\S+))??:\s+(\S+))?$/) {
+ } elsif (m/^slave\-dir\s+(\S+)((?:\s+(\S+))?:\s+(\S+))?$/) {
($slave_dir, $slave_prefix, $slave_suffix) = (qualify($1),$2,$3);
} elsif (m/^output\s+bind8\+(\S+)$/) {
cfg_fail("default output may not apply to only some zones")
sub qualify ($) {
my ($i) = @_;
$i= "$default_dir/$i" unless $i =~ m,^/,;
+ return $i;
}
sub zone_conf ($$@) {
foreach $s (@s) {
@glue= @{ $s2g{$s} };
if (!@glue) {
- zone_warning("glueless NS $s, from $ww")
+ zone_warning("glueless NS $s,".
+ ($needglue<=1 ? " (eg)" : "").
+ " from $ww")
unless $glueless_ok || !$needglue ||
($needglue<=1 && $gluelesswarned{$s}++);
next;