On 09.01.2019 23:47, William A Rowe Jr wrote: > On Wed, Jan 9, 2019 at 3:26 PM Branko Čibej <br...@apache.org> wrote: > >>> On Wed, Jan 9, 2019 at 9:38 AM Stefan Sperling <s...@apache.org> wrote: >>> >>>> APR's configure script logic results in inconsistent type and format >>>> string definitions on OpenBSD. apr_off_t is defined as 'long long' >>>> but APR_OFF_T_FMT is defined as "ld". >>>> >>>> /home/stsp/svn/src/httpd-2.4.37/server/util_expr_eval.c:1144:56: error: >>>> format specifies type 'long' but the argument has type 'apr_off_t' >>>> (aka 'long long') [-Werror,-Wformat] >>>> >>>> return apr_psprintf(ctx->p, "%" APR_OFF_T_FMT, sb.size); >>>> >>>> This happens because off_t is defined as 'long long', and because >>>> sizeof(long) and sizeof(long long) are both 8, on OpenBSD/amd64. >>>> >>>> This looks like a generic problem, but I am not sure the existing logic >>>> could >>>> be make to work in general. Switching the order of checks makes the >>>> configure >>>> script produce valid results on OpenBSD but I am not sure if that would >> be >>>> a >>>> correct thing to do on other platforms. >> How come this works on x86_64 Linux, which is also LP64? >> > As a cautionary measure the compiler in here disambiguates > printf formatting int from long from long long, even if they are > identities. This helps detect invalid code as the code is moved > from the current x86_64 model to one supporting longer long long > or shorter long types. The compiler is right, it's beneficial.
I get that part, my question was related to APR's configure setting the type of apr_off_t and its format specifier correctly on Linux but incorrectly on OpenBSD, even though they're equivalent. -- Brane