From 81f29b028473a3d8ac0aaeb126fc0336a98bb077 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 12 Nov 2019 11:03:16 -0800
Subject: [PATCH] adjust for 64bit time_t

Break assumption about time_t being of certain size, and use intmax_t to
print it where needed

Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 src/cron.c                    | 4 ++--
 src/epggrab/module/psip.c     | 2 +-
 src/epggrab/otamux.c          | 2 +-
 src/parsers/parser_teletext.c | 2 +-
 src/tvheadend.h               | 6 +-----
 src/webui/webui.c             | 4 ++--
 6 files changed, 8 insertions(+), 12 deletions(-)

--- a/src/cron.c
+++ b/src/cron.c
@@ -329,9 +329,9 @@ cron_next ( cron_t *c, const time_t now,
     *ret = mktime(&tmp);
   if (*ret <= now) {
 #ifndef CRON_TEST
-    tvherror(LS_CRON, "invalid time, now %"PRItime_t", result %"PRItime_t, now, *ret);
+    tvherror(LS_CRON, "invalid time, now %"PRItime_t", result %"PRItime_t, (intmax_t)now, (intmax_t)*ret);
 #else
-    printf("ERROR: invalid time, now %"PRItime_t", result %"PRItime_t"\n", now, *ret);
+    printf("ERROR: invalid time, now %"PRItime_t", result %"PRItime_t"\n", (intmax_t)now, (intmax_t)*ret);
 #endif
     *ret = now + 600;
   }
--- a/src/epggrab/module/psip.c
+++ b/src/epggrab/module/psip.c
@@ -223,14 +223,14 @@ _psip_eit_callback_channel
 
     tvhtrace(LS_PSIP, "  %03d: [%s] eventid 0x%04x at %"PRItime_t", duration %d, etmlocation %x, title: '%s' (%d bytes)",
              i, ch ? channel_get_name(ch, channel_blank_name) : "(null)",
-             eventid, start, length, etmlocation,
+             eventid, (intmax_t)start, length, etmlocation,
              lang_str_get(title, NULL), titlelen);
 
     save2 = changes2 = 0;
 
     ebc = epg_broadcast_find_by_time(ch, mod, start, stop, 1, &save2, &changes2);
     tvhtrace(LS_PSIP, "  eid=%5d, start=%"PRItime_t", stop=%"PRItime_t", ebc=%p",
-             eventid, start, stop, ebc);
+             eventid, (intmax_t)start, (intmax_t)stop, ebc);
     if (!ebc) goto next;
 
     save2 |= epg_broadcast_set_dvb_eid(ebc, eventid, &changes2);
--- a/src/epggrab/otamux.c
+++ b/src/epggrab/otamux.c
@@ -719,7 +719,7 @@ epggrab_ota_start_cb ( void *p );
 static void
 epggrab_ota_next_arm( time_t next )
 {
-  tvhtrace(LS_EPGGRAB, "next ota start event in %li seconds", next - time(NULL));
+  tvhtrace(LS_EPGGRAB, "next ota start event in %jd seconds", (intmax_t)(next - time(NULL)));
   gtimer_arm_absn(&epggrab_ota_start_timer, epggrab_ota_start_cb, NULL, next);
   dbus_emit_signal_s64("/epggrab/ota", "next", next);
 }
--- a/src/parsers/parser_teletext.c
+++ b/src/parsers/parser_teletext.c
@@ -625,7 +625,7 @@ tt_construct_unix_time(uint8_t *buf)
   r[2] = mktime(&tm);
 
   for(i = 0; i < 3; i++)
-    v[i] = labs(r[i] - t);
+    v[i] = (time_t)llabs((long long)(r[i] - t));
   
   if(v[0] < v[1] && v[0] < v[2])
     return r[0];
--- a/src/tvheadend.h
+++ b/src/tvheadend.h
@@ -332,11 +332,7 @@ void tvh_qsort_r(void *base, size_t nmem
 # endif /* ULONG_MAX */
 #endif /* __WORDSIZE */
 
-#if __WORDSIZE == 32 && defined(PLATFORM_FREEBSD)
-#define PRItime_t       "d"
-#else
-#define PRItime_t       "ld"
-#endif
+#define PRItime_t       "jd"
 
 /* transcoding */
 #define TVH_NAME_LEN 32
--- a/src/webui/webui.c
+++ b/src/webui/webui.c
@@ -886,9 +886,9 @@ http_dvr_list_playlist(http_connection_t
     bandwidth = ((8*fsize) / (durration*1024.0));
     strftime(buf, sizeof(buf), "%FT%T%z", localtime_r(&(de->de_start), &tm));
 
-    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", durration, lang_str_get(de->de_title, NULL));
+    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", (intmax_t)durration, lang_str_get(de->de_title, NULL));
     
-    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", durration);
+    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", (intmax_t)durration);
     uuid = idnode_uuid_as_str(&de->de_id, ubuf);
     htsbuf_qprintf(hq, "#EXT-X-STREAM-INF:PROGRAM-ID=%s,BANDWIDTH=%d\n", uuid, bandwidth);
     htsbuf_qprintf(hq, "#EXT-X-PROGRAM-DATE-TIME:%s\n", buf);
@@ -944,9 +944,9 @@ http_dvr_playlist(http_connection_t *hc,
     strftime(buf, sizeof(buf), "%FT%T%z", localtime_r(&(de->de_start), &tm));
 
     htsbuf_append_str(hq, "#EXTM3U\n");
-    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", durration, lang_str_get(de->de_title, NULL));
+    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", (intmax_t)durration, lang_str_get(de->de_title, NULL));
     
-    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", durration);
+    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", (intmax_t)durration);
     uuid = idnode_uuid_as_str(&de->de_id, ubuf);
     htsbuf_qprintf(hq, "#EXT-X-STREAM-INF:PROGRAM-ID=%s,BANDWIDTH=%d\n", uuid, bandwidth);
     htsbuf_qprintf(hq, "#EXT-X-PROGRAM-DATE-TIME:%s\n", buf);
--- a/src/dvr/dvr_rec.c
+++ b/src/dvr/dvr_rec.c
@@ -723,7 +723,7 @@ static const char *
 dvr_sub_start(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
 {
   char buf[16];
-  snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_start_time((dvr_entry_t *)aux, 0));
+  snprintf(buf, sizeof(buf), "%"PRItime_t, (intmax_t)dvr_entry_get_start_time((dvr_entry_t *)aux, 0));
   return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
 }
 
@@ -747,7 +747,7 @@ static const char *
 dvr_sub_stop(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
 {
   char buf[16];
-  snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_stop_time((dvr_entry_t *)aux));
+  snprintf(buf, sizeof(buf), "%"PRItime_t, (intmax_t)dvr_entry_get_stop_time((dvr_entry_t *)aux));
   return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
 }
 
--- a/src/epggrab/module.c
+++ b/src/epggrab/module.c
@@ -582,7 +582,7 @@ static void _epggrab_socket_handler ( ep
 
   /* Process */
   if ( data ) {
-    tvhinfo(mod->subsys, "%s: grab took %"PRItime_t" seconds", mod->id, tm2 - tm1);
+    tvhinfo(mod->subsys, "%s: grab took %"PRItime_t" seconds", mod->id, (intmax_t)(tm2 - tm1));
     epggrab_module_parse(mod, data);
 
   /* Failed */
--- a/src/epggrab/module/opentv.c
+++ b/src/epggrab/module/opentv.c
@@ -497,7 +497,7 @@ opentv_parse_event_section_one
                                        1, &save, &changes);
       tvhdebug(LS_OPENTV, "find by time start %"PRItime_t " stop "
                "%"PRItime_t " ch %"PRId64" eid %d = %p",
-               ev.start, ev.stop, ch->ch_number, ev.eid, ebc);
+               (intmax_t)ev.start, (intmax_t)ev.stop, ch->ch_number, ev.eid, ebc);
       save |= epg_broadcast_set_dvb_eid(ebc, ev.eid, &changes);
     } else {
       ebc = epg_broadcast_find_by_eid(ch, ev.eid);
--- a/src/webui/simpleui.c
+++ b/src/webui/simpleui.c
@@ -556,12 +556,12 @@ page_status(http_connection_t *hc,
 		     "<title>%s</title>\n",
 		     a.tm_year + 1900, a.tm_mon + 1, a.tm_mday,
 		     a.tm_hour, a.tm_min, 
-		     de->de_start, 
-		     (time_t)dvr_entry_get_extra_time_pre(de),
+		     (intmax_t)de->de_start,
+		     (intmax_t)dvr_entry_get_extra_time_pre(de),
 		     b.tm_year+1900, b.tm_mon + 1, b.tm_mday,
 		     b.tm_hour, b.tm_min, 
-		     de->de_stop, 
-		     (time_t)dvr_entry_get_extra_time_post(de),
+		     (intmax_t)de->de_stop,
+		     (intmax_t)dvr_entry_get_extra_time_post(de),
          buf);
 
       rstatus = val2str(de->de_sched_state, recstatustxt);
