Replace progress reports with single-character markers
authorZygo Blaxell <zblaxell@esightcorp.com>
Thu, 13 May 2010 20:40:23 +0000 (16:40 -0400)
committerZygo Blaxell <zblaxell@esightcorp.com>
Thu, 13 May 2010 20:40:23 +0000 (16:40 -0400)
dm6

diff --git a/dm6 b/dm6
index 35fda9cb6ff4ad093bbc968374256d6ea1bbdf21..a5d56a6545a59258d2742e7dcfcedd0a4be5d843 100755 (executable)
--- 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 (<STDIN>) {
                        chomp $file;
 
                        # Get file stat data
+                       print STDERR '.';
                        my $st = lstat($file);
                        die "lstat: $file: $!" unless $st;
 
@@ -106,6 +112,7 @@ while (<STDIN>) {
 
                        # 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 (<STDIN>) {
                        } 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 (<STDIN>) {
 
                        # 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);
                        }