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