]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
util cron: fix possible DST issue
authorAdam Sutton <dev@adamsutton.me.uk>
Mon, 21 Apr 2014 13:46:31 +0000 (14:46 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Mon, 21 Apr 2014 13:46:31 +0000 (14:46 +0100)
really not sure this will work, needs testing

src/cron.c

index 0dbcbbfde6af392b3e4bedc89569242ed351bd11..325ff6d12f8067b46f2d17325dee8464be1a9929 100644 (file)
@@ -181,11 +181,14 @@ days_in_month ( int year, int mon )
 int
 cron_next ( cron_t *c, const time_t now, time_t *ret )
 {
-  struct tm nxt;
+  struct tm nxt, tmp;
   int endyear; 
   localtime_r(&now, &nxt);
   endyear = nxt.tm_year + 10;
 
+  /* Clear seconds */
+  nxt.tm_sec = 0;
+
   /* Invalid day */
   if (!(c->c_mday & (0x1LL << (nxt.tm_mday-1))) ||
       !(c->c_wday & (0x1LL << (nxt.tm_wday)))   ||
@@ -267,8 +270,9 @@ cron_next ( cron_t *c, const time_t now, time_t *ret )
   }
 
   /* Create time */
-  // TODO: not sure this will provide the correct time with respect to DST!
-  nxt.tm_isdst = 0;
+  memcpy(&tmp, &nxt, sizeof(tmp));
+  mktime(&tmp);
+  nxt.tm_isdst = tmp.tm_isdst;
   *ret         = mktime(&nxt);
   return 0;
 }