]> git.saurik.com Git - apt.git/commitdiff
apt.cron.daily: catch invalid dates due to DST time changes
authorMichael Vogt <michael.vogt@ubuntu.com>
Wed, 8 Apr 2009 20:43:37 +0000 (22:43 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Wed, 8 Apr 2009 20:43:37 +0000 (22:43 +0200)
in the stamp files

debian/apt.cron.daily
debian/changelog

index 954f0bfc9064845d72f08f9fbcae0eabbba80a69..7f2978568bb884853c01e6fce9ca6f40a9216871 100644 (file)
@@ -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,
index 6a3d14ddc1244c67f23f58b5635e1f5ed5c20480..43827dada94064234bfc9bec75ba782c020b8f0c 100644 (file)
@@ -1,3 +1,11 @@
+apt (0.7.20.2ubuntu6) jaunty; urgency=low
+
+  [ Jamie Strandboge ]
+  * apt.cron.daily: catch invalid dates due to DST time changes
+    in the stamp files
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 08 Apr 2009 22:39:50 +0200
+
 apt (0.7.20.2ubuntu5) jaunty; urgency=low
 
   [ Colin Watson ]