summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2011-08-15 14:06:53 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2011-08-15 14:06:53 (GMT)
commit8d80bf4a93a2de494e710eb9719483178ad215e8 (patch)
tree733fc801d4b04608cd57bc5003a52513c193dc4d
parent03a4dd9fc38eba695cb9c169d6879280fc665f3f (diff)
downloadhdf5-8d80bf4a93a2de494e710eb9719483178ad215e8.zip
hdf5-8d80bf4a93a2de494e710eb9719483178ad215e8.tar.gz
hdf5-8d80bf4a93a2de494e710eb9719483178ad215e8.tar.bz2
[svn-r21228] Added #ifdefs around #include unistd.h and created windows getlogin() function for building HDF5 parallel on windows.
Reviewed and tested locally and tested by user.
-rw-r--r--perform/benchpar.c13
-rw-r--r--perform/mpi-perf.c13
-rw-r--r--perform/perf.c113
-rw-r--r--perform/pio_engine.c2
-rw-r--r--perform/sio_standalone.h48
-rw-r--r--release_docs/RELEASE.txt3
-rw-r--r--src/H5system.c713
-rw-r--r--src/H5win32defs.h4
-rw-r--r--testpar/t_cache.c3
-rw-r--r--testpar/t_posix_compliant.c2
10 files changed, 488 insertions, 426 deletions
diff --git a/perform/benchpar.c b/perform/benchpar.c
index 035e9d6..ea1195b 100644
--- a/perform/benchpar.c
+++ b/perform/benchpar.c
@@ -13,7 +13,9 @@
* access to either file, you may request a copy from help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifdef H5_HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <stdlib.h>
#include <assert.h>
#include <math.h>
@@ -23,6 +25,11 @@
#include "hdf5.h"
/* Local macros */
+#ifdef _MSC_VER /* H5_HAVE_VISUAL_STUDIO */
+#define HDgetlogin() Wgetlogin()
+#else /* H5_HAVE_VISUAL_STUDIO */
+#define HDgetlogin() getlogin()
+#endif /* H5_HAVE_VISUAL_STUDIO */
/*
* HDF Boolean type.
@@ -115,13 +122,13 @@ static hid_t create_fapl(MPI_Comm comm, MPI_Info info, int acc_type )
/* set parallel access with communicator, using MPI-I/O driver */
if (acc_type == FACC_MPIO) {
- ret = H5Pset_fapl_mpio(fapl, comm, info);
+ ret = H5Pset_fapl_mpio(fapl, comm, info);
assert(ret>=0);
} /* end if */
/* set parallel access with communicator, using MPI-posix driver */
if (acc_type == FACC_MPIPOSIX) {
- ret = H5Pset_fapl_mpiposix(fapl, comm, use_gpfs);
+ ret = H5Pset_fapl_mpiposix(fapl, comm, use_gpfs);
assert(ret>=0);
} /* end if */
@@ -312,7 +319,7 @@ int main(int argc, char *argv[])
char *login; /* Pointer to login name */
/* Get the login name for this user */
- login=getlogin();
+ login=HDgetlogin();
if(login==NULL)
login=DEFAULT_USERNAME;
diff --git a/perform/mpi-perf.c b/perform/mpi-perf.c
index c0fe794..a09d672 100644
--- a/perform/mpi-perf.c
+++ b/perform/mpi-perf.c
@@ -55,10 +55,19 @@
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
+#ifdef H5_HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <errno.h>
#include <string.h>
-#include <sys/time.h>
+#if defined(H5_TIME_WITH_SYS_TIME)
+# include <sys/time.h>
+# include <time.h>
+#elif defined(H5_HAVE_SYS_TIME_H)
+# include <sys/time.h>
+#else
+# include <time.h>
+#endif
#include <mpi.h>
#ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already */
# include <mpio.h>
@@ -299,7 +308,7 @@ die_jar_jar_die:
#if H5_HAVE_SETENV
/* no setenv or unsetenv */
/* clear the environment variable if it was set earlier */
- if (opt_pvfstab_set){
+ if (opt_pvfstab_set){
unsetenv("PVFSTAB_FILE");
}
#endif
diff --git a/perform/perf.c b/perform/perf.c
index 92b85bc..f006afb 100644
--- a/perform/perf.c
+++ b/perform/perf.c
@@ -28,10 +28,19 @@
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
+#ifdef H5_HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <errno.h>
#include <string.h>
-#include <sys/time.h>
+#if defined(H5_TIME_WITH_SYS_TIME)
+# include <sys/time.h>
+# include <time.h>
+#elif defined(H5_HAVE_SYS_TIME_H)
+# include <sys/time.h>
+#else
+# include <time.h>
+#endif
#include <mpi.h>
#ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already */
# include <mpio.h>
@@ -45,30 +54,30 @@
#define H5FATAL 1
#define VRFY(val, mesg, fatal) do { \
if (!val) { \
- printf("Proc %d: ", mynod); \
+ printf("Proc %d: ", mynod); \
printf("*** Assertion failed (%s) at line %4d in %s\n", \
- mesg, (int)__LINE__, __FILE__); \
- if (fatal){ \
- fflush(stdout); \
- goto die_jar_jar_die; \
- } \
+ mesg, (int)__LINE__, __FILE__); \
+ if (fatal){ \
+ fflush(stdout); \
+ goto die_jar_jar_die; \
+ } \
} \
} while(0)
#define RANK 1
-hsize_t dims[RANK]; /* dataset dim sizes */
+hsize_t dims[RANK]; /* dataset dim sizes */
hsize_t block[RANK], stride[RANK], count[RANK];
hssize_t start[RANK];
hid_t fid; /* HDF5 file ID */
-hid_t acc_tpl; /* File access templates */
-hid_t sid; /* Dataspace ID */
-hid_t file_dataspace; /* File dataspace ID */
-hid_t mem_dataspace; /* memory dataspace ID */
-hid_t dataset; /* Dataset ID */
-hsize_t opt_alignment = 1;
-hsize_t opt_threshold = 1;
-int opt_split_vfd = 0;
-char *meta_ext, *raw_ext; /* holds the meta and raw file extension if */
- /* opt_split_vfd is set */
+hid_t acc_tpl; /* File access templates */
+hid_t sid; /* Dataspace ID */
+hid_t file_dataspace; /* File dataspace ID */
+hid_t mem_dataspace; /* memory dataspace ID */
+hid_t dataset; /* Dataset ID */
+hsize_t opt_alignment = 1;
+hsize_t opt_threshold = 1;
+int opt_split_vfd = 0;
+char *meta_ext, *raw_ext; /* holds the meta and raw file extension if */
+ /* opt_split_vfd is set */
/* DEFAULT VALUES FOR OPTIONS */
@@ -105,7 +114,7 @@ int main(int argc, char **argv)
MPI_File fh;
MPI_Status status;
int nchars;
- herr_t ret; /* Generic return value */
+ herr_t ret; /* Generic return value */
/* startup MPI and determine the rank of this process */
MPI_Init(&argc,&argv);
@@ -155,38 +164,38 @@ int main(int argc, char **argv)
/* setup file access template with parallel IO access. */
if (opt_split_vfd){
- hid_t mpio_pl;
-
- mpio_pl = H5Pcreate (H5P_FILE_ACCESS);
- VRFY((acc_tpl >= 0), "", H5FATAL);
- ret = H5Pset_fapl_mpio(mpio_pl, MPI_COMM_WORLD, MPI_INFO_NULL);
- VRFY((ret >= 0), "", H5FATAL);
-
- /* set optional allocation alignment */
- if (opt_alignment*opt_threshold != 1){
- ret = H5Pset_alignment(acc_tpl, opt_threshold, opt_alignment );
- VRFY((ret >= 0), "H5Pset_alignment succeeded", !H5FATAL);
- }
-
- /* setup file access template */
- acc_tpl = H5Pcreate (H5P_FILE_ACCESS);
- VRFY((acc_tpl >= 0), "", H5FATAL);
- ret = H5Pset_fapl_split(acc_tpl, meta_ext, mpio_pl, raw_ext, mpio_pl);
- VRFY((ret >= 0), "H5Pset_fapl_split succeeded", H5FATAL);
- ret = H5Pclose(mpio_pl);
- VRFY((ret >= 0), "H5Pclose mpio_pl succeeded", H5FATAL);
+ hid_t mpio_pl;
+
+ mpio_pl = H5Pcreate (H5P_FILE_ACCESS);
+ VRFY((acc_tpl >= 0), "", H5FATAL);
+ ret = H5Pset_fapl_mpio(mpio_pl, MPI_COMM_WORLD, MPI_INFO_NULL);
+ VRFY((ret >= 0), "", H5FATAL);
+
+ /* set optional allocation alignment */
+ if (opt_alignment*opt_threshold != 1){
+ ret = H5Pset_alignment(acc_tpl, opt_threshold, opt_alignment );
+ VRFY((ret >= 0), "H5Pset_alignment succeeded", !H5FATAL);
+ }
+
+ /* setup file access template */
+ acc_tpl = H5Pcreate (H5P_FILE_ACCESS);
+ VRFY((acc_tpl >= 0), "", H5FATAL);
+ ret = H5Pset_fapl_split(acc_tpl, meta_ext, mpio_pl, raw_ext, mpio_pl);
+ VRFY((ret >= 0), "H5Pset_fapl_split succeeded", H5FATAL);
+ ret = H5Pclose(mpio_pl);
+ VRFY((ret >= 0), "H5Pclose mpio_pl succeeded", H5FATAL);
}else{
- /* setup file access template */
- acc_tpl = H5Pcreate (H5P_FILE_ACCESS);
- VRFY((acc_tpl >= 0), "", H5FATAL);
- ret = H5Pset_fapl_mpio(acc_tpl, MPI_COMM_WORLD, MPI_INFO_NULL);
- VRFY((ret >= 0), "", H5FATAL);
-
- /* set optional allocation alignment */
- if (opt_alignment*opt_threshold != 1){
- ret = H5Pset_alignment(acc_tpl, opt_threshold, opt_alignment );
- VRFY((ret >= 0), "H5Pset_alignment succeeded", !H5FATAL);
- }
+ /* setup file access template */
+ acc_tpl = H5Pcreate (H5P_FILE_ACCESS);
+ VRFY((acc_tpl >= 0), "", H5FATAL);
+ ret = H5Pset_fapl_mpio(acc_tpl, MPI_COMM_WORLD, MPI_INFO_NULL);
+ VRFY((ret >= 0), "", H5FATAL);
+
+ /* set optional allocation alignment */
+ if (opt_alignment*opt_threshold != 1){
+ ret = H5Pset_alignment(acc_tpl, opt_threshold, opt_alignment );
+ VRFY((ret >= 0), "H5Pset_alignment succeeded", !H5FATAL);
+ }
}
/* create the parallel file */
@@ -198,7 +207,7 @@ int main(int argc, char **argv)
sid = H5Screate_simple(RANK, dims, NULL);
VRFY((sid >= 0), "H5Screate_simple succeeded", H5FATAL);
dataset = H5Dcreate2(fid, "Dataset1", H5T_NATIVE_CHAR, sid,
- H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
VRFY((dataset >= 0), "H5Dcreate2 succeeded", H5FATAL);
/* create the memory dataspace and the file dataspace */
@@ -366,7 +375,7 @@ die_jar_jar_die:
#if H5_HAVE_SETENV
/* no setenv or unsetenv */
/* clear the environment variable if it was set earlier */
- if (opt_pvfstab_set){
+ if (opt_pvfstab_set){
unsetenv("PVFSTAB_FILE");
}
#endif
diff --git a/perform/pio_engine.c b/perform/pio_engine.c
index 27606d0..129addf 100644
--- a/perform/pio_engine.c
+++ b/perform/pio_engine.c
@@ -22,7 +22,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
+#ifdef H5_HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <errno.h>
#include "hdf5.h"
diff --git a/perform/sio_standalone.h b/perform/sio_standalone.h
index 77bb7f8..42f534f 100644
--- a/perform/sio_standalone.h
+++ b/perform/sio_standalone.h
@@ -21,7 +21,7 @@
/** From H5private.h **/
-#include "H5public.h" /* Include Public Definitions */
+#include "H5public.h" /* Include Public Definitions */
/*
@@ -129,11 +129,11 @@
#define HDfgetc(F) fgetc(F)
#define HDfgetpos(F,P) fgetpos(F,P)
#define HDfgets(S,N,F) fgets(S,N,F)
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDfileno(F) _fileno(F)
-#else /* _WIN32 */
+#else /* H5_HAVE_VISUAL_STUDIO */
#define HDfileno(F) fileno(F)
-#endif /* _WIN32 */
+#endif /* H5_HAVE_VISUAL_STUDIO */
#define HDfloor(X) floor(X)
#define HDfmod(X,Y) fmod(X,Y)
#define HDfopen(S,M) fopen(S,M)
@@ -169,7 +169,7 @@ H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...);
* For Unix, if off_t is not 64bit big, try use the pseudo-standard
* xxx64 versions if available.
*/
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDfstat(F,B) _fstati64(F,B)
#define HDlstat(S,B) _lstati64(S,B)
#define HDstat(S,B) _stati64(S,B)
@@ -202,7 +202,11 @@ H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...);
#define HDgetgrgid(G) getgrgid(G)
#define HDgetgrnam(S) getgrnam(S)
#define HDgetgroups(Z,G) getgroups(Z,G)
+#ifdef _MSC_VER /* H5_HAVE_VISUAL_STUDIO */
+#define HDgetlogin() Wgetlogin()
+#else /* H5_HAVE_VISUAL_STUDIO */
#define HDgetlogin() getlogin()
+#endif /* H5_HAVE_VISUAL_STUDIO */
#define HDgetpgrp() getpgrp()
#define HDgetpid() getpid()
#define HDgetppid() getppid()
@@ -235,7 +239,7 @@ H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...);
#define HDlog(X) log(X)
#define HDlog10(X) log10(X)
#define HDlongjmp(J,N) longjmp(J,N)
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDlseek(F,O,W) _lseeki64(F,O,W)
#else
#ifdef H5_HAVE_LSEEK64
@@ -258,18 +262,18 @@ H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...);
#define HDmemcpy(X,Y,Z) memcpy((char*)(X),(const char*)(Y),Z)
#define HDmemmove(X,Y,Z) memmove((char*)(X),(const char*)(Y),Z)
/*
- * The (void*) cast just avoids a compiler warning in _WIN32
+ * The (void*) cast just avoids a compiler warning in H5_HAVE_VISUAL_STUDIO
*/
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDmemset(X,C,Z) memset((void*)(X),C,Z)
-#else /* _WIN32 */
+#else /* H5_HAVE_VISUAL_STUDIO */
#define HDmemset(X,C,Z) memset(X,C,Z)
-#endif /* _WIN32 */
-#ifdef _WIN32
+#endif /* H5_HAVE_VISUAL_STUDIO */
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDmkdir(S,M) _mkdir(S)
-#else /* _WIN32 */
+#else /* H5_HAVE_VISUAL_STUDIO */
#define HDmkdir(S,M) mkdir(S,M)
-#endif /* _WIN32 */
+#endif /* H5_HAVE_VISUAL_STUDIO */
#define HDmkfifo(S,M) mkfifo(S,M)
#define HDmktime(T) mktime(T)
#define HDmodf(X,Y) modf(X,Y)
@@ -331,7 +335,7 @@ int HDremove_all(const char * fname);
#define HDsetuid(U) setuid(U)
/* Windows does not permit setting the buffer size to values
less than 2. */
-#ifndef _WIN32
+#ifndef H5_HAVE_WIN32_API
#define HDsetvbuf(F,S,M,Z) setvbuf(F,S,M,Z)
#else
#define HDsetvbuf(F,S,M,Z) setvbuf(F,S,M,(Z>1?Z:2))
@@ -350,7 +354,7 @@ int HDremove_all(const char * fname);
#define HDsin(X) sin(X)
#define HDsinh(X) sinh(X)
#define HDsleep(N) sleep(N)
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDsnprintf _snprintf /*varargs*/
#else
#define HDsnprintf snprintf /*varargs*/
@@ -369,7 +373,7 @@ H5_DLL void HDsrand(unsigned int seed);
#endif
/* sscanf() variable arguments */
-#define HDstrcasecmp(X,Y) strcasecmp(X,Y)
+#define HDstrcasecmp(X,Y) strcasecmp(X,Y)
#define HDstrcat(X,Y) strcat(X,Y)
#define HDstrchr(S,C) strchr(S,C)
#define HDstrcmp(X,Y) strcmp(X,Y)
@@ -415,7 +419,7 @@ H5_DLL int64_t HDstrtoll (const char *s, const char **rest, int base);
#define HDumask(N) umask(N)
#define HDuname(S) uname(S)
#define HDungetc(C,F) ungetc(C,F)
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDunlink(S) _unlink(S)
#else
#define HDunlink(S) unlink(S)
@@ -428,7 +432,7 @@ H5_DLL int64_t HDstrtoll (const char *s, const char **rest, int base);
#define HDvfprintf(F,FMT,A) vfprintf(F,FMT,A)
#define HDvprintf(FMT,A) vprintf(FMT,A)
#define HDvsprintf(S,FMT,A) vsprintf(S,FMT,A)
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
# define HDvsnprintf(S,N,FMT,A) _vsnprintf(S,N,FMT,A)
#else
# define HDvsnprintf(S,N,FMT,A) vsnprintf(S,N,FMT,A)
@@ -443,9 +447,9 @@ H5_DLL int64_t HDstrtoll (const char *s, const char **rest, int base);
* And now for a couple non-Posix functions... Watch out for systems that
* define these in terms of macros.
*/
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
#define HDstrdup(S) _strdup(S)
-#else /* _WIN32 */
+#else /* H5_HAVE_VISUAL_STUDIO */
#if !defined strdup && !defined H5_HAVE_STRDUP
extern char *strdup(const char *s);
@@ -453,7 +457,7 @@ extern char *strdup(const char *s);
#define HDstrdup(S) strdup(S)
-#endif /* _WIN32 */
+#endif /* H5_HAVE_VISUAL_STUDIO */
/*
* HDF Boolean type.
@@ -487,7 +491,7 @@ extern const char *opt_arg; /* flag argument (or value) */
enum {
no_arg = 0, /* doesn't take an argument */
- require_arg, /* requires an argument */
+ require_arg, /* requires an argument */
optional_arg /* argument is optional */
};
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 8bf210a..3f246ec 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -558,6 +558,9 @@ Bug Fixes since HDF5-1.8.0 release
Performance
-------------
+ - ifdefs added to tests around include unistd.h and function to simulate
+ getlogin() on Windows.
+ (ADB - 2011/08/15)
- perf_serial test added to Windows projects and check batch file.
(ADB - 2009/06/11)
diff --git a/src/H5system.c b/src/H5system.c
index afe07b0..e46b7c3 100644
--- a/src/H5system.c
+++ b/src/H5system.c
@@ -15,11 +15,11 @@
/*-------------------------------------------------------------------------
*
- * Created: H5system.c
- * Aug 21 2006
- * Quincey Koziol <koziol@hdfgroup.org>
+ * Created: H5system.c
+ * Aug 21 2006
+ * Quincey Koziol <koziol@hdfgroup.org>
*
- * Purpose: System call wrapper implementations.
+ * Purpose: System call wrapper implementations.
*
*-------------------------------------------------------------------------
*/
@@ -32,9 +32,9 @@
/***********/
/* Headers */
/***********/
-#include "H5private.h" /* Generic Functions */
-#include "H5Fprivate.h" /* File access */
-#include "H5MMprivate.h" /* Memory management */
+#include "H5private.h" /* Generic Functions */
+#include "H5Fprivate.h" /* File access */
+#include "H5MMprivate.h" /* Memory management */
#include "H5Eprivate.h"
@@ -75,71 +75,71 @@
/*-------------------------------------------------------------------------
- * Function: HDfprintf
+ * Function: HDfprintf
*
- * Purpose: Prints the optional arguments under the control of the format
- * string FMT to the stream STREAM. This function takes the
- * same format as fprintf(3c) with a few added features:
+ * Purpose: Prints the optional arguments under the control of the format
+ * string FMT to the stream STREAM. This function takes the
+ * same format as fprintf(3c) with a few added features:
*
- * The conversion modifier `H' refers to the size of an
- * `hsize_t' or `hssize_t' type. For instance, "0x%018Hx"
- * prints an `hsize_t' value as a hex number right justified and
- * zero filled in an 18-character field.
+ * The conversion modifier `H' refers to the size of an
+ * `hsize_t' or `hssize_t' type. For instance, "0x%018Hx"
+ * prints an `hsize_t' value as a hex number right justified and
+ * zero filled in an 18-character field.
*
- * The conversion `a' refers to an `haddr_t' type.
+ * The conversion `a' refers to an `haddr_t' type.
*
- * Return: Success: Number of characters printed
+ * Return: Success: Number of characters printed
*
- * Failure: -1
+ * Failure: -1
*
- * Programmer: Robb Matzke
+ * Programmer: Robb Matzke
* Thursday, April 9, 1998
*
* Modifications:
- * Robb Matzke, 1999-07-27
- * The `%a' format refers to an argument of `haddr_t' type
- * instead of `haddr_t*' and the return value is correct.
+ * Robb Matzke, 1999-07-27
+ * The `%a' format refers to an argument of `haddr_t' type
+ * instead of `haddr_t*' and the return value is correct.
*-------------------------------------------------------------------------
*/
int
HDfprintf(FILE *stream, const char *fmt, ...)
{
- int n=0, nout = 0;
- int fwidth, prec;
- int zerofill;
- int leftjust;
- int plussign;
- int ldspace;
- int prefix;
- char modifier[8];
- int conv;
- char *rest, format_templ[128];
- const char *s;
- va_list ap;
+ int n=0, nout = 0;
+ int fwidth, prec;
+ int zerofill;
+ int leftjust;
+ int plussign;
+ int ldspace;
+ int prefix;
+ char modifier[8];
+ int conv;
+ char *rest, format_templ[128];
+ const char *s;
+ va_list ap;
assert (stream);
assert (fmt);
va_start (ap, fmt);
while (*fmt) {
- fwidth = prec = 0;
- zerofill = 0;
- leftjust = 0;
- plussign = 0;
- prefix = 0;
- ldspace = 0;
- modifier[0] = '\0';
-
- if ('%'==fmt[0] && '%'==fmt[1]) {
- HDputc ('%', stream);
- fmt += 2;
- nout++;
- } else if ('%'==fmt[0]) {
- s = fmt + 1;
-
- /* Flags */
- while(HDstrchr ("-+ #", *s)) {
- switch(*s) {
+ fwidth = prec = 0;
+ zerofill = 0;
+ leftjust = 0;
+ plussign = 0;
+ prefix = 0;
+ ldspace = 0;
+ modifier[0] = '\0';
+
+ if ('%'==fmt[0] && '%'==fmt[1]) {
+ HDputc ('%', stream);
+ fmt += 2;
+ nout++;
+ } else if ('%'==fmt[0]) {
+ s = fmt + 1;
+
+ /* Flags */
+ while(HDstrchr ("-+ #", *s)) {
+ switch(*s) {
case '-':
leftjust = 1;
break;
@@ -155,61 +155,61 @@ HDfprintf(FILE *stream, const char *fmt, ...)
case '#':
prefix = 1;
break;
- } /* end switch */ /*lint !e744 Switch statement doesn't _need_ default */
- s++;
- } /* end while */
-
- /* Field width */
- if (HDisdigit (*s)) {
- zerofill = ('0'==*s);
- fwidth = (int)HDstrtol (s, &rest, 10);
- s = rest;
- } else if ('*'==*s) {
- fwidth = va_arg (ap, int);
- if (fwidth<0) {
- leftjust = 1;
- fwidth = -fwidth;
- }
- s++;
- }
-
- /* Precision */
- if ('.'==*s) {
- s++;
- if (HDisdigit (*s)) {
- prec = (int)HDstrtol (s, &rest, 10);
- s = rest;
- } else if ('*'==*s) {
- prec = va_arg (ap, int);
- s++;
- }
- if (prec<1) prec = 1;
- }
-
- /* Extra type modifiers */
- if (HDstrchr ("ZHhlqLI", *s)) {
- switch (*s) {
+ } /* end switch */ /*lint !e744 Switch statement doesn't _need_ default */
+ s++;
+ } /* end while */
+
+ /* Field width */
+ if (HDisdigit (*s)) {
+ zerofill = ('0'==*s);
+ fwidth = (int)HDstrtol (s, &rest, 10);
+ s = rest;
+ } else if ('*'==*s) {
+ fwidth = va_arg (ap, int);
+ if (fwidth<0) {
+ leftjust = 1;
+ fwidth = -fwidth;
+ }
+ s++;
+ }
+
+ /* Precision */
+ if ('.'==*s) {
+ s++;
+ if (HDisdigit (*s)) {
+ prec = (int)HDstrtol (s, &rest, 10);
+ s = rest;
+ } else if ('*'==*s) {
+ prec = va_arg (ap, int);
+ s++;
+ }
+ if (prec<1) prec = 1;
+ }
+
+ /* Extra type modifiers */
+ if (HDstrchr ("ZHhlqLI", *s)) {
+ switch (*s) {
/*lint --e{506} Don't issue warnings about constant value booleans */
/*lint --e{774} Don't issue warnings boolean within 'if' always evaluates false/true */
- case 'H':
- if (sizeof(hsize_t)<sizeof(long)) {
- modifier[0] = '\0';
- } else if (sizeof(hsize_t)==sizeof(long)) {
- HDstrcpy (modifier, "l");
- } else {
- HDstrcpy (modifier, H5_PRINTF_LL_WIDTH);
- }
- break;
- case 'Z':
- if (sizeof(size_t)<sizeof(long)) {
- modifier[0] = '\0';
- } else if (sizeof(size_t)==sizeof(long)) {
- HDstrcpy (modifier, "l");
- } else {
- HDstrcpy (modifier, H5_PRINTF_LL_WIDTH);
- }
- break;
- default:
+ case 'H':
+ if (sizeof(hsize_t)<sizeof(long)) {
+ modifier[0] = '\0';
+ } else if (sizeof(hsize_t)==sizeof(long)) {
+ HDstrcpy (modifier, "l");
+ } else {
+ HDstrcpy (modifier, H5_PRINTF_LL_WIDTH);
+ }
+ break;
+ case 'Z':
+ if (sizeof(size_t)<sizeof(long)) {
+ modifier[0] = '\0';
+ } else if (sizeof(size_t)==sizeof(long)) {
+ HDstrcpy (modifier, "l");
+ } else {
+ HDstrcpy (modifier, H5_PRINTF_LL_WIDTH);
+ }
+ break;
+ default:
/* Handle 'I64' modifier for Microsoft's "__int64" type */
if(*s=='I' && *(s+1)=='6' && *(s+2)=='4') {
modifier[0] = *s;
@@ -231,144 +231,144 @@ HDfprintf(FILE *stream, const char *fmt, ...)
modifier[1] = '\0';
} /* end else */
} /* end else */
- break;
- }
- s++;
- }
-
- /* Conversion */
- conv = *s++;
-
- /* Create the format template */
- sprintf (format_templ, "%%%s%s%s%s%s",
- leftjust?"-":"", plussign?"+":"",
- ldspace?" ":"", prefix?"#":"", zerofill?"0":"");
- if (fwidth>0)
- sprintf (format_templ+HDstrlen(format_templ), "%d", fwidth);
- if (prec>0)
- sprintf (format_templ+HDstrlen(format_templ), ".%d", prec);
- if (*modifier)
- sprintf (format_templ+HDstrlen(format_templ), "%s", modifier);
- sprintf (format_templ+HDstrlen(format_templ), "%c", conv);
-
-
- /* Conversion */
- switch (conv) {
- case 'd':
- case 'i':
- if (!HDstrcmp(modifier, "h")) {
- short x = (short)va_arg (ap, int);
- n = fprintf (stream, format_templ, x);
- } else if (!*modifier) {
- int x = va_arg (ap, int);
- n = fprintf (stream, format_templ, x);
- } else if (!HDstrcmp (modifier, "l")) {
- long x = va_arg (ap, long);
- n = fprintf (stream, format_templ, x);
- } else {
- int64_t x = va_arg(ap, int64_t);
- n = fprintf (stream, format_templ, x);
- }
- break;
-
- case 'o':
- case 'u':
- case 'x':
- case 'X':
- if (!HDstrcmp (modifier, "h")) {
- unsigned short x = (unsigned short)va_arg (ap, unsigned int);
- n = fprintf (stream, format_templ, x);
- } else if (!*modifier) {
- unsigned int x = va_arg (ap, unsigned int); /*lint !e732 Loss of sign not really occuring */
- n = fprintf (stream, format_templ, x);
- } else if (!HDstrcmp (modifier, "l")) {
- unsigned long x = va_arg (ap, unsigned long); /*lint !e732 Loss of sign not really occuring */
- n = fprintf (stream, format_templ, x);
- } else {
- uint64_t x = va_arg(ap, uint64_t); /*lint !e732 Loss of sign not really occuring */
- n = fprintf (stream, format_templ, x);
- }
- break;
-
- case 'f':
- case 'e':
- case 'E':
- case 'g':
- case 'G':
- if (!HDstrcmp (modifier, "h")) {
- float x = (float) va_arg (ap, double);
- n = fprintf (stream, format_templ, x);
- } else if (!*modifier || !HDstrcmp (modifier, "l")) {
- double x = va_arg (ap, double);
- n = fprintf (stream, format_templ, x);
- } else {
- /*
- * Some compilers complain when `long double' and
- * `double' are the same thing.
- */
+ break;
+ }
+ s++;
+ }
+
+ /* Conversion */
+ conv = *s++;
+
+ /* Create the format template */
+ sprintf (format_templ, "%%%s%s%s%s%s",
+ leftjust?"-":"", plussign?"+":"",
+ ldspace?" ":"", prefix?"#":"", zerofill?"0":"");
+ if (fwidth>0)
+ sprintf (format_templ+HDstrlen(format_templ), "%d", fwidth);
+ if (prec>0)
+ sprintf (format_templ+HDstrlen(format_templ), ".%d", prec);
+ if (*modifier)
+ sprintf (format_templ+HDstrlen(format_templ), "%s", modifier);
+ sprintf (format_templ+HDstrlen(format_templ), "%c", conv);
+
+
+ /* Conversion */
+ switch (conv) {
+ case 'd':
+ case 'i':
+ if (!HDstrcmp(modifier, "h")) {
+ short x = (short)va_arg (ap, int);
+ n = fprintf (stream, format_templ, x);
+ } else if (!*modifier) {
+ int x = va_arg (ap, int);
+ n = fprintf (stream, format_templ, x);
+ } else if (!HDstrcmp (modifier, "l")) {
+ long x = va_arg (ap, long);
+ n = fprintf (stream, format_templ, x);
+ } else {
+ int64_t x = va_arg(ap, int64_t);
+ n = fprintf (stream, format_templ, x);
+ }
+ break;
+
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ if (!HDstrcmp (modifier, "h")) {
+ unsigned short x = (unsigned short)va_arg (ap, unsigned int);
+ n = fprintf (stream, format_templ, x);
+ } else if (!*modifier) {
+ unsigned int x = va_arg (ap, unsigned int); /*lint !e732 Loss of sign not really occuring */
+ n = fprintf (stream, format_templ, x);
+ } else if (!HDstrcmp (modifier, "l")) {
+ unsigned long x = va_arg (ap, unsigned long); /*lint !e732 Loss of sign not really occuring */
+ n = fprintf (stream, format_templ, x);
+ } else {
+ uint64_t x = va_arg(ap, uint64_t); /*lint !e732 Loss of sign not really occuring */
+ n = fprintf (stream, format_templ, x);
+ }
+ break;
+
+ case 'f':
+ case 'e':
+ case 'E':
+ case 'g':
+ case 'G':
+ if (!HDstrcmp (modifier, "h")) {
+ float x = (float) va_arg (ap, double);
+ n = fprintf (stream, format_templ, x);
+ } else if (!*modifier || !HDstrcmp (modifier, "l")) {
+ double x = va_arg (ap, double);
+ n = fprintf (stream, format_templ, x);
+ } else {
+ /*
+ * Some compilers complain when `long double' and
+ * `double' are the same thing.
+ */
#if H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
- long double x = va_arg (ap, long double);
- n = fprintf (stream, format_templ, x);
+ long double x = va_arg (ap, long double);
+ n = fprintf (stream, format_templ, x);
#else
- double x = va_arg (ap, double);
- n = fprintf (stream, format_templ, x);
+ double x = va_arg (ap, double);
+ n = fprintf (stream, format_templ, x);
#endif
- }
- break;
+ }
+ break;
- case 'a':
+ case 'a':
{
- haddr_t x = va_arg (ap, haddr_t); /*lint !e732 Loss of sign not really occuring */
- if (H5F_addr_defined(x)) {
- sprintf(format_templ, "%%%s%s%s%s%s",
- leftjust?"-":"", plussign?"+":"",
- ldspace?" ":"", prefix?"#":"",
- zerofill?"0":"");
- if (fwidth>0)
- sprintf(format_templ+HDstrlen(format_templ), "%d", fwidth);
+ haddr_t x = va_arg (ap, haddr_t); /*lint !e732 Loss of sign not really occuring */
+ if (H5F_addr_defined(x)) {
+ sprintf(format_templ, "%%%s%s%s%s%s",
+ leftjust?"-":"", plussign?"+":"",
+ ldspace?" ":"", prefix?"#":"",
+ zerofill?"0":"");
+ if (fwidth>0)
+ sprintf(format_templ+HDstrlen(format_templ), "%d", fwidth);
/*lint --e{506} Don't issue warnings about constant value booleans */
/*lint --e{774} Don't issue warnings boolean within 'if' always evaluates false/true */
- if (sizeof(x)==H5_SIZEOF_INT) {
- HDstrcat(format_templ, "u");
- } else if (sizeof(x)==H5_SIZEOF_LONG) {
- HDstrcat(format_templ, "lu");
- } else if (sizeof(x)==H5_SIZEOF_LONG_LONG) {
- HDstrcat(format_templ, H5_PRINTF_LL_WIDTH);
- HDstrcat(format_templ, "u");
- }
- n = fprintf(stream, format_templ, x);
- } else {
- HDstrcpy(format_templ, "%");
- if (leftjust)
+ if (sizeof(x)==H5_SIZEOF_INT) {
+ HDstrcat(format_templ, "u");
+ } else if (sizeof(x)==H5_SIZEOF_LONG) {
+ HDstrcat(format_templ, "lu");
+ } else if (sizeof(x)==H5_SIZEOF_LONG_LONG) {
+ HDstrcat(format_templ, H5_PRINTF_LL_WIDTH);
+ HDstrcat(format_templ, "u");
+ }
+ n = fprintf(stream, format_templ, x);
+ } else {
+ HDstrcpy(format_templ, "%");
+ if (leftjust)
HDstrcat(format_templ, "-");
- if (fwidth)
- sprintf(format_templ+HDstrlen(format_templ), "%d", fwidth);
- HDstrcat(format_templ, "s");
- fprintf(stream, format_templ, "UNDEF");
- }
- }
- break;
-
- case 'c':
+ if (fwidth)
+ sprintf(format_templ+HDstrlen(format_templ), "%d", fwidth);
+ HDstrcat(format_templ, "s");
+ fprintf(stream, format_templ, "UNDEF");
+ }
+ }
+ break;
+
+ case 'c':
{
- char x = (char)va_arg (ap, int);
- n = fprintf (stream, format_templ, x);
- }
- break;
+ char x = (char)va_arg (ap, int);
+ n = fprintf (stream, format_templ, x);
+ }
+ break;
- case 's':
- case 'p':
+ case 's':
+ case 'p':
{
- char *x = va_arg (ap, char*); /*lint !e64 Type mismatch not really occuring */
- n = fprintf (stream, format_templ, x);
- }
- break;
+ char *x = va_arg (ap, char*); /*lint !e64 Type mismatch not really occuring */
+ n = fprintf (stream, format_templ, x);
+ }
+ break;
- case 'n':
+ case 'n':
format_templ[HDstrlen(format_templ)-1] = 'u';
n = fprintf (stream, format_templ, nout);
- break;
+ break;
case 't':
{
@@ -379,18 +379,18 @@ HDfprintf(FILE *stream, const char *fmt, ...)
}
break;
- default:
- HDfputs (format_templ, stream);
- n = (int)HDstrlen (format_templ);
- break;
- }
- nout += n;
- fmt = s;
- } else {
- HDputc (*fmt, stream);
- fmt++;
- nout++;
- }
+ default:
+ HDfputs (format_templ, stream);
+ n = (int)HDstrlen (format_templ);
+ break;
+ }
+ nout += n;
+ fmt = s;
+ } else {
+ HDputc (*fmt, stream);
+ fmt++;
+ nout++;
+ }
}
va_end (ap);
return nout;
@@ -398,43 +398,43 @@ HDfprintf(FILE *stream, const char *fmt, ...)
/*-------------------------------------------------------------------------
- * Function: HDstrtoll
+ * Function: HDstrtoll
*
- * Purpose: Converts the string S to an int64_t value according to the
- * given BASE, which must be between 2 and 36 inclusive, or be
- * the special value zero.
+ * Purpose: Converts the string S to an int64_t value according to the
+ * given BASE, which must be between 2 and 36 inclusive, or be
+ * the special value zero.
*
- * The string must begin with an arbitrary amount of white space
- * (as determined by isspace(3c)) followed by a single optional
+ * The string must begin with an arbitrary amount of white space
+ * (as determined by isspace(3c)) followed by a single optional
* `+' or `-' sign. If BASE is zero or 16 the string may then
- * include a `0x' or `0X' prefix, and the number will be read in
- * base 16; otherwise a zero BASE is taken as 10 (decimal)
- * unless the next character is a `0', in which case it is taken
- * as 8 (octal).
- *
- * The remainder of the string is converted to an int64_t in the
- * obvious manner, stopping at the first character which is not
- * a valid digit in the given base. (In bases above 10, the
- * letter `A' in either upper or lower case represetns 10, `B'
- * represents 11, and so forth, with `Z' representing 35.)
- *
- * If REST is not null, the address of the first invalid
- * character in S is stored in *REST. If there were no digits
- * at all, the original value of S is stored in *REST. Thus, if
- * *S is not `\0' but **REST is `\0' on return the entire string
- * was valid.
- *
- * Return: Success: The result.
- *
- * Failure: If the input string does not contain any
- * digits then zero is returned and REST points
- * to the original value of S. If an overflow
- * or underflow occurs then the maximum or
- * minimum possible value is returned and the
- * global `errno' is set to ERANGE. If BASE is
- * incorrect then zero is returned.
- *
- * Programmer: Robb Matzke
+ * include a `0x' or `0X' prefix, and the number will be read in
+ * base 16; otherwise a zero BASE is taken as 10 (decimal)
+ * unless the next character is a `0', in which case it is taken
+ * as 8 (octal).
+ *
+ * The remainder of the string is converted to an int64_t in the
+ * obvious manner, stopping at the first character which is not
+ * a valid digit in the given base. (In bases above 10, the
+ * letter `A' in either upper or lower case represetns 10, `B'
+ * represents 11, and so forth, with `Z' representing 35.)
+ *
+ * If REST is not null, the address of the first invalid
+ * character in S is stored in *REST. If there were no digits
+ * at all, the original value of S is stored in *REST. Thus, if
+ * *S is not `\0' but **REST is `\0' on return the entire string
+ * was valid.
+ *
+ * Return: Success: The result.
+ *
+ * Failure: If the input string does not contain any
+ * digits then zero is returned and REST points
+ * to the original value of S. If an overflow
+ * or underflow occurs then the maximum or
+ * minimum possible value is returned and the
+ * global `errno' is set to ERANGE. If BASE is
+ * incorrect then zero is returned.
+ *
+ * Programmer: Robb Matzke
* Thursday, April 9, 1998
*
* Modifications:
@@ -444,13 +444,13 @@ HDfprintf(FILE *stream, const char *fmt, ...)
int64_t
HDstrtoll(const char *s, const char **rest, int base)
{
- int64_t sign=1, acc=0;
- hbool_t overflow = FALSE;
+ int64_t sign=1, acc=0;
+ hbool_t overflow = FALSE;
errno = 0;
if (!s || (base && (base<2 || base>36))) {
- if (rest) *rest = s;
- return 0;
+ if (rest) *rest = s;
+ return 0;
}
/* Skip white space */
@@ -458,51 +458,51 @@ HDstrtoll(const char *s, const char **rest, int base)
/* Optional minus or plus sign */
if ('+'==*s) {
- s++;
+ s++;
} else if ('-'==*s) {
- sign = -1;
- s++;
+ sign = -1;
+ s++;
}
/* Zero base prefix */
if (0==base && '0'==*s && ('x'==s[1] || 'X'==s[1])) {
- base = 16;
- s += 2;
+ base = 16;
+ s += 2;
} else if (0==base && '0'==*s) {
- base = 8;
- s++;
+ base = 8;
+ s++;
} else if (0==base) {
- base = 10;
+ base = 10;
}
/* Digits */
while ((base<=10 && *s>='0' && *s<'0'+base) ||
- (base>10 && ((*s>='0' && *s<='9') ||
- (*s>='a' && *s<'a'+base-10) ||
- (*s>='A' && *s<'A'+base-10)))) {
- if (!overflow) {
- int64_t digit = 0;
- if (*s>='0' && *s<='9') digit = *s - '0';
- else if (*s>='a' && *s<='z') digit = (*s-'a')+10;
- else digit = (*s-'A')+10;
-
- if (acc*base+digit < acc) {
- overflow = TRUE;
- } else {
- acc = acc*base + digit;
- }
- }
- s++;
+ (base>10 && ((*s>='0' && *s<='9') ||
+ (*s>='a' && *s<'a'+base-10) ||
+ (*s>='A' && *s<'A'+base-10)))) {
+ if (!overflow) {
+ int64_t digit = 0;
+ if (*s>='0' && *s<='9') digit = *s - '0';
+ else if (*s>='a' && *s<='z') digit = (*s-'a')+10;
+ else digit = (*s-'A')+10;
+
+ if (acc*base+digit < acc) {
+ overflow = TRUE;
+ } else {
+ acc = acc*base + digit;
+ }
+ }
+ s++;
}
/* Overflow */
if (overflow) {
- if (sign>0) {
- acc = ((uint64_t)1<<(8*sizeof(int64_t)-1))-1;
- } else {
- acc = (int64_t)((uint64_t)1<<(8*sizeof(int64_t)-1));
- }
- errno = ERANGE;
+ if (sign>0) {
+ acc = ((uint64_t)1<<(8*sizeof(int64_t)-1))-1;
+ } else {
+ acc = (int64_t)((uint64_t)1<<(8*sizeof(int64_t)-1));
+ }
+ errno = ERANGE;
}
/* Return values */
@@ -513,20 +513,20 @@ HDstrtoll(const char *s, const char **rest, int base)
/*-------------------------------------------------------------------------
- * Function: HDrand/HDsrand
+ * Function: HDrand/HDsrand
*
- * Purpose: Wrapper function for rand. If rand_r exists on this system,
- * use it.
+ * Purpose: Wrapper function for rand. If rand_r exists on this system,
+ * use it.
*
- * Wrapper function for srand. If rand_r is available, it will keep
- * track of the seed locally instead of using srand() which modifies
- * global state and can break other programs.
+ * Wrapper function for srand. If rand_r is available, it will keep
+ * track of the seed locally instead of using srand() which modifies
+ * global state and can break other programs.
*
- * Return: Success: Random number from 0 to RAND_MAX
+ * Return: Success: Random number from 0 to RAND_MAX
*
- * Failure: Cannot fail.
+ * Failure: Cannot fail.
*
- * Programmer: Leon Arber
+ * Programmer: Leon Arber
* March 6, 2006.
*
*-------------------------------------------------------------------------
@@ -548,17 +548,17 @@ void HDsrand(unsigned int seed)
/*-------------------------------------------------------------------------
- * Function: HDremove_all
+ * Function: HDremove_all
*
- * Purpose: Wrapper function for remove on VMS systems
+ * Purpose: Wrapper function for remove on VMS systems
*
- * This function deletes all versions of a file
+ * This function deletes all versions of a file
*
- * Return: Success: 0;
+ * Return: Success: 0;
*
- * Failure: -1
+ * Failure: -1
*
- * Programmer: Elena Pourmal
+ * Programmer: Elena Pourmal
* March 22, 2006
*
*-------------------------------------------------------------------------
@@ -584,13 +584,13 @@ HDremove_all(const char *fname)
#endif
/*-------------------------------------------------------------------------
- * Function: Wgettimeofday
+ * Function: Wgettimeofday
*
- * Purpose: Wrapper function for gettimeofday on Windows systems
+ * Purpose: Wrapper function for gettimeofday on Windows systems
*
- * This function can get the time as well as a timezone
+ * This function can get the time as well as a timezone
*
- * Return: 0
+ * Return: 0
*
* This implementation is taken from the Cygwin source distribution at
* src/winsup/mingw/mingwex/gettimeofday.c
@@ -599,12 +599,12 @@ HDremove_all(const char *fname)
* Danny Smith <dannysmith@users.sourceforge.net>
* and released in the public domain.
*
- * Programmer: Scott Wegner
+ * Programmer: Scott Wegner
* May 19, 2009
*
*-------------------------------------------------------------------------
*/
-#ifdef _WIN32
+#ifdef _WIN32 /* H5_HAVE_VISUAL_STUDIO */
/* Offset between 1/1/1601 and 1/1/1970 in 100 nanosecond units */
#define _W32_FT_OFFSET (116444736000000000ULL)
@@ -638,6 +638,27 @@ Wgettimeofday(struct timeval *tv, struct timezone *tz)
Do not set errno on error. */
return 0;
}
+
+#ifdef H5_HAVE_WINSOCK_H
+#pragma comment(lib, "advapi32.lib")
+#endif
+
+#define WloginBuffer_count 256
+static char Wlogin_buffer[WloginBuffer_count];
+
+char*
+Wgetlogin()
+{
+
+#ifdef H5_HAVE_WINSOCK_H
+ long bufferCount = WloginBuffer_count;
+ if (GetUserName(Wlogin_buffer, &bufferCount) == 0)
+ return (Wlogin_buffer);
+ else
+#endif /* H5_HAVE_WINSOCK_H */
+ return NULL;
+}
+
#endif
@@ -645,16 +666,16 @@ Wgettimeofday(struct timeval *tv, struct timezone *tz)
* Function: H5_build_extpath
*
* Purpose: To build the path for later searching of target file for external
- * link. This path can be either:
+ * link. This path can be either:
* 1. The absolute path of NAME
* or
* 2. The current working directory + relative path of NAME
*
- * Return: Success: 0
- * Failure: -1
+ * Return: Success: 0
+ * Failure: -1
*
- * Programmer: Vailin Choi
- * April 2, 2008
+ * Programmer: Vailin Choi
+ * April 2, 2008
*
*-------------------------------------------------------------------------
*/
@@ -692,23 +713,23 @@ H5_build_extpath(const char *name, char **extpath/*out*/)
if(NULL == (new_name = (char *)H5MM_strdup(name)))
HGOTO_ERROR(H5E_INTERNAL, H5E_NOSPACE, FAIL, "memory allocation failed")
- /*
- * Windows: name[0-1] is "<drive-letter>:"
- * Get current working directory on the drive specified in NAME
- * Unix: does not apply
+ /*
+ * Windows: name[0-1] is "<drive-letter>:"
+ * Get current working directory on the drive specified in NAME
+ * Unix: does not apply
* OpenVMS: does not apply
- */
+ */
if(CHECK_ABS_DRIVE(name)) {
drive = name[0] - 'A' + 1;
retcwd = HDgetdcwd(drive, cwdpath, MAX_PATH_LEN);
HDstrcpy(new_name, &name[2]);
} /* end if */
- /*
- * Windows: name[0] is a '/' or '\'
- * Get current drive
- * Unix: does not apply
+ /*
+ * Windows: name[0] is a '/' or '\'
+ * Get current drive
+ * Unix: does not apply
* OpenVMS: does not apply
- */
+ */
else if(CHECK_ABS_PATH(name) && (0 != (drive = HDgetdrive()))) {
sprintf(cwdpath, "%c:%c", (drive+'A'-1), name[0]);
retcwd = cwdpath;
@@ -764,9 +785,9 @@ H5_build_extpath(const char *name, char **extpath/*out*/)
done:
/* Release resources */
if(cwdpath)
- H5MM_xfree(cwdpath);
+ H5MM_xfree(cwdpath);
if(new_name)
- H5MM_xfree(new_name);
+ H5MM_xfree(new_name);
FUNC_LEAVE_NOAPI(ret_value)
} /* H5_build_extpath() */
diff --git a/src/H5win32defs.h b/src/H5win32defs.h
index a428899..743ceaa 100644
--- a/src/H5win32defs.h
+++ b/src/H5win32defs.h
@@ -53,11 +53,13 @@ struct timezone {
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-H5_DLL int Wgettimeofday(struct timeval *tv, struct timezone *tz);
+ H5_DLL int Wgettimeofday(struct timeval *tv, struct timezone *tz);
+ H5_DLL char* Wgetlogin();
#ifdef __cplusplus
}
#endif /* __cplusplus */
#define HDgettimeofday(V,Z) Wgettimeofday(V,Z)
+#define HDgetlogin() Wgetlogin()
#define HDgetdrive() _getdrive()
#define HDlseek(F,O,W) _lseeki64(F,O,W)
diff --git a/testpar/t_cache.c b/testpar/t_cache.c
index 3c626d3..8f193cd 100644
--- a/testpar/t_cache.c
+++ b/testpar/t_cache.c
@@ -49,6 +49,9 @@ hid_t noblock_dxpl_id=(-1);
#define NFILENAME 2
#define PARATESTFILE filenames[0]
const char *FILENAME[NFILENAME]={"CacheTestDummy", NULL};
+#ifndef PATH_MAX
+#define PATH_MAX 512
+#endif /* !PATH_MAX */
char filenames[NFILENAME][PATH_MAX];
hid_t fapl; /* file access property list */
diff --git a/testpar/t_posix_compliant.c b/testpar/t_posix_compliant.c
index 960f4c8..1bc0053 100644
--- a/testpar/t_posix_compliant.c
+++ b/testpar/t_posix_compliant.c
@@ -40,7 +40,9 @@
* mpiexec -np 3 ./t_posix_compliant
*/
+#ifdef H5_HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>