Home | History | Annotate | Line # | Download | only in m4
copy-if-newbig revision 1.1.1.1.4.2
      1 #!/usr/bin/perl -w
      2 # copy a file if it is both newer and bigger in size
      3 # if copying, first rename older file to .orig
      4 
      5 $src = $ARGV[0];
      6 $dst = $ARGV[1];
      7 # dev,ino,mode,nlink,uid,gid,rdev,size,atime,mtime,ctime,blksize,blocks
      8 @srcstat = stat($src);
      9 @dststat = stat($dst);
     10 
     11 $srcsize = $srcstat[7];
     12 $srcmtime = $srcstat[9];
     13 $dstsize = $dststat[7];
     14 $dstmtime = $dststat[9];
     15 
     16 # copy if src file is bigger and newer
     17 if ($srcsize > $dstsize && $srcmtime > $dstmtime) {
     18     print "mv -f $dst $dst.orig\n";
     19     system("mv -f $dst $dst.orig");
     20     print "cp -p $src $dst\n";
     21     system("cp -p $src $dst");
     22     die "cp command failed" if ($? != 0);
     23 }
     24 # make sure dst file has newer timestamp
     25 if ($srcmtime > $dstmtime) {
     26     print "touch $dst\n";
     27     system("touch $dst");
     28 }
     29 exit(0);
     30