diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/H5private.h | 5 | ||||
-rw-r--r-- | src/H5system.c | 46 | ||||
-rw-r--r-- | src/H5win32defs.h | 16 |
3 files changed, 62 insertions, 5 deletions
diff --git a/src/H5private.h b/src/H5private.h index 43b8a95..cb776de 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -1156,8 +1156,11 @@ H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...); #define HDstrchr(S,C) strchr(S,C) #endif /* HDstrchr */ #ifndef HDstrcmp - #define HDstrcmp(X,Y) strcmp(X,Y) + #define HDstrcmp(X,Y) strcmp(X,Y) #endif /* HDstrcmp */ +#ifndef HDstrcasecmp + #define HDstrcasecmp(X,Y) strcasecmp(X,Y) +#endif /* HDstrcasecmp */ #ifndef HDstrcoll #define HDstrcoll(X,Y) strcoll(X,Y) #endif /* HDstrcoll */ diff --git a/src/H5system.c b/src/H5system.c index 8956e9b..36ec1c1 100644 --- a/src/H5system.c +++ b/src/H5system.c @@ -580,6 +580,52 @@ HDremove_all(const char *fname) } #endif +/*------------------------------------------------------------------------- + * Function: HDgettimeofday + * + * Purpose: Wrapper function for gettimeofday on Windows systems + * + * This function can get the time as well as a timezone + * + * Return: 0 + * + * This implementation is taken from the Cygwin source distribution at + * src/winsup/mingw/mingwex/gettimeofday.c + * + * The original source code was contributed by + * Danny Smith <dannysmith@users.sourceforge.net> + * and released in the public domain. + * + * Programmer: Scott Wegner + * May 19, 2009 + * + *------------------------------------------------------------------------- + */ +#if !defined(H5_HAVE_GETTIMEOFDAY) && defined(_WIN32) + +/* Offset between 1/1/1601 and 1/1/1970 in 100 nanosec units */ +#define _W32_FT_OFFSET (116444736000000000ULL) + +int +HDgettimeofday(struct timeval *tv, void *tz) + { + union { + unsigned long long ns100; /*time since 1 Jan 1601 in 100ns units */ + FILETIME ft; + } _now; + + if(tv) + { + GetSystemTimeAsFileTime (&_now.ft); + tv->tv_usec=(long)((_now.ns100 / 10ULL) % 1000000ULL ); + tv->tv_sec= (long)((_now.ns100 - _W32_FT_OFFSET) / 10000000ULL); + } + /* Always return 0 as per Open Group Base Specifications Issue 6. + Do not set errno on error. */ + return 0; +} +#endif + /* *------------------------------------------------------------------------- diff --git a/src/H5win32defs.h b/src/H5win32defs.h index 0cf7172..49e445d 100644 --- a/src/H5win32defs.h +++ b/src/H5win32defs.h @@ -33,18 +33,26 @@ typedef __int64 h5_stat_size_t; #define HDdup(F) _dup(F) #define HDfdopen(N,S) _fdopen(N,S) #define HDfileno(F) _fileno(F) - -#if _MSC_VER > 1200 +#if _MSC_VER > 1310 /* Newer than VS.NET 2003 */ #define HDftruncate(F,L) _chsize_s(F,L) #else #define HDftruncate(F,L) chsize(F,L) #endif - #define HDfstat(F,B) _fstati64(F,B) #define HDisatty(F) _isatty(F) #define HDstat(S,B) _stati64(S,B) #define HDgetcwd(S,Z) _getcwd(S,Z) #define HDgetdcwd(D,S,Z) _getdcwd(D,S,Z) +#ifndef H5_HAVE_GETTIMEOFDAY + #ifdef __cplusplus + extern "C" { + #endif /* __cplusplus */ + int HDgettimeofday(struct timeval *tv, void *tz); + #ifdef __cplusplus + } + #endif /* __cplusplus */ + #define HDgettimeofday(V,Z) HDgettimeofday(V,Z) +#endif /* H5_HAVE_GETTIMEOFDAY */ #define HDgetdrive() _getdrive() #define HDlseek(F,O,W) _lseeki64(F,O,W) #define HDmemset(X,C,Z) memset((void*)(X),C,Z) @@ -52,13 +60,13 @@ typedef __int64 h5_stat_size_t; #define HDopen(S,F,M) _open(S,F|_O_BINARY,M) #define HDread(F,M,Z) _read(F,M,Z) #define HDsetvbuf(F,S,M,Z) setvbuf(F,S,M,(Z>1?Z:2)) +#define HDstrcasecmp(A,B) _stricmp(A,B) #define HDstrdup(S) _strdup(S) #define HDsnprintf _snprintf /*varargs*/ #define HDtzset() _tzset() #define HDunlink(S) _unlink(S) #define HDvsnprintf(S,N,FMT,A) _vsnprintf(S,N,FMT,A) #define HDwrite(F,M,Z) _write(F,M,Z) -#define HDstrtoull(S,R,N) _strtoui64(S,R,N) /* Non-POSIX functions */ |