Index: distrib/sets/lists/comp/mi =================================================================== RCS file: /cvsroot/src/distrib/sets/lists/comp/mi,v retrieving revision 1.1906 diff -b -w -u -r1.1906 mi --- distrib/sets/lists/comp/mi 10 Aug 2014 17:07:04 -0000 1.1906 +++ distrib/sets/lists/comp/mi 17 Aug 2014 17:02:53 -0000 @@ -5888,7 +5888,6 @@ ./usr/share/man/cat3/ctermid.0 comp-c-catman .cat ./usr/share/man/cat3/ctime.0 comp-c-catman .cat ./usr/share/man/cat3/ctime_r.0 comp-c-catman .cat -./usr/share/man/cat3/ctime_rz.0 comp-c-catman .cat ./usr/share/man/cat3/ctype.0 comp-c-catman .cat ./usr/share/man/cat3/current_field.0 comp-c-catman .cat ./usr/share/man/cat3/current_item.0 comp-c-catman .cat @@ -9127,7 +9126,6 @@ ./usr/share/man/cat3/stresep.0 comp-c-catman .cat ./usr/share/man/cat3/strfmon.0 comp-c-catman .cat ./usr/share/man/cat3/strftime.0 comp-c-catman .cat -./usr/share/man/cat3/strftime_z.0 comp-c-catman .cat ./usr/share/man/cat3/string.0 comp-c-catman .cat ./usr/share/man/cat3/string_to_flags.0 comp-c-catman .cat ./usr/share/man/cat3/stringlist.0 comp-c-catman .cat @@ -9331,6 +9329,7 @@ ./usr/share/man/cat3/timezone.0 comp-c-catman .cat ./usr/share/man/cat3/tiparm.0 comp-c-catman .cat ./usr/share/man/cat3/tm.0 comp-c-catman .cat +./usr/share/man/cat3/tm_strftime.0 comp-c-catman .cat ./usr/share/man/cat3/tmpfile.0 comp-c-catman .cat ./usr/share/man/cat3/tmpnam.0 comp-c-catman .cat ./usr/share/man/cat3/toascii.0 comp-c-catman .cat @@ -9367,7 +9366,6 @@ ./usr/share/man/cat3/types.0 comp-c-catman .cat ./usr/share/man/cat3/tzalloc.0 comp-c-catman .cat ./usr/share/man/cat3/tzfree.0 comp-c-catman .cat -./usr/share/man/cat3/tzgetname.0 comp-c-catman .cat ./usr/share/man/cat3/tzset.0 comp-c-catman .cat ./usr/share/man/cat3/tzsetwall.0 comp-c-catman .cat ./usr/share/man/cat3/ualarm.0 comp-c-catman .cat @@ -12722,7 +12720,6 @@ ./usr/share/man/html3/ctermid.html comp-c-htmlman html ./usr/share/man/html3/ctime.html comp-c-htmlman html ./usr/share/man/html3/ctime_r.html comp-c-htmlman html -./usr/share/man/html3/ctime_rz.html comp-c-htmlman html ./usr/share/man/html3/ctype.html comp-c-htmlman html ./usr/share/man/html3/current_field.html comp-c-htmlman html ./usr/share/man/html3/current_item.html comp-c-htmlman html @@ -15896,7 +15893,6 @@ ./usr/share/man/html3/stresep.html comp-c-htmlman html ./usr/share/man/html3/strfmon.html comp-c-htmlman html ./usr/share/man/html3/strftime.html comp-c-htmlman html -./usr/share/man/html3/strftime_z.html comp-c-htmlman html ./usr/share/man/html3/string.html comp-c-htmlman html ./usr/share/man/html3/string_to_flags.html comp-c-htmlman html ./usr/share/man/html3/stringlist.html comp-c-htmlman html @@ -16084,6 +16080,7 @@ ./usr/share/man/html3/timezone.html comp-c-htmlman html ./usr/share/man/html3/tiparm.html comp-c-htmlman html ./usr/share/man/html3/tm.html comp-c-htmlman html +./usr/share/man/html3/tm_strftime.html comp-c-htmlman html ./usr/share/man/html3/tmpfile.html comp-c-htmlman html ./usr/share/man/html3/tmpnam.html comp-c-htmlman html ./usr/share/man/html3/toascii.html comp-c-htmlman html @@ -16120,7 +16117,6 @@ ./usr/share/man/html3/types.html comp-c-htmlman html ./usr/share/man/html3/tzalloc.html comp-c-htmlman html ./usr/share/man/html3/tzfree.html comp-c-htmlman html -./usr/share/man/html3/tzgetname.html comp-c-htmlman html ./usr/share/man/html3/tzset.html comp-c-htmlman html ./usr/share/man/html3/tzsetwall.html comp-c-htmlman html ./usr/share/man/html3/ualarm.html comp-c-htmlman html @@ -19465,7 +19461,6 @@ ./usr/share/man/man3/ctermid.3 comp-c-man .man ./usr/share/man/man3/ctime.3 comp-c-man .man ./usr/share/man/man3/ctime_r.3 comp-c-man .man -./usr/share/man/man3/ctime_rz.3 comp-c-man .man ./usr/share/man/man3/ctype.3 comp-c-man .man ./usr/share/man/man3/current_field.3 comp-c-man .man ./usr/share/man/man3/current_item.3 comp-c-man .man @@ -22701,7 +22696,6 @@ ./usr/share/man/man3/stresep.3 comp-c-man .man ./usr/share/man/man3/strfmon.3 comp-c-man .man ./usr/share/man/man3/strftime.3 comp-c-man .man -./usr/share/man/man3/strftime_z.3 comp-c-man .man ./usr/share/man/man3/string.3 comp-c-man .man ./usr/share/man/man3/string_to_flags.3 comp-c-man .man ./usr/share/man/man3/stringlist.3 comp-c-man .man @@ -22905,6 +22899,7 @@ ./usr/share/man/man3/timezone.3 comp-c-man .man ./usr/share/man/man3/tiparm.3 comp-c-man .man ./usr/share/man/man3/tm.3 comp-c-man .man +./usr/share/man/man3/tm_strftime.3 comp-c-man .man ./usr/share/man/man3/tmpfile.3 comp-c-man .man ./usr/share/man/man3/tmpnam.3 comp-c-man .man ./usr/share/man/man3/toascii.3 comp-c-man .man @@ -22941,7 +22936,6 @@ ./usr/share/man/man3/types.3 comp-c-man .man ./usr/share/man/man3/tzalloc.3 comp-c-man .man ./usr/share/man/man3/tzfree.3 comp-c-man .man -./usr/share/man/man3/tzgetname.3 comp-c-man .man ./usr/share/man/man3/tzset.3 comp-c-man .man ./usr/share/man/man3/tzsetwall.3 comp-c-man .man ./usr/share/man/man3/ualarm.3 comp-c-man .man Index: include/time.h =================================================================== RCS file: /cvsroot/src/include/time.h,v retrieving revision 1.43 diff -b -w -u -r1.43 time.h --- include/time.h 21 Apr 2013 17:54:56 -0000 1.43 +++ include/time.h 17 Aug 2014 17:03:11 -0000 @@ -198,24 +198,21 @@ void tzsetwall(void) __RENAME(__tzsetwall50); struct tm *offtime_r(const time_t *, long, struct tm *) __RENAME(__offtime_r50); -struct tm *localtime_rz(const timezone_t, const time_t * __restrict, +struct tm *localtime_rz(timezone_t __restrict, const time_t * __restrict, struct tm * __restrict) __RENAME(__localtime_rz50); -char *ctime_rz(const timezone_t, const time_t *, char *) __RENAME(__ctime_rz50); -time_t mktime_z(const timezone_t, struct tm *) __RENAME(__mktime_z50); -time_t timelocal_z(const timezone_t, struct tm *) __RENAME(__timelocal_z50); -time_t time2posix_z(const timezone_t, time_t) __RENAME(__time2posix_z50); -time_t posix2time_z(const timezone_t, time_t) __RENAME(__posix2time_z50); +time_t mktime_z(timezone_t __restrict, struct tm * __restrict) __RENAME(__mktime_z50); +time_t time2posix_z(timezone_t, time_t) __RENAME(__time2posix_z50); +time_t posix2time_z(timezone_t, time_t) __RENAME(__posix2time_z50); timezone_t tzalloc(const char *) __RENAME(__tzalloc50); -void tzfree(const timezone_t) __RENAME(__tzfree50); -const char *tzgetname(const timezone_t, int) __RENAME(__tzgetname50); +void tzfree(timezone_t) __RENAME(__tzfree50); #endif -size_t strftime_lz(const timezone_t, char * __restrict, size_t, +size_t tm_strftime_l(char * __restrict, size_t, const char * __restrict, const struct tm * __restrict, locale_t) - __attribute__((__format__(__strftime__, 4, 0))); -size_t strftime_z(const timezone_t, char * __restrict, size_t, + __attribute__((__format__(__strftime__, 3, 0))); +size_t tm_strftime(char * __restrict, size_t, const char * __restrict, const struct tm * __restrict) - __attribute__((__format__(__strftime__, 4, 0))); + __attribute__((__format__(__strftime__, 3, 0))); char *strptime_l(const char * __restrict, const char * __restrict, struct tm * __restrict, locale_t); Index: lib/libc/compat/include/time.h =================================================================== RCS file: /cvsroot/src/lib/libc/compat/include/time.h,v retrieving revision 1.3 diff -b -w -u -r1.3 time.h --- lib/libc/compat/include/time.h 16 Dec 2010 18:38:06 -0000 1.3 +++ lib/libc/compat/include/time.h 17 Aug 2014 17:03:11 -0000 @@ -92,15 +92,12 @@ int32_t timeoff(struct tm *, long); int32_t time2posix(int32_t); int32_t posix2time(int32_t); -struct tm *localtime_rz(const timezone_t, const int32_t * __restrict, +struct tm *localtime_rz(timezone_t __restrict, const int32_t * __restrict, struct tm * __restrict); -char *ctime_rz(const timezone_t, const int32_t *, char *); -int32_t mktime_z(const timezone_t, struct tm *); -int32_t timelocal_z(const timezone_t, struct tm *); -int32_t time2posix_z(const timezone_t, int32_t); -int32_t posix2time_z(const timezone_t, int32_t); +int32_t mktime_z(timezone_t __restrict, struct tm * __restrict); +int32_t time2posix_z(timezone_t, int32_t); +int32_t posix2time_z(timezone_t, int32_t); timezone_t tzalloc(const char *); -void tzfree(const timezone_t); -const char *tzgetname(const timezone_t, int); +void tzfree(timezone_t); #endif /* !_COMPAT_TIME_H_ */ Index: lib/libc/compat/time/compat_localtime.c =================================================================== RCS file: /cvsroot/src/lib/libc/compat/time/compat_localtime.c,v retrieving revision 1.3 diff -b -w -u -r1.3 compat_localtime.c --- lib/libc/compat/time/compat_localtime.c 21 Feb 2011 22:07:44 -0000 1.3 +++ lib/libc/compat/time/compat_localtime.c 17 Aug 2014 17:03:11 -0000 @@ -16,7 +16,6 @@ #ifdef __weak_alias __weak_alias(ctime_r,_ctime_r) -__weak_alias(ctime_rz,_ctime_rz) __weak_alias(gmtime_r,_gmtime_r) __weak_alias(localtime_r,_localtime_r) __weak_alias(localtime_rz,_localtime_rz) @@ -35,9 +34,6 @@ __warn_references(ctime_r, "warning: reference to compatibility ctime_r();" " include for correct reference") -__warn_references(ctime_rz, - "warning: reference to compatibility ctime_rz();" - " include for correct reference") __warn_references(gmtime_r, "warning: reference to compatibility gmtime_r();" " include for correct reference") Index: lib/libc/include/namespace.h =================================================================== RCS file: /cvsroot/src/lib/libc/include/namespace.h,v retrieving revision 1.174 diff -b -w -u -r1.174 namespace.h --- lib/libc/include/namespace.h 13 Jun 2014 15:45:05 -0000 1.174 +++ lib/libc/include/namespace.h 17 Aug 2014 17:03:11 -0000 @@ -244,7 +244,6 @@ #define csetexpandtc _csetexpandtc #define ctermid _ctermid #define ctime_r _ctime_r -#define ctime_rz _ctime_rz #define daemon _daemon #define dbopen _dbopen #define devname _devname @@ -629,8 +628,6 @@ #define strdup _strdup #define stresep _stresep #define strftime_l _strftime_l -#define strftime_lz _strftime_lz -#define strftime_z _strftime_z #define strndup _strndup #define strncasecmp _strncasecmp #define strptime _strptime @@ -704,6 +701,8 @@ #define timelocal _timelocal #define timeoff _timeoff #define times _times +#define tm_strftime _tm_strftime +#define tm_strftime_l _tm_strftime_l #define ttyname _ttyname #define ttyname_r _ttyname_r #define ttyslot _ttyslot Index: lib/libc/time/Makefile.inc =================================================================== RCS file: /cvsroot/src/lib/libc/time/Makefile.inc,v retrieving revision 1.18 diff -b -w -u -r1.18 Makefile.inc --- lib/libc/time/Makefile.inc 16 Jan 2014 20:31:43 -0000 1.18 +++ lib/libc/time/Makefile.inc 17 Aug 2014 17:03:11 -0000 @@ -8,7 +8,6 @@ CPPFLAGS+=-DALL_STATE -DUSG_COMPAT MLINKS+=ctime.3 ctime_r.3 \ - ctime.3 ctime_rz.3 \ ctime.3 asctime.3 \ ctime.3 asctime_r.3 \ ctime.3 difftime.3 \ @@ -21,7 +20,6 @@ ctime.3 mktime_z.3 \ ctime.3 tzalloc.3 \ ctime.3 tzfree.3 \ - ctime.3 tzgetname.3 \ getdate.3 getdate_err.3 \ offtime.3 offtime_r.3 \ offtime.3 timeoff.3 \ @@ -32,6 +30,6 @@ time2posix.3 time2posix_z.3 \ tzset.3 daylight.3 \ tzset.3 tzsetwall.3 \ - strftime.3 strftime_z.3 + strftime.3 tm_strftime.3 COPTS.strftime.c = -Wno-format-nonliteral Index: lib/libc/time/ctime.3 =================================================================== RCS file: /cvsroot/src/lib/libc/time/ctime.3,v retrieving revision 1.50 diff -b -w -u -r1.50 ctime.3 --- lib/libc/time/ctime.3 15 Aug 2014 11:04:07 -0000 1.50 +++ lib/libc/time/ctime.3 17 Aug 2014 17:03:11 -0000 @@ -10,7 +10,6 @@ .Nm asctime_r , .Nm ctime , .Nm ctime_r , -.Nm ctime_rz , .Nm difftime , .Nm gmtime , .Nm gmtime_r , @@ -20,7 +19,6 @@ .Nm mktime , .Nm mktime_z , .Nm tzalloc , -.Nm tzgetname , .Nm tzfree , .Nd convert date and time .Sh LIBRARY @@ -36,8 +34,6 @@ .Fn ctime "const time_t *clock" .Ft char * .Fn ctime_r "const time_t *clock" "char *buf" -.Ft char * -.Fn ctime_rz "const timezone_t tz" "const time_t *clock" "char *buf" .Ft double .Fn difftime "time_t time1" "time_t time0" .Ft struct tm * @@ -49,17 +45,16 @@ .Ft struct tm * .Fn localtime_r "const time_t * restrict clock" "struct tm * restrict result" .Ft struct tm * -.Fn localtime_rz "const timezone_t tz" "const time_t * restrict clock" "struct tm * restrict result" +.Fn localtime_rz "timezone_t restrict tz" "const time_t * restrict clock" "struct tm * restrict result" .Ft time_t .Fn mktime "struct tm *tm" .Ft time_t -.Fn mktime_z "const timezone_t tz" "struct tm *tm" +.Fn mktime_z "timezone_t restrict tz" "struct tm * restrict tm" .Ft timezone_t .Fn tzalloc "const char *zone" .Ft void -.Fn tzfree "const timezone_t tz" +.Fn tzfree "timezone_t tz" .Ft const char * -.Fn tzgetname "const timezone_t tz" "int isdst" .Sh DESCRIPTION The .Nm @@ -127,18 +122,6 @@ .Fa buf argument, which should be 26 or more bytes long, instead of using a global static buffer. -.It Fn ctime_rz "tz" "clock" "buf" -The -.Fn ctime_rz -function is similar to -.Fn ctime_r , -but it also takes a -.Ft "const timezone_t" -argument, as returned by a previous call to -.Fn tzalloc , -or a null pointer denoting -Coordinated Universal Time -.Pq Tn UTC . .It Fn difftime "time1" "time2" The .Fn difftime @@ -200,7 +183,7 @@ function is similar to .Fn localtime_r , but it also takes a -.Ft "const timezone_t" +.Ft timezone_t argument, returned by a previous call to .Fn tzalloc , or a null pointer denoting @@ -280,7 +263,7 @@ function is similar to .Fn mktime but it also takes a -.Ft "const timezone_t" +.Ft timezone_t argument, returned by a previous call to .Fn tzalloc , or a null pointer denoting @@ -292,8 +275,7 @@ function takes as an argument a timezone name and returns a .Ft timezone_t object suitable to be used in the -.Fn ctime_rz , -.Fn localtime_rz , +.Fn localtime_rz and .Fn mktime_z functions. @@ -321,23 +303,6 @@ .Fa tz , which was previously allocated by .Fn tzalloc . -.It Fn "tzgetname" -Finally, -.Fn tzgetname -returns the name for the given -.Fa tz . -If -.Fa isdst -is -.Va 0 , -the call is equivalent to -.Va tzname[0] . -If -.Fa isdst -is set to -.Va 1 -the call is equivalent to -.Va tzname[1] . .El .Pp Declarations of all the functions and externals, and the @@ -389,11 +354,10 @@ and .Fn ctime functions return a pointer to a static character buffer, and the -.Fn asctime_r , -.Fn ctime_r , +.Fn asctime_r and -.Fn ctime_rz -function return a pointer to the user-supplied buffer. +.Fn ctime_r +functions return a pointer to the user-supplied buffer. On failure they all return .Dv NULL and no errors are defined for them. Index: lib/libc/time/localtime.c =================================================================== RCS file: /cvsroot/src/lib/libc/time/localtime.c,v retrieving revision 1.85 diff -b -w -u -r1.85 localtime.c --- lib/libc/time/localtime.c 16 Aug 2014 16:22:21 -0000 1.85 +++ lib/libc/time/localtime.c 17 Aug 2014 17:03:11 -0000 @@ -286,19 +286,6 @@ return result; } -const char * -tzgetname(const timezone_t sp, int isdst) -{ - int i; - for (i = 0; i < sp->timecnt; ++i) { - const struct ttinfo *const ttisp = &sp->ttis[sp->types[i]]; - - if (ttisp->tt_isdst == isdst) - return &sp->chars[ttisp->tt_abbrind]; - } - return NULL; -} - static void settzname_z(timezone_t sp) { @@ -1728,17 +1715,6 @@ return asctime_r(rtm, buf); } -char * -ctime_rz(const timezone_t sp, const time_t * timep, char *buf) -{ - struct tm mytm, *rtm; - - rtm = localtime_rz(sp, timep, &mytm); - if (rtm == NULL) - return NULL; - return asctime_r(rtm, buf); -} - /* ** Adapted from code provided by Robert Elz, who writes: ** The "best" way to do mktime I think is based on an idea of Bob @@ -2158,14 +2134,6 @@ #ifdef STD_INSPIRED time_t -timelocal_z(const timezone_t sp, struct tm *const tmp) -{ - if (tmp != NULL) - tmp->tm_isdst = -1; /* in case it wasn't initialized */ - return mktime_z(sp, tmp); -} - -time_t timelocal(struct tm *const tmp) { if (tmp != NULL) Index: lib/libc/time/strftime.3 =================================================================== RCS file: /cvsroot/src/lib/libc/time/strftime.3,v retrieving revision 1.30 diff -b -w -u -r1.30 strftime.3 --- lib/libc/time/strftime.3 20 Sep 2013 19:06:54 -0000 1.30 +++ lib/libc/time/strftime.3 17 Aug 2014 17:03:11 -0000 @@ -37,7 +37,7 @@ .Os .Sh NAME .Nm strftime , -.Nm strftime_z +.Nm tm_strftime .Nd format date and time .Sh LIBRARY .Lb libc @@ -46,7 +46,7 @@ .Ft size_t .Fn strftime "char * restrict buf" "size_t maxsize" "const char * restrict format" "const struct tm * restrict timeptr" .Ft size_t -.Fn strftime_z "const timezone_t tz" "char * restrict buf" "size_t maxsize" "const char * restrict format" "const struct tm * restrict timeptr" +.Fn tm_strftime "char * restrict buf" "size_t maxsize" "const char * restrict format" "const struct tm * restrict timeptr" .Sh DESCRIPTION The .Fn strftime @@ -201,13 +201,15 @@ .El .Pp The -.Fn strftime_z +.Fn tm_strftime function is similar to .Fn strftime , -but it also takes a -.Ft "const timezone_t" -.Fa tz -argument. +except that it takes its time zone information from the +.Fa timeptr 's +.Fa tm_gmtoff +and +.Fa tm_zone +members instead of inferring it (sometimes incorrectly) from global settings. .Sh SEE ALSO .Xr date 1 , .Xr printf 1 , Index: lib/libc/time/strftime.c =================================================================== RCS file: /cvsroot/src/lib/libc/time/strftime.c,v retrieving revision 1.31 diff -b -w -u -r1.31 strftime.c --- lib/libc/time/strftime.c 15 Aug 2014 11:04:07 -0000 1.31 +++ lib/libc/time/strftime.c 17 Aug 2014 17:03:11 -0000 @@ -27,17 +27,6 @@ #include "private.h" /* -** We don't use these extensions in strftime operation even when -** supported by the local tzcode configuration. A strictly -** conforming C application may leave them in undefined state. -*/ - -#ifdef _LIBC -#undef TM_ZONE -#undef TM_GMTOFF -#endif - -/* ** Copyright (c) 1989, 1993 ** The Regents of the University of California. All rights reserved. ** @@ -76,8 +65,8 @@ #ifdef __weak_alias __weak_alias(strftime_l, _strftime_l) -__weak_alias(strftime_lz, _strftime_lz) -__weak_alias(strftime_z, _strftime_z) +__weak_alias(tm_strftime_l, _tm_strftime_l) +__weak_alias(tm_strftime, _tm_strftime) #endif #include "sys/localedef.h" @@ -85,9 +74,11 @@ ((_TimeLocale *)((loc)->part_impl[(size_t)LC_TIME])) #define c_fmt d_t_fmt +static size_t _format_time(char *, size_t, const char *, const struct tm *, + locale_t, int); static char * _add(const char *, char *, const char *); static char * _conv(int, const char *, char *, const char *); -static char * _fmt(const timezone_t, const char *, const struct tm *, char *, +static char * _fmt(int, const char *, const struct tm *, char *, const char *, int *, locale_t); static char * _yconv(int, int, int, int, char *, const char *); @@ -103,16 +94,24 @@ #define IN_ALL 3 size_t -strftime_z(const timezone_t sp, char * __restrict s, size_t maxsize, +tm_strftime(char * __restrict s, size_t maxsize, const char * __restrict format, const struct tm * __restrict t) { - return strftime_lz(sp, s, maxsize, format, t, _current_locale()); + return tm_strftime_l(s, maxsize, format, t, _current_locale()); } size_t -strftime_lz(const timezone_t sp, char *const s, const size_t maxsize, +tm_strftime_l(char *const s, const size_t maxsize, const char *const format, const struct tm *const t, locale_t loc) { + return _format_time(s, maxsize, format, t, loc, 1); +} + +static size_t +_format_time(char *const s, const size_t maxsize, + const char *const format, const struct tm *const t, locale_t loc, + int sp) +{ char * p; int warn; @@ -142,7 +141,7 @@ } static char * -_fmt(const timezone_t sp, const char *format, const struct tm *const t, +_fmt(int sp, const char *format, const struct tm *const t, char *pt, const char *const ptlim, int *warnp, locale_t loc) { for ( ; *format; ++format) { @@ -472,15 +471,10 @@ pt, ptlim); continue; case 'Z': -#ifdef TM_ZONE - if (t->TM_ZONE != NULL) - pt = _add(t->TM_ZONE, pt, ptlim); - else -#endif /* defined TM_ZONE */ - if (t->tm_isdst >= 0) - pt = _add((sp ? - tzgetname(sp, t->tm_isdst) : - tzname[t->tm_isdst != 0]), + if (sp && t->tm_zone != NULL) + pt = _add(t->tm_zone, pt, ptlim); + else if (t->tm_isdst >= 0) + pt = _add(tzname[t->tm_isdst != 0], pt, ptlim); /* ** C99 says that %Z must be replaced by the @@ -495,9 +489,9 @@ if (t->tm_isdst < 0) continue; -#ifdef TM_GMTOFF - diff = (int)t->TM_GMTOFF; -#else /* !defined TM_GMTOFF */ + if (sp) + diff = (int)t->tm_gmtoff; + else { /* ** C99 says that the UT offset must ** be computed by looking only at @@ -559,7 +553,7 @@ diff = (intmax_t)gct - (intmax_t)lct; } #endif /* defined STD_INSPIRED */ -#endif /* !defined TM_GMTOFF */ + } if (diff < 0) { sign = "-"; diff = -diff; @@ -599,8 +593,7 @@ strftime(char * const s, const size_t maxsize, const char * const format, const struct tm * const t) { - tzset(); - return strftime_z(NULL, s, maxsize, format, t); + return strftime_l(s, maxsize, format, t, _current_locale()); } size_t @@ -608,7 +601,7 @@ const struct tm * __restrict t, locale_t loc) { tzset(); - return strftime_lz(NULL, s, maxsize, format, t, loc); + return _format_time(s, maxsize, format, t, loc, 0); } static char * Index: lib/libc/time/time2posix.3 =================================================================== RCS file: /cvsroot/src/lib/libc/time/time2posix.3,v retrieving revision 1.18 diff -b -w -u -r1.18 time2posix.3 --- lib/libc/time/time2posix.3 15 Aug 2014 11:04:07 -0000 1.18 +++ lib/libc/time/time2posix.3 17 Aug 2014 17:03:12 -0000 @@ -15,11 +15,11 @@ .Ft time_t .Fn time2posix "time_t t" .Ft time_t -.Fn time2posix_z "const timezone_t tz" "time_t t" +.Fn time2posix_z "timezone_t tz" "time_t t" .Ft time_t .Fn posix2time "time_t t" .Ft time_t -.Fn posix2time_z "const timezone_t tz" "time_t t" +.Fn posix2time_z "timezone_t tz" "time_t t" .Sh DESCRIPTION .St -p1003.1 legislates that a Index: share/man/man3/tm.3 =================================================================== RCS file: /cvsroot/src/share/man/man3/tm.3,v retrieving revision 1.4 diff -b -w -u -r1.4 tm.3 --- share/man/man3/tm.3 14 Apr 2011 05:45:34 -0000 1.4 +++ share/man/man3/tm.3 17 Aug 2014 17:03:12 -0000 @@ -95,7 +95,7 @@ was returned by .Xr localtime_rz 3 and the -.Ft "const timezone_t" +.Ft timezone_t .Fa tz argument has been freed by .Xr tzfree 3 .