forked from lix-project/lix
* Doh! Of course we have to take execute permission into account.
* Restore the mtime on modified directories.
This commit is contained in:
parent
6dbed1bf38
commit
ee6cf99660
|
@ -4,7 +4,8 @@ use strict;
|
||||||
use File::Basename;
|
use File::Basename;
|
||||||
|
|
||||||
|
|
||||||
my @paths = ("/nix/store");
|
#my @paths = ("/nix/store");
|
||||||
|
my @paths = ("test");
|
||||||
|
|
||||||
|
|
||||||
print "hashing...\n";
|
print "hashing...\n";
|
||||||
|
@ -37,6 +38,7 @@ sub atomicLink {
|
||||||
rename $tmpNew, $new or die "cannot rename `$tmpNew' to `$new': $!";
|
rename $tmpNew, $new or die "cannot rename `$tmpNew' to `$new': $!";
|
||||||
|
|
||||||
chmod ($st[2], $dir) or die "cannot restore permission on `$dir': $!";
|
chmod ($st[2], $dir) or die "cannot restore permission on `$dir': $!";
|
||||||
|
utime ($st[8], $st[9], $dir) or die "cannot restore timestamp on `$dir': $!";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,6 +49,7 @@ open LIST, "<$hashList.sorted" or die;
|
||||||
my $prevFile;
|
my $prevFile;
|
||||||
my $prevHash;
|
my $prevHash;
|
||||||
my $prevInode;
|
my $prevInode;
|
||||||
|
my $prevExec;
|
||||||
|
|
||||||
my $totalSpace = 0;
|
my $totalSpace = 0;
|
||||||
my $savedSpace = 0;
|
my $savedSpace = 0;
|
||||||
|
@ -61,8 +64,11 @@ while (<LIST>) {
|
||||||
|
|
||||||
my $fileSize = $st[7];
|
my $fileSize = $st[7];
|
||||||
$totalSpace += $fileSize;
|
$totalSpace += $fileSize;
|
||||||
|
my $isExec = ($st[2] & 0111) == 0111;
|
||||||
|
|
||||||
if (defined $prevHash && $curHash eq $prevHash) {
|
if (defined $prevHash && $curHash eq $prevHash
|
||||||
|
&& $prevExec == $isExec)
|
||||||
|
{
|
||||||
|
|
||||||
if ($st[1] != $prevInode) {
|
if ($st[1] != $prevInode) {
|
||||||
print "$curFile = $prevFile\n";
|
print "$curFile = $prevFile\n";
|
||||||
|
@ -74,6 +80,7 @@ while (<LIST>) {
|
||||||
$prevFile = $curFile;
|
$prevFile = $curFile;
|
||||||
$prevHash = $curHash;
|
$prevHash = $curHash;
|
||||||
$prevInode = $st[1];
|
$prevInode = $st[1];
|
||||||
|
$prevExec = ($st[2] & 0111) == 0111;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue