summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2015-10-26 20:40:30 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2015-10-26 20:40:30 (GMT)
commitb7310b0d1f1042ed14928b378852e034231f6747 (patch)
tree3a43dec6213941e62ea903f4ff0a92a462c9ce58
parent00aaf8e6f45fed0e4a1dcce9de230826009e0b39 (diff)
downloadhdf5-b7310b0d1f1042ed14928b378852e034231f6747.zip
hdf5-b7310b0d1f1042ed14928b378852e034231f6747.tar.gz
hdf5-b7310b0d1f1042ed14928b378852e034231f6747.tar.bz2
[svn-r28229] HDFFV-9550: Rework timezone usage to localize the #ifdef blocks to a HDget_timezone function.
-rw-r--r--src/H5Omtime.c12
-rw-r--r--src/H5system.c31
-rw-r--r--src/H5win32defs.h6
3 files changed, 32 insertions, 17 deletions
diff --git a/src/H5Omtime.c b/src/H5Omtime.c
index 32248fa..d8c5305 100644
--- a/src/H5Omtime.c
+++ b/src/H5Omtime.c
@@ -186,12 +186,6 @@ H5O_mtime_decode(H5F_t H5_ATTR_UNUSED *f, hid_t H5_ATTR_UNUSED dxpl_id, H5O_t H5
int i;
struct tm tm;
void *ret_value = NULL; /* Return value */
-#if _MSC_VER >= 1900 // VS 2015
-// In gcc and in Visual Studio prior to VS 2015 'timezone' is a global
-// variable declared in time.h. That variable was deprecated and in VS 2015
-// is removed, with _get_timezone replacing it.
- long timezone = 0;
-#endif
FUNC_ENTER_NOAPI_NOINIT
@@ -232,11 +226,7 @@ H5O_mtime_decode(H5F_t H5_ATTR_UNUSED *f, hid_t H5_ATTR_UNUSED dxpl_id, H5O_t H5
/* BSD-like systems */
the_time += tm.tm_gmtoff;
#elif defined(H5_HAVE_TIMEZONE)
- #if _MSC_VER >= 1900 // VS 2015
- HDget_timezone(&timezone);
- #endif
- /* GNU/Linux systems */
- the_time -= timezone - (tm.tm_isdst ? 3600 : 0);
+ the_time -= HDget_timezone() - (tm.tm_isdst ? 3600 : 0);
#else
/*
* The catch-all. If we can't convert a character string universal
diff --git a/src/H5system.c b/src/H5system.c
index e00e5a5..098c109 100644
--- a/src/H5system.c
+++ b/src/H5system.c
@@ -586,6 +586,37 @@ void HDsrand(unsigned int seed)
/*-------------------------------------------------------------------------
+ * Function: HDget_timezone
+ *
+ * Purpose: Wrapper function for global variable timezone, if it exists
+ * on this system, or use the function if VS2015
+ *
+ * VS2015 removed the deprecated global variable timezone.
+ *
+ * Return: Success: The value of timezone
+ *
+ * Failure: Cannot fail.
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifdef H5_HAVE_TIMEZONE
+
+long HDget_timezone(void)
+{
+#if _MSC_VER >= 1900 // VS 2015
+// In gcc and in Visual Studio prior to VS 2015 'timezone' is a global
+// variable declared in time.h. That variable was deprecated and in VS 2015
+// is removed, with _get_timezone replacing it.
+ long timezone = 0;
+
+ #define HDget_timezone(V) _get_timezone(V);
+ HDget_timezone(&timezone);
+#endif
+ return timezone;
+}
+#endif /* H5_HAVE_TIMEZONE */
+
+/*-------------------------------------------------------------------------
* Function: Wgettimeofday
*
* Purpose: Wrapper function for gettimeofday on Windows systems
diff --git a/src/H5win32defs.h b/src/H5win32defs.h
index 58e1412..73d8417 100644
--- a/src/H5win32defs.h
+++ b/src/H5win32defs.h
@@ -84,12 +84,6 @@ struct timezone {
#define HDgetlogin() Wgetlogin()
#define HDsnprintf c99_snprintf /*varargs*/
#define HDvsnprintf c99_vsnprintf
-#if _MSC_VER >= 1900 // VS 2015
- // In gcc and in Visual Studio prior to VS 2015 'timezone' is a global
- // variable declared in time.h. That variable was deprecated and in VS 2015
- // is removed, with _get_timezone replacing it.
- #define HDget_timezone(V) _get_timezone(V);
-#endif
#endif /* H5_HAVE_VISUAL_STUDIO */