"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: gotadmin.c printf specifier/type fixes
To:
Christian Weisgerber <naddy@mips.inka.de>
Cc:
gameoftrees@openbsd.org
Date:
Sat, 25 Sep 2021 21:42:30 +0200

Download raw body.

Thread
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
> 
>