From a7c526b6288aa21b64be5991a3f406fd9509db05 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 8 Apr 2009 22:37:40 +0200 Subject: apt.cron.daily: catch invalid dates due to DST time changes in the stamp files --- debian/apt.cron.daily | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'debian/apt.cron.daily') diff --git a/debian/apt.cron.daily b/debian/apt.cron.daily index 32fbafc57..5c5ca88c7 100644 --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@ -50,8 +50,25 @@ check_stamp() fi # compare midnight today to midnight the day the stamp was updated - stamp=$(date --date=$(date -r $stamp --iso-8601) +%s) - now=$(date --date=$(date --iso-8601) +%s) + stamp_file="$stamp" + stamp=$(date --date=$(date -r $stamp_file --iso-8601) +%s 2>/dev/null) + if [ "$?" != "0" ]; then + # Due to some timezones returning 'invalid date' for midnight on + # certain dates (eg America/Sao_Paulo), if date returns with error + # remove the stamp file and return 0. See coreutils bug: + # http://lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00176.html + rm -f "$stamp_file" + return 0 + fi + + now=$(date --date=$(date --iso-8601) +%s 2>/dev/null) + if [ "$?" != "0" ]; then + # As above, due to some timezones returning 'invalid date' for midnight + # on certain dates (eg America/Sao_Paulo), if date returns with error + # return 0. + return 0 + fi + delta=$(($now-$stamp)) # intervall is in days, -- cgit v1.2.3