From: Stefan Sperling Subject: Re: gotadmin.c printf specifier/type fixes To: Christian Weisgerber Cc: gameoftrees@openbsd.org Date: Sat, 25 Sep 2021 21:42:30 +0200 On Sat, Sep 25, 2021 at 09:27:48PM +0200, Christian Weisgerber wrote: > The usual problem, off_t has a different underlying type depending on > the platform: > > gotadmin.c:786:7: warning: format specifies type 'unsigned long long' but the argument has type 'off_t' (aka 'long') [-Wformat] > base_offset) == -1) { > ^~~~~~~~~~~ > gotadmin.c:817:57: warning: format specifies type 'unsigned long long' but the argument has type 'off_t' (aka 'long') [-Wformat] > printf("%s %s at %llu size %s%s\n", id_str, type_str, offset, > ~~~~ ^~~~~~ > %ld > gotadmin.c:820:59: warning: format specifies type 'unsigned long long' but the argument has type 'off_t' (aka 'long') [-Wformat] > printf("%s %s at %llu size %llu%s\n", id_str, type_str, offset, > ~~~~ ^~~~~~ > %ld > gotadmin.c:821:7: warning: format specifies type 'unsigned long long' but the argument has type 'off_t' (aka 'long') [-Wformat] > size, delta_str ? delta_str : ""); > ^~~~ > > Also, off_t is implied to be a signed type by POSIX since lseek > returns -1 on failure. > > OK? Yes, makes sense. Thanks! > diff 474b498221b19828b2bcb8e5c5b2ced63acbd1a6 /home/naddy/got > blob - a6398ccb64350775f2db703c7520234c180aefd1 > file + gotadmin/gotadmin.c > --- gotadmin/gotadmin.c > +++ gotadmin/gotadmin.c > @@ -780,8 +780,8 @@ list_pack_cb(void *arg, struct got_object_id *id, int > break; > case GOT_OBJ_TYPE_OFFSET_DELTA: > type_str = "offset-delta"; > - if (asprintf(&delta_str, " base-offset %llu", > - base_offset) == -1) { > + if (asprintf(&delta_str, " base-offset %lld", > + (long long)base_offset) == -1) { > err = got_error_from_errno("asprintf"); > goto done; > } > @@ -812,11 +812,12 @@ list_pack_cb(void *arg, struct got_object_id *id, int > s = scaled; > while (isspace((unsigned char)*s)) > s++; > - printf("%s %s at %llu size %s%s\n", id_str, type_str, offset, > - s, delta_str ? delta_str : ""); > + printf("%s %s at %lld size %s%s\n", id_str, type_str, > + (long long)offset, s, delta_str ? delta_str : ""); > } else { > - printf("%s %s at %llu size %llu%s\n", id_str, type_str, offset, > - size, delta_str ? delta_str : ""); > + printf("%s %s at %lld size %lld%s\n", id_str, type_str, > + (long long)offset, (long long)size, > + delta_str ? delta_str : ""); > } > done: > free(id_str); > -- > Christian "naddy" Weisgerber naddy@mips.inka.de > >