chiark
/
gitweb
/
~mdw
/
userv-utils
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ipif: "include" looks for the file in the directory where "include" appears
[userv-utils]
/
ipif
/
service-wrap
diff --git
a/ipif/service-wrap
b/ipif/service-wrap
index 678a86789baf282bb72d51db146309bc973e2c9d..8dca1c31bb1a7bcf455e832ed6399e340812d4e5 100755
(executable)
--- a/
ipif/service-wrap
+++ b/
ipif/service-wrap
@@
-62,6
+62,7
@@
use strict;
use POSIX;
use Carp;
use NetAddr::IP::Lite qw(:nofqdn :lower);
use POSIX;
use Carp;
use NetAddr::IP::Lite qw(:nofqdn :lower);
+use File::Basename;
our $default_ifname = 'userv%d';
our $default_ifname = 'userv%d';
@@
-265,7
+266,9
@@
sub readconfig ($) {
foreach @wrong;
}
} elsif (m{^include\s+(\S+)$}) {
foreach @wrong;
}
} elsif (m{^include\s+(\S+)$}) {
- readconfig $1;
+ my $include = $1;
+ $include =~ s{^(?!/)}{ dirname($cfgpath)."/" }e;
+ readconfig $include;
} else {
badcfg "unknown config directive or bad syntax";
}
} else {
badcfg "unknown config directive or bad syntax";
}
@@
-274,10
+277,21
@@
sub readconfig ($) {
close $cfgfh;
}
close $cfgfh;
}
-readconfig $v1config;
-
-if ($v0config && $v0config =~ m{^[^#]} && $v0config ne '/dev/null') {
+sub try_v0config() {
+ return unless $v0config;
+ return unless $v0config =~ m{^[^#]};
+ return if $v0config eq '/dev/null';
+ if ($v0config =~ m{^/}) {
+ if (!stat $v0config) {
+ die "v0 config $v0config: $!\n" unless $!==ENOENT;
+ return;
+ }
+ }
print "trying v0 config $v0config...\n" if $protocol eq 'debug';
execreal $v0config;
}
print "trying v0 config $v0config...\n" if $protocol eq 'debug';
execreal $v0config;
}
+
+readconfig $v1config;
+try_v0config();
+
die "permission denied\n";
die "permission denied\n";