summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2015-10-22 20:01:32 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2015-10-22 20:01:32 (GMT)
commit543ec79118fa8f91fba4bff43d355d71c83b98f6 (patch)
tree81393d6b9ce224edf2d342dfa08b91b6e583fcfa
parent779154925282f5240e792f9b2e5b242a91005abb (diff)
downloadhdf5-543ec79118fa8f91fba4bff43d355d71c83b98f6.zip
hdf5-543ec79118fa8f91fba4bff43d355d71c83b98f6.tar.gz
hdf5-543ec79118fa8f91fba4bff43d355d71c83b98f6.tar.bz2
[svn-r28193] Rework VS2015 timezone patch for better fit to standards.
Tested: VS2015 VMs
-rw-r--r--src/H5Omtime.c26
-rw-r--r--src/H5win32defs.h8
2 files changed, 21 insertions, 13 deletions
diff --git a/src/H5Omtime.c b/src/H5Omtime.c
index cac5aca..32248fa 100644
--- a/src/H5Omtime.c
+++ b/src/H5Omtime.c
@@ -42,7 +42,7 @@ static size_t H5O_mtime_size(const H5F_t *f, hbool_t disable_shared, const void
static herr_t H5O_mtime_reset(void *_mesg);
static herr_t H5O_mtime_free(void *_mesg);
static herr_t H5O_mtime_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg, FILE *stream,
- int indent, int fwidth);
+ int indent, int fwidth);
/* This message derives from H5O message class */
const H5O_msg_class_t H5O_MSG_MTIME[1] = {{
@@ -148,7 +148,7 @@ H5O_mtime_new_decode(H5F_t H5_ATTR_UNUSED *f, hid_t H5_ATTR_UNUSED dxpl_id, H5O_
/* The return value */
if (NULL==(mesg = H5FL_MALLOC(time_t)))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
*mesg = (time_t)tmp_time;
/* Set return value */
@@ -186,6 +186,12 @@ 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
@@ -212,7 +218,7 @@ H5O_mtime_decode(H5F_t H5_ATTR_UNUSED *f, hid_t H5_ATTR_UNUSED dxpl_id, H5O_t H5
*/
HDmemset(&tm, 0, sizeof tm);
tm.tm_year = (p[0]-'0')*1000 + (p[1]-'0')*100 +
- (p[2]-'0')*10 + (p[3]-'0') - 1900;
+ (p[2]-'0')*10 + (p[3]-'0') - 1900;
tm.tm_mon = (p[4]-'0')*10 + (p[5]-'0') - 1;
tm.tm_mday = (p[6]-'0')*10 + (p[7]-'0');
tm.tm_hour = (p[8]-'0')*10 + (p[9]-'0');
@@ -227,11 +233,7 @@ H5O_mtime_decode(H5F_t H5_ATTR_UNUSED *f, hid_t H5_ATTR_UNUSED dxpl_id, H5O_t H5
the_time += tm.tm_gmtoff;
#elif defined(H5_HAVE_TIMEZONE)
#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;
- _get_timezone(&timezone);
+ HDget_timezone(&timezone);
#endif
/* GNU/Linux systems */
the_time -= timezone - (tm.tm_isdst ? 3600 : 0);
@@ -330,8 +332,8 @@ H5O_mtime_encode(H5F_t H5_ATTR_UNUSED *f, hbool_t H5_ATTR_UNUSED disable_shared,
/* encode */
tm = HDgmtime(mesg);
sprintf((char*)p, "%04d%02d%02d%02d%02d%02d",
- 1900+tm->tm_year, 1+tm->tm_mon, tm->tm_mday,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
+ 1900+tm->tm_year, 1+tm->tm_mon, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec);
FUNC_LEAVE_NOAPI(SUCCEED)
}
@@ -514,7 +516,7 @@ H5O_mtime_free(void *mesg)
*/
static herr_t
H5O_mtime_debug(H5F_t H5_ATTR_UNUSED *f, hid_t H5_ATTR_UNUSED dxpl_id, const void *_mesg, FILE *stream,
- int indent, int fwidth)
+ int indent, int fwidth)
{
const time_t *mesg = (const time_t *)_mesg;
struct tm *tm;
@@ -534,7 +536,7 @@ H5O_mtime_debug(H5F_t H5_ATTR_UNUSED *f, hid_t H5_ATTR_UNUSED dxpl_id, const voi
HDstrftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", tm);
HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- "Time:", buf);
+ "Time:", buf);
FUNC_LEAVE_NOAPI(SUCCEED)
}
diff --git a/src/H5win32defs.h b/src/H5win32defs.h
index 185e9b4..58e1412 100644
--- a/src/H5win32defs.h
+++ b/src/H5win32defs.h
@@ -84,7 +84,13 @@ 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 */
/* Non-POSIX functions */