From 790ad0c146598175d7cca5f0c711ec217e196369 Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Thu, 13 May 2010 16:40:23 -0400 Subject: [PATCH] Replace progress reports with single-character markers --- dm6 | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/dm6 b/dm6 index 35fda9c..a5d56a6 100755 --- a/dm6 +++ b/dm6 @@ -48,19 +48,22 @@ USAGE sub link_files { my ($from, $to) = (@_); - print STDERR "link '$from' '$to' ..."; + print STDERR 'T'; my $inode_dir = $to; my $inode_base = $to; $inode_dir =~ s:[^/]*$::o; $inode_base =~ s:^.*/::os; my $tmp_to = File::Temp::tempnam($inode_dir, ".$inode_base."); + print STDERR "\bL"; link($from, $tmp_to) or die "link: $from -> $tmp_to: $!"; + print STDERR "\bR"; unless (rename($tmp_to, $to)) { my $saved_bang = $!; + print STDERR "\bU"; unlink($tmp_to) or warn "unlink: $tmp_to: $!"; # Try, possibly in vain, to clean up die "rename: $tmp_to -> $from: $saved_bang"; } - print STDERR "\n"; + print STDERR "\b \b"; } my $link_dir = shift @ARGV; @@ -79,7 +82,9 @@ sub prepare_parents { my ($link_dir, $file) = @_; my ($prefix, $suffix) = slash_prefix($file); my $parent = "$link_dir/$prefix"; - mkpath($parent, { verbose => 1 }); + print STDERR 'm'; + mkpath($parent, { verbose => 0 }); + print STDERR "\b"; die "mkpath: $parent: $!" unless -d $parent; return "$parent/$suffix"; } @@ -95,6 +100,7 @@ while () { chomp $file; # Get file stat data + print STDERR '.'; my $st = lstat($file); die "lstat: $file: $!" unless $st; @@ -106,6 +112,7 @@ while () { # Check link to inode my $inode_link = prepare_parents("$link_dir/inode", $st->ino); + print STDERR 'I'; my $inode_st = lstat($inode_link); my $update_links; if ($inode_st) { @@ -121,26 +128,27 @@ while () { } else { $update_links = 1; } + print STDERR "\b"; # If neither criteria for updating link is met, leave it as-is next unless $update_links; # Compute digest - print STDERR "digest($file) = "; + print STDERR 'd'; my $digest = digest($file); + print STDERR "\b"; # Base64 uses /, we prefer _ $digest =~ y:/:_:; - print STDERR "$digest\n"; - # Check link to digest my $digest_link = prepare_parents("$link_dir/digest", $digest); + print STDERR 'D'; my $digest_st = lstat($digest_link); if ($digest_st) { my $digest_nlink = $digest_st->nlink; if ($digest_nlink > 31990) { - print STDERR "Removing '$digest_link' with $digest_nlink links\n"; + print STDERR 'u'; unlink($digest_link) or die "unlink: $digest_link: $!"; undef $digest_st; } @@ -148,11 +156,15 @@ while () { # If digest link exists, link it to file if ($digest_st) { - print STDERR "cmp '$digest_link' '$file' ..."; + print STDERR 'c'; die "NOT identical!" if compare($digest_link, $file); - print STDERR "\n"; + + # Old, replace input with old file + print STDERR '-'; link_files($digest_link, $file); } else { + # New, add input to digest + print STDERR '+'; link_files($file, $digest_link); } -- 2.30.2