1From 81f29b028473a3d8ac0aaeb126fc0336a98bb077 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 12 Nov 2019 11:03:16 -0800
4Subject: [PATCH] adjust for 64bit time_t
5
6Break assumption about time_t being of certain size, and use intmax_t to
7print it where needed
8
9Upstream-Status: Pending
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 src/cron.c                    | 4 ++--
13 src/epggrab/module/psip.c     | 2 +-
14 src/epggrab/otamux.c          | 2 +-
15 src/parsers/parser_teletext.c | 2 +-
16 src/tvheadend.h               | 6 +-----
17 src/webui/webui.c             | 4 ++--
18 6 files changed, 8 insertions(+), 12 deletions(-)
19
20--- a/src/cron.c
21+++ b/src/cron.c
22@@ -329,9 +329,9 @@ cron_next ( cron_t *c, const time_t now,
23     *ret = mktime(&tmp);
24   if (*ret <= now) {
25 #ifndef CRON_TEST
26-    tvherror(LS_CRON, "invalid time, now %"PRItime_t", result %"PRItime_t, now, *ret);
27+    tvherror(LS_CRON, "invalid time, now %"PRItime_t", result %"PRItime_t, (intmax_t)now, (intmax_t)*ret);
28 #else
29-    printf("ERROR: invalid time, now %"PRItime_t", result %"PRItime_t"\n", now, *ret);
30+    printf("ERROR: invalid time, now %"PRItime_t", result %"PRItime_t"\n", (intmax_t)now, (intmax_t)*ret);
31 #endif
32     *ret = now + 600;
33   }
34--- a/src/epggrab/module/psip.c
35+++ b/src/epggrab/module/psip.c
36@@ -383,14 +383,14 @@ _psip_eit_callback_channel
37
38     tvhtrace(LS_PSIP, "  %03d: [%s] eventid 0x%04x at %"PRItime_t", duration %d, title: '%s' (%d bytes)",
39              i, ch ? channel_get_name(ch, channel_blank_name) : "(null)",
40-             eventid, start, length,
41+             eventid, (intmax_t)start, length,
42              lang_str_get(title, NULL), titlelen);
43
44     save2 = changes2 = 0;
45
46     ebc = epg_broadcast_find_by_time(ch, mod, start, stop, 1, &save2, &changes2);
47     tvhtrace(LS_PSIP, "  eid=%5d, start=%"PRItime_t", stop=%"PRItime_t", ebc=%p",
48-             eventid, start, stop, ebc);
49+             eventid, (intmax_t)start, (intmax_t)stop, ebc);
50     if (!ebc) goto next;
51
52     save2 |= epg_broadcast_set_dvb_eid(ebc, eventid, &changes2);
53--- a/src/epggrab/otamux.c
54+++ b/src/epggrab/otamux.c
55@@ -719,7 +719,7 @@ epggrab_ota_start_cb ( void *p );
56 static void
57 epggrab_ota_next_arm( time_t next )
58 {
59-  tvhtrace(LS_EPGGRAB, "next ota start event in %li seconds", next - time(NULL));
60+  tvhtrace(LS_EPGGRAB, "next ota start event in %jd seconds", (intmax_t)(next - time(NULL)));
61   gtimer_arm_absn(&epggrab_ota_start_timer, epggrab_ota_start_cb, NULL, next);
62   dbus_emit_signal_s64("/epggrab/ota", "next", next);
63 }
64--- a/src/parsers/parser_teletext.c
65+++ b/src/parsers/parser_teletext.c
66@@ -625,7 +625,7 @@ tt_construct_unix_time(uint8_t *buf)
67   r[2] = mktime(&tm);
68
69   for(i = 0; i < 3; i++)
70-    v[i] = labs(r[i] - t);
71+    v[i] = (time_t)llabs((long long)(r[i] - t));
72
73   if(v[0] < v[1] && v[0] < v[2])
74     return r[0];
75--- a/src/tvheadend.h
76+++ b/src/tvheadend.h
77@@ -332,11 +332,7 @@ void tvh_qsort_r(void *base, size_t nmem
78 # endif /* ULONG_MAX */
79 #endif /* __WORDSIZE */
80
81-#if __WORDSIZE == 32 && defined(PLATFORM_FREEBSD)
82-#define PRItime_t       "d"
83-#else
84-#define PRItime_t       "ld"
85-#endif
86+#define PRItime_t       "jd"
87
88 /* transcoding */
89 #define TVH_NAME_LEN 32
90--- a/src/webui/webui.c
91+++ b/src/webui/webui.c
92@@ -886,9 +886,9 @@ http_dvr_list_playlist(http_connection_t
93     bandwidth = ((8*fsize) / (durration*1024.0));
94     strftime(buf, sizeof(buf), "%FT%T%z", localtime_r(&(de->de_start), &tm));
95
96-    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", durration, lang_str_get(de->de_title, NULL));
97+    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", (intmax_t)durration, lang_str_get(de->de_title, NULL));
98
99-    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", durration);
100+    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", (intmax_t)durration);
101     uuid = idnode_uuid_as_str(&de->de_id, ubuf);
102     htsbuf_qprintf(hq, "#EXT-X-STREAM-INF:PROGRAM-ID=%s,BANDWIDTH=%d\n", uuid, bandwidth);
103     htsbuf_qprintf(hq, "#EXT-X-PROGRAM-DATE-TIME:%s\n", buf);
104@@ -944,9 +944,9 @@ http_dvr_playlist(http_connection_t *hc,
105     strftime(buf, sizeof(buf), "%FT%T%z", localtime_r(&(de->de_start), &tm));
106
107     htsbuf_append_str(hq, "#EXTM3U\n");
108-    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", durration, lang_str_get(de->de_title, NULL));
109+    htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", (intmax_t)durration, lang_str_get(de->de_title, NULL));
110
111-    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", durration);
112+    htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", (intmax_t)durration);
113     uuid = idnode_uuid_as_str(&de->de_id, ubuf);
114     htsbuf_qprintf(hq, "#EXT-X-STREAM-INF:PROGRAM-ID=%s,BANDWIDTH=%d\n", uuid, bandwidth);
115     htsbuf_qprintf(hq, "#EXT-X-PROGRAM-DATE-TIME:%s\n", buf);
116--- a/src/dvr/dvr_rec.c
117+++ b/src/dvr/dvr_rec.c
118@@ -723,7 +723,7 @@ static const char *
119 dvr_sub_start(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
120 {
121   char buf[16];
122-  snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_start_time((dvr_entry_t *)aux, 0));
123+  snprintf(buf, sizeof(buf), "%"PRItime_t, (intmax_t)dvr_entry_get_start_time((dvr_entry_t *)aux, 0));
124   return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
125 }
126
127@@ -747,7 +747,7 @@ static const char *
128 dvr_sub_stop(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
129 {
130   char buf[16];
131-  snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_stop_time((dvr_entry_t *)aux));
132+  snprintf(buf, sizeof(buf), "%"PRItime_t, (intmax_t)dvr_entry_get_stop_time((dvr_entry_t *)aux));
133   return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
134 }
135
136--- a/src/epggrab/module.c
137+++ b/src/epggrab/module.c
138@@ -582,7 +582,7 @@ static void _epggrab_socket_handler ( ep
139
140   /* Process */
141   if ( data ) {
142-    tvhinfo(mod->subsys, "%s: grab took %"PRItime_t" seconds", mod->id, tm2 - tm1);
143+    tvhinfo(mod->subsys, "%s: grab took %"PRItime_t" seconds", mod->id, (intmax_t)(tm2 - tm1));
144     epggrab_module_parse(mod, data);
145
146   /* Failed */
147--- a/src/epggrab/module/opentv.c
148+++ b/src/epggrab/module/opentv.c
149@@ -497,7 +497,7 @@ opentv_parse_event_section_one
150                                        1, &save, &changes);
151       tvhdebug(LS_OPENTV, "find by time start %"PRItime_t " stop "
152                "%"PRItime_t " ch %"PRId64" eid %d = %p",
153-               ev.start, ev.stop, ch->ch_number, ev.eid, ebc);
154+               (intmax_t)ev.start, (intmax_t)ev.stop, ch->ch_number, ev.eid, ebc);
155       save |= epg_broadcast_set_dvb_eid(ebc, ev.eid, &changes);
156     } else {
157       ebc = epg_broadcast_find_by_eid(ch, ev.eid);
158--- a/src/webui/simpleui.c
159+++ b/src/webui/simpleui.c
160@@ -556,12 +556,12 @@ page_status(http_connection_t *hc,
161 		     "<title>%s</title>\n",
162 		     a.tm_year + 1900, a.tm_mon + 1, a.tm_mday,
163 		     a.tm_hour, a.tm_min,
164-		     de->de_start,
165-		     (time_t)dvr_entry_get_extra_time_pre(de),
166+		     (intmax_t)de->de_start,
167+		     (intmax_t)dvr_entry_get_extra_time_pre(de),
168 		     b.tm_year+1900, b.tm_mon + 1, b.tm_mday,
169 		     b.tm_hour, b.tm_min,
170-		     de->de_stop,
171-		     (time_t)dvr_entry_get_extra_time_post(de),
172+		     (intmax_t)de->de_stop,
173+		     (intmax_t)dvr_entry_get_extra_time_post(de),
174          buf);
175
176       rstatus = val2str(de->de_sched_state, recstatustxt);
177