2016-03-06 1:23 GMT+03:00 Christian Weisgerber <na...@mips.inka.de>: > > It looks like decided to use TM_ZONE as a wrapper for tm.tm_zone, > > until the tm_zone is gone. So, until the later happens (I found > > no usage of tm_zone in base, BTW), we should at least use TM_ZONE > > consistently. Okay for the patch? > > ok naddy@ > > Note that tm_gmtoff is wrapped the same way by TM_GMTOFF, and there > is a similar inconsistent use of tm_gmtoff in wcsftime.c
You're absolutely right. Here is an updated patch. Since %z relies on tm_gmtoff, all we can do is to expand %z to empty string, as specified in strftime(3). Okay for this version? -- WBR, Vadim Zhukov Index: wcsftime.c =================================================================== RCS file: /cvs/src/lib/libc/time/wcsftime.c,v retrieving revision 1.6 diff -u -p -r1.6 wcsftime.c --- wcsftime.c 9 Feb 2015 14:52:28 -0000 1.6 +++ wcsftime.c 6 Mar 2016 12:12:16 -0000 @@ -438,9 +438,11 @@ label: pt = _yconv(t->tm_year, TM_YEAR_BASE, 1, 1, pt, ptlim); continue; case 'Z': - if (t->tm_zone != NULL) +#ifdef TM_ZONE + if (t->TM_ZONE != NULL) pt = _sadd(t->TM_ZONE, pt, ptlim); else +#endif if (t->tm_isdst >= 0) pt = _sadd(tzname[t->tm_isdst != 0], pt, ptlim); @@ -451,13 +453,14 @@ label: */ continue; case 'z': +#ifdef TM_GMTOFF { int diff; wchar_t const * sign; if (t->tm_isdst < 0) continue; - diff = t->tm_gmtoff; + diff = t->TM_GMTOFF; if (diff < 0) { sign = L"-"; diff = -diff; @@ -469,6 +472,7 @@ label: (diff % MINSPERHOUR); pt = _conv(diff, L"%04d", pt, ptlim); } +#endif continue; case '+': pt = _fmt(Locale->date_fmt, t, pt, ptlim, warnp);