]> git.sur5r.net Git - bacula/bacula/blobdiff - regress/scripts/diff.pl
Add missing copy-plugin-confs for regress
[bacula/bacula] / regress / scripts / diff.pl
index bf217cd60c8886716683f4ff17a8b8a5f08570c0..a18ad9f3c610fe58c9334b3199fa7d63630e35c2 100755 (executable)
@@ -1,4 +1,8 @@
 #!/usr/bin/perl -w
+#
+# Copyright (C) 2000-2015 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
 
 =head1 NAME
 
@@ -28,6 +32,7 @@ my %dst_attr;
 my @exclude;
 my $hash;
 my $ret=0;
+my $notop=0;
 
 GetOptions("src=s"   => \$src,        # source directory
            "dst=s"   => \$dst,        # dest directory
@@ -36,6 +41,7 @@ GetOptions("src=s"   => \$src,        # source directory
            "wattr"   => \$wattr,      # windows attributes
            "mtime-dir" => \$mtimedir, # check mtime on directories
            "exclude=s@" => \@exclude, # exclude some files
+           "notop"   => \$notop,      # Exclude top directory
            "help"    => \$help,
     ) or pod2usage(-verbose => 1, 
                    -exitval => 1);
@@ -54,6 +60,7 @@ my $dir = getcwd;
 
 chdir($src) or die "ERROR: Can't access to $src";
 $hash = \%src_attr;
+
 find(\&wanted_src, '.');
 
 if ($wattr) {    
@@ -83,6 +90,12 @@ if ($wattr) {
 
 foreach my $f (keys %src_attr)
 {
+    if ($notop && $f eq '.') {
+        delete $src_attr{$f};
+        delete $dst_attr{$f};
+        next;
+    }
+
     if (!defined $dst_attr{$f}) {
         $ret++;
         print "diff.pl ERROR: Can't find $f in dst\n";
@@ -136,6 +149,10 @@ sub compare
                 ($val1, $val2) = 
                     (map { strftime('%F %T', localtime($_)) } ($val1, $val2));
             }
+            if ($k =~ /mode/) {
+                ($val1, $val2) = 
+                    (map { sprintf('%o', $_) } ($val1, $val2));
+            }
             print "diff.pl ERROR: src and dst $f2 differ on $k ($val1 != $val2)\n";
         }
         delete $attr{$k};