On Fri, Mar 22, 2019 at 7:23 AM Stefan Sperling <s...@stsp.name> wrote:
> > INT64_C() returns a 'LL'-suffixed constant on OpenBSD, and int64_t > is indeed a 'long long': > *That's* what I've been missing, thanks! BSD is wrong. It should have been using the "fastest" shortest-int that represented 64-bits, but I'm sure this is just legacy going back to 32IL/64Q architectures. Irrespective of that... > Type checking in printf format strings is stricter than APR's configure > script logic. > s/is/was/ ... APR_CHECK_TYPES_FMT_COMPATIBLE corrects for printf patterns and types. It would still not pick up the INT64_C exception because we didn't test our constants, only the type apr_int64_t (aka long). Relying entirely on inttypes.h is a 100% solve (modulo a catch for missing format macros) that should work around all platform quirks.