sub takelock () {
for (;;) {
- open LOCK, ">", $lockfile or die "$0: open/create $lockfile: $!\n";
- flock LOCK, LOCK_EX or die "$0: lock $lockfile: $!\n";
- my @fstat = stat LOCK or die "$0: fstat: $!\n";
+ open LOCK, ">", $lockfile or die "$self: open/create $lockfile: $!\n";
+ flock LOCK, LOCK_EX or die "$self: lock $lockfile: $!\n";
+ my @fstat = stat LOCK or die "$self: fstat: $!\n";
my @stat = stat $lockfile;
if (!@stat) {
next if $! == ENOENT;
- die "$0: stat $lockfile: $!\n";
+ die "$self: stat $lockfile: $!\n";
}
last if "@fstat[0..5]" eq "@stat[0..5]";
}
}
sub unlock () {
- unlink $lockfile or die "$0: removing lockfile: $!\n";
+ unlink $lockfile or die "$self: removing lockfile: $!\n";
}
our $nail;
sub readnail () {
my $nailfile = "../Cargo.nail";
- open N, '<', $nailfile or die "$0: open $nailfile: $!\n";
+ open N, '<', $nailfile or die "$self: open $nailfile: $!\n";
local ($/) = undef;
- my $toml = <N> // die "$0: read $nailfile: $!";
+ my $toml = <N> // die "$self: read $nailfile: $!";
my $transformed;
if ($toml !~ m{^\s*\[/}m &&
$toml !~ m{^[^\n\#]*\=}m &&
$toml =~ s/^/ /mg;
print STDERR "$self: $nailfile transformed into TOML:\n$toml\n";
}
- die "$0: parse $nailfile: $e\n";
+ die "$self: parse $nailfile: $e\n";
}
die "$e ?" if length $e;
}
}
}
my $nailing = "$mf.nailing~";
- unlink $nailing or $!==ENOENT or die "$0: remove old $nailing: $!\n";
- open N, '>', $nailing or die "$0: create new $nailing: $!\n";
- print N to_toml($toml) or die "$0: write new $nailing: $!\n";
- close N or die "$0: close new $nailing: $!\n";
+ unlink $nailing or $!==ENOENT or die "$self: remove old $nailing: $!\n";
+ open N, '>', $nailing or die "$self: create new $nailing: $!\n";
+ print N to_toml($toml) or die "$self: write new $nailing: $!\n";
+ close N or die "$self: close new $nailing: $!\n";
}
}
if ($want_uninstall) {
local ($?);
foreach my $mf (keys %manifests) {
- eval { uninstall1($mf, 0); 1; }
- or warn "$0: failed to revert $mf: $@\n";
+ eval { uninstall1($mf, 0); 1; } or warn "$@";
}
}
}
my $diff;
if (open NN, '<', $nailed) {
$diff = compare($nailing, \*NN);
- die "$0: compare $nailing and $nailed: $!" if $diff<0;
+ die "$self: compare $nailing and $nailed: $!" if $diff<0;
} else {
- $!==ENOENT or die "$0: check previous $nailed: $!\n";
+ $!==ENOENT or die "$self: check previous $nailed: $!\n";
$diff = 1;
}
if ($diff) {
$use = $nailed;
$rm = $nailing;
}
- rename $use, $mf or die "$0: install nailed $use: $!\n";
- unlink $rm or $!==ENOENT or die "$0: remove old $rm: $!\n";
+ rename $use, $mf or die "$self: install nailed $use: $!\n";
+ unlink $rm or $!==ENOENT or die "$self: remove old $rm: $!\n";
}
}
if (!$r) {
return 0;
} elsif ($r<0) {
- print STDERR "$0: could not execute $ARGV[0]: $!\n";
+ print STDERR "$self: could not execute $ARGV[0]: $!\n";
return 127;
} elsif ($r & 0xff00) {
- print STDERR "$0: $ARGV[0] failed (exit status $r)\n";
+ print STDERR "$self: $ARGV[0] failed (exit status $r)\n";
return $r >> 8;
} else {
- print STDERR "$0: $ARGV[0] died due to signal! (wait status $r)\n";
+ print STDERR "$self: $ARGV[0] died due to signal! (wait status $r)\n";
return 125;
}
}
my ($mf, $enoentok) = @_;
my $unnailed = "$mf.unnailed";
rename $unnailed, $mf or ($enoentok && $!==ENOENT)
- or die "$0: rename $unnailed back to $mf: $!\n";
+ or die "$self: failed to revert: rename $unnailed back to $mf: $!\n";
}
sub uninstall () {
lock=${PWD%/*}/.nail.lock
if [ "x$NAILING_CARGO" != "x$lock" ]; then
NAILING_CARGO=$lock \
- exec with-lock-ex -w "$lock" "$0" "$@"
+ exec with-lock-ex -w "$lock" "$self" "$@"
fi
exec 203<../Cargo.nail