chiark / gitweb /
nailing-cargo: Bugfixes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 3 May 2020 21:15:04 +0000 (22:15 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 3 May 2020 21:15:04 +0000 (22:15 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
nailing-cargo

index 95377fea56d81c31e770dc6c5f07ca55e173d433..bff0495e599da3936428c6ac0f6ba1d8ffe3426e 100755 (executable)
@@ -97,28 +97,28 @@ sub getcfg ($$) {
 
 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 &&
@@ -134,7 +134,7 @@ sub readnail () {
            $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;
 }
@@ -202,10 +202,10 @@ sub calculate () {
            }
        }
        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";
     }
 }
 
@@ -215,8 +215,7 @@ END {
     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 "$@";
        }
     }
 }
@@ -236,9 +235,9 @@ sub install () {
        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) {
@@ -248,8 +247,8 @@ sub install () {
            $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";
     }
 }
 
@@ -258,13 +257,13 @@ sub invoke () {
     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;
     }
 }
@@ -273,7 +272,7 @@ sub uninstall1 ($$) {
     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 () {
@@ -311,7 +310,7 @@ __DATA__
 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