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

From:
Tracey Emery <tracey@traceyemery.net>
Subject:
Re: gotwebd: another format specifier mismatch
To:
Christian Weisgerber <naddy@mips.inka.de>
Cc:
gameoftrees@openbsd.org
Date:
Tue, 19 Jul 2022 07:40:57 -0600

Download raw body.

Thread
On Sun, Jul 17, 2022 at 04:32:20PM +0200, Christian Weisgerber wrote:
> gotweb_get_time_str() has a variable time_t diff_time that is fed
> to a printf() function seven times.  We could cast it to long long
> each time, but that is ugly.  Maybe change the variable type instead?
> 
> As seen on FreeBSD:
> 
> gotweb.c:2788:8: warning: format specifies type 'long long' but the argument has
>  type 'long' [-Wformat]
>                             (diff_time / 60 / 60 / 24 / 365), years) == -1)
>                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> gotweb.c:2792:8: warning: format specifies type 'long long' but the argument has
>  type 'long' [-Wformat]
>                             (diff_time / 60 / 60 / 24 / (365 / 12)),
>                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> gotweb.c:2797:8: warning: format specifies type 'long long' but the argument has
>  type 'long' [-Wformat]
>                             (diff_time / 60 / 60 / 24 / 7), weeks) == -1)
>                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> gotweb.c:2801:8: warning: format specifies type 'long long' but the argument has
>  type 'long' [-Wformat]
>                             (diff_time / 60 / 60 / 24), days) == -1)
>                             ^~~~~~~~~~~~~~~~~~~~~~~~~~
> gotweb.c:2805:8: warning: format specifies type 'long long' but the argument has
>  type 'long' [-Wformat]
>                             (diff_time / 60 / 60), hours) == -1)
>                             ^~~~~~~~~~~~~~~~~~~~~
> gotweb.c:2808:38: warning: format specifies type 'long long' but the argument ha
> s type 'long' [-Wformat]
>                         if (asprintf(repo_age, "%lld %s", (diff_time / 60),
>                                                 ~~~~      ^~~~~~~~~~~~~~~~
>                                                 %ld
> gotweb.c:2812:38: warning: format specifies type 'long long' but the argument has type 'time_t' (aka 'long') [-Wformat]
>                         if (asprintf(repo_age, "%lld %s", diff_time,
>                                                 ~~~~      ^~~~~~~~~
>                                                 %ld
> 7 warnings generated.
> 
> 
> diff /home/naddy/got
> commit - d6267a62d388995cbc79bb58ce9db7946fda0554
> path + /home/naddy/got
> blob - 1f77113aefd24cce886b89debd8d60dc71eca3fd
> file + gotwebd/gotweb.c
> --- gotwebd/gotweb.c
> +++ gotwebd/gotweb.c
> @@ -2768,7 +2768,7 @@ const struct got_error *
>  gotweb_get_time_str(char **repo_age, time_t committer_time, int ref_tm)
>  {
>  	struct tm tm;
> -	time_t diff_time;
> +	long long diff_time;
>  	const char *years = "years ago", *months = "months ago";
>  	const char *weeks = "weeks ago", *days = "days ago";
>  	const char *hours = "hours ago",  *minutes = "minutes ago";
> 
> -- 
> Christian "naddy" Weisgerber                          naddy@mips.inka.de
> 

ok

-- 

Tracey Emery