SHA256
1
0
forked from pool/timezone
timezone/tzcode-revert-02-301f794f3.patch

97 lines
2.2 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

commit 301f794f33d145b08fbf7f5247c8663d404fabb5
Author: Paul Eggert <eggert@cs.ucla.edu>
Date: Fri Feb 26 08:58:45 2016 -0800
Fix tzname redefinition in MS-Windows
Problem reported by Ian Abbott in:
http://mm.icann.org/pipermail/tz/2016-February/023289.html
* localtime.c (tzname): Dont define if HAVE_POSIX_DECLS,
as causes the Microsoft compiler to complain that tzname
is redeclared without dllimport.
* localtime.c, private.h (altzone): Do define even if
HAVE_POSIX_DECLS, since this is not a POSIX-specified variable.
diff --git a/localtime.c b/localtime.c
index e3bc763..276ce34 100644
--- a/localtime.c
+++ b/localtime.c
@@ -178,11 +178,6 @@ static struct state gmtmem;
static char lcl_TZname[TZ_STRLEN_MAX + 1];
static int lcl_is_set;
-char * tzname[2] = {
- (char *) wildabbr,
- (char *) wildabbr
-};
-
/*
** Section 4.12.3 of X3.159-1989 requires that
** Except for the strftime function, these functions [asctime,
@@ -193,10 +188,16 @@ char * tzname[2] = {
static struct tm tm;
-#ifdef USG_COMPAT
+#if !HAVE_POSIX_DECLS
+char * tzname[2] = {
+ (char *) wildabbr,
+ (char *) wildabbr
+};
+# ifdef USG_COMPAT
long timezone;
int daylight;
-#endif /* defined USG_COMPAT */
+# endif
+#endif
#ifdef ALTZONE
long altzone;
diff --git a/private.h b/private.h
index 6080e71..e23764d 100644
--- a/private.h
+++ b/private.h
@@ -386,8 +386,6 @@ time_t time(time_t *);
void tzset(void);
#endif
-#if !HAVE_POSIX_DECLS
-
/*
** Some time.h implementations don't declare asctime_r.
** Others might define it as a macro.
@@ -395,24 +393,24 @@ void tzset(void);
** Similarly for timezone, daylight, and altzone.
*/
-#ifndef asctime_r
+#if !HAVE_POSIX_DECLS
+# ifndef asctime_r
extern char * asctime_r(struct tm const *restrict, char *restrict);
-#endif
-
-#ifdef USG_COMPAT
-# ifndef timezone
-extern long timezone;
# endif
-# ifndef daylight
+# ifdef USG_COMPAT
+# ifndef timezone
+extern long timezone;
+# endif
+# ifndef daylight
extern int daylight;
+# endif
# endif
#endif
+
#if defined ALTZONE && !defined altzone
extern long altzone;
#endif
-#endif
-
/*
** The STD_INSPIRED functions are similar, but most also need
** declarations if time_tz is defined.