git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: rs/strbuf-addftime-zZ, was Re: What's cooking in git.git (Jun 2017, #04; Tue, 13)

From
Jeff King <peff@peff.net>
Date
Jun 14, 2017, 11:10 UTC
Message-ID
<20170614111043.xlfsgclbyrqektb3@sigill.intra.peff.net>
In-Reply-To
<alpine.DEB.2.21.1.1706141245520.171564@virtualbox>
On Wed, Jun 14, 2017 at 12:57:06PM +0200, Johannes Schindelin wrote:
Show 36 quoted lines
> Hi Junio,
> 
> On Tue, 13 Jun 2017, Junio C Hamano wrote:
> 
> > * rs/strbuf-addftime-zZ (2017-06-10) 2 commits
> >  - date: use localtime() for "-local" time formats
> >  - strbuf: let strbuf_addftime handle %z and %Z itself
> > 
> >  As there is no portable way to pass timezone information to
> >  strftime, some output format from "git log" and friends are
> >  impossible to produce.  Teach our own strbuf_addftime to replace %z
> >  and %Z with caller-supplied values to help working around this.
> > 
> >  Will merge to 'next'.
> 
> Hold on. Have you tried to build this branch?
> 
> -- snip --
>     CC date.o
> date.c:63:36: error: unknown type name ‘timestamp_t’
>  static struct tm *time_to_tm_local(timestamp_t time)
>                                     ^
> date.c: In function ‘show_date’:
> date.c:211:8: error: implicit declaration of function ‘time_to_tm_local’
> [-Werror=implicit-function-declaration]
>    tm = time_to_tm_local(time);
>         ^
> date.c:211:6: error: assignment makes pointer from integer without a cast
> [-Werror=int-conversion]
>    tm = time_to_tm_local(time);
>       ^
> cc1: all warnings being treated as errors
> -- snap --
> 
> I would expect this to be rebased *at least* to dddbad728c9 (timestamp_t:
> a new data type for timestamps, 2017-04-26).

Yeah, the timestamp_t mentions are from my patch (the top one). I built it applying René's on the current master and then building on top. I suspect Junio didn't test it in isolation, but only merged to "pu", where it would be OK.

Show 10 quoted lines
> But even then, it fails in t0006 on Windows with this error:
> 
> -- snip --
> ++ eval 'diff -u "$@" '
> +++ diff -u expect actual
> --- expect      2017-06-14 10:53:40.126136900 +0000
> +++ actual      2017-06-14 10:53:40.171146800 +0000
> @@ -1 +1 @@
> -1466000000 +0200 -> 2016-06-15 14:13:20 +0000 (UTC)
> +1466000000 +0200 -> 2016-06-15 14:13:20 UTC (UTC)

Ugh, I was worried about that some systems might display timezones differently (that's why I _didn't_ check %Z in the EST5 case). But I must admit this was not an incompatibility I was expecting. It looks like your system strftime() turns %z into "UTC". POSIX says:

  %z
    Replaced by the offset from UTC in the ISO 8601:2000 standard format
    (+hhmm or -hhmm), or by no characters if no timezone is
    determinable.

So it seems like the mingw strftime is violating POSIX. I don't see an easy solution beyond marking this as !MINGW. Though if we wanted a partial test, we could test %z and %Z separately.

-Peff
Previous: Johannes SchindelinNext: René Scharfe
Message 7 of 13 in “What's cooking in git.git (Jun 2017, #04; Tue, 13)”
  1. Junio C HamanoJun 13, 2017
  2. Jonathan NiederJun 14, 2017
  3. Junio C HamanoJun 15, 2017
  4. Lars SchneiderJun 14, 2017
  5. Torsten BögershausenJun 14, 2017
  6. rs/strbuf-addftime-zZ, was Re: What's cooking in git.git (Jun 2017, #04; Tue, 13)Johannes Schindelin, Jun 14, 2017
  7. Jeff KingJun 14, 2017
  8. René ScharfeJun 14, 2017
  9. Johannes SchindelinJun 14, 2017
  10. René ScharfeJun 14, 2017
  11. Jeff KingJun 15, 2017
  12. René ScharfeJun 15, 2017
  13. Junio C HamanoJun 14, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.