Commit 76a6263 breaks compilation
I couldn't find a bug report for this, so I'm guessing the following patch aims to provide a 64-bit format specifier for time_t on 32-bit systems.
The problem is the PRItime_t format specifier is changed on all systems except for 32-bit FreeBSD, even though the description says it's for 32-bit systems. This breaks compilation on several platforms. If I understand correctly, time_t requires an "ld" format specifier on 64-bit systems, but PRId64 expands to "lld" on some 64 bit systems. This generates a format specification error even though 'long int' and 'long long int' are (probably) the same on 64-bit systems. So, you need to cast time_t to work with the PRId64 macro specifier. This is ugly, but should work on both 32 & 64-bit systems.
Something like this in otamux.c?
tvhtrace(LS_EPGGRAB, "next ota start event in %"PRId64" seconds", (__INT64_TYPE__)next - time(NULL));
Furthermore, if the goal was provide a 64-bit format specifier for time_t on 32-bit systems, wouldn't something like the following in tvheadend.h be preferable?
#if __WORDSIZE == 32 && defined(PLATFORM_FREEBSD) #define PRItime_t "d" #elif __WORDSIZE == 32 #define PRItime_t "lld" #else #define PRItime_t "ld" #endif
Updated by Flole Systems 15 days ago
- Status changed from New to Fixed