stat portability
authorPhil Pennock <pdp@exim.org>
Mon, 9 Apr 2018 02:43:36 +0000 (22:43 -0400)
committerPhil Pennock <pdp@exim.org>
Mon, 9 Apr 2018 02:43:36 +0000 (22:43 -0400)
I forgot how much I loathe basic stuff like "get the size of a file,
portably, in shell".  Bleh.

src/util/renew-opendmarc-tlds.sh

index c276fcd5fa970a084ad4fe35cd3b7b9a280dac70..2ce937699af552ba674c21072b5b31df5cbf621a 100755 (executable)
@@ -13,7 +13,7 @@
 # Create a cron-job as the Exim run-time user to invoke this daily, with a
 # single parameter, 'cron'.  Eg:
 #
 # Create a cron-job as the Exim run-time user to invoke this daily, with a
 # single parameter, 'cron'.  Eg:
 #
-#    3 4 * * *    /usr/local/sbin/renew-opendmarc-tlds.sh cron
+#    3 4 * * *   /usr/local/sbin/renew-opendmarc-tlds.sh cron
 #
 # That will, at 3 minutes past the 4th hour (in whatever timezone cron is
 # running it) invoke this script with 'cron'; we will then sleep between 10 and
 #
 # That will, at 3 minutes past the 4th hour (in whatever timezone cron is
 # running it) invoke this script with 'cron'; we will then sleep between 10 and
@@ -77,9 +77,17 @@ fetch_candidate() {
        curl --user-agent "$CurlUserAgent" -fSs -o "${WorkingFile}" "${URL}"
 }
 
        curl --user-agent "$CurlUserAgent" -fSs -o "${WorkingFile}" "${URL}"
 }
 
-size_of() {
-       stat -c %s "$1"
-}
+case $(uname -s) in
+*BSD|Darwin)
+       size_of() { stat -f %z "$1"; }
+       ;;
+Linux)
+       size_of() { stat -c %s "$1"; }
+       ;;
+*)  # optimism?
+       size_of() { stat -c %s "$1"; }
+       ;;
+esac
 
 sanity_check_candidate() {
        local new_size prev_size re
 
 sanity_check_candidate() {
        local new_size prev_size re