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 +++++++++++++++++++-- debian/changelog | 6 +++++- 2 files changed, 24 insertions(+), 3 deletions(-) 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, diff --git a/debian/changelog b/debian/changelog index 94abad0bf..2b84d16a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,8 +10,12 @@ apt (0.7.20.3) UNRELEASED; urgency=low - sk.po. Closes: #520403 - it.po. Closes: #522222 - sk.po. Closes: #520403 + + [ Jamie Strandboge ] + * apt.cron.daily: catch invalid dates due to DST time changes + in the stamp files - -- Michael Vogt Sun, 08 Feb 2009 11:47:48 +0100 + -- Michael Vogt Wed, 08 Apr 2009 22:37:01 +0200 apt (0.7.20.2) unstable; urgency=medium -- cgit v1.2.3