Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

#!/usr/bin/perl -w
# copy a file if it is both newer and bigger in size
# if copying, first rename older file to .orig

$src = $ARGV[0];
$dst = $ARGV[1];
# dev,ino,mode,nlink,uid,gid,rdev,size,atime,mtime,ctime,blksize,blocks
@srcstat = stat($src);
@dststat = stat($dst);

$srcsize = $srcstat[7];
$srcmtime = $srcstat[9];
$dstsize = $dststat[7];
$dstmtime = $dststat[9];

# copy if src file is bigger and newer
if ($srcsize > $dstsize && $srcmtime > $dstmtime) {
    print "mv -f $dst $dst.orig\n";
    system("mv -f $dst $dst.orig");
    print "cp -p $src $dst\n";
    system("cp -p $src $dst");
    die "cp command failed" if ($? != 0);
}
# make sure dst file has newer timestamp
if ($srcmtime > $dstmtime) {
    print "touch $dst\n";
    system("touch $dst");
}
exit(0);