Better(?!?) fallback for stat: Perl
authorPhil Pennock <pdp@exim.org>
Mon, 9 Apr 2018 03:46:26 +0000 (23:46 -0400)
committerPhil Pennock <pdp@exim.org>
Mon, 9 Apr 2018 03:46:26 +0000 (23:46 -0400)
We use Perl extensively in other scripts.

*sigh*

src/util/renew-opendmarc-tlds.sh

index 2ce937699af552ba674c21072b5b31df5cbf621a..9967018e22ab27cbfd222d2b4ea7aab26c005583 100755 (executable)
@@ -24,7 +24,8 @@
 # This should be "pretty portable"; the only things it depends upon are:
 #  * a POSIX shell which additionally implements 'local' (dash works)
 #  * the 'curl' command; change the fetch_candidate() function to replace that
 # This should be "pretty portable"; the only things it depends upon are:
 #  * a POSIX shell which additionally implements 'local' (dash works)
 #  * the 'curl' command; change the fetch_candidate() function to replace that
-#  * the 'stat' command, to get the size of a file; change size_of() if need be
+#  * the 'stat' command, to get the size of a file; else Perl
+#    + change size_of() if need be; it's defined per-OS
 #  * the 'hexdump' command and /dev/urandom existing
 #    + used when invoked with 'cron', to avoid retrieving on a minute boundary
 #      and contending with many other automated systems.
 #  * the 'hexdump' command and /dev/urandom existing
 #    + used when invoked with 'cron', to avoid retrieving on a minute boundary
 #      and contending with many other automated systems.
@@ -84,8 +85,10 @@ case $(uname -s) in
 Linux)
        size_of() { stat -c %s "$1"; }
        ;;
 Linux)
        size_of() { stat -c %s "$1"; }
        ;;
-*)  # optimism?
-       size_of() { stat -c %s "$1"; }
+*)
+       # why do we live in a world where Perl is the safe portable solution
+       # to getting the size of a file?
+       size_of() { perl -le 'print((stat($ARGV[0]))[7])' -- "$1"; }
        ;;
 esac
 
        ;;
 esac