diff options
Diffstat (limited to 'tools/h5copy/h5copy.c')
-rw-r--r-- | tools/h5copy/h5copy.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/h5copy/h5copy.c b/tools/h5copy/h5copy.c index 5ca21e5..9b4f629 100644 --- a/tools/h5copy/h5copy.c +++ b/tools/h5copy/h5copy.c @@ -272,7 +272,7 @@ main (int argc, const char *argv[]) * open input file *-------------------------------------------------------------------------*/ - fid_src = h5tools_fopen(fname_src, NULL, NULL, 0); + fid_src = h5tools_fopen(fname_src, H5F_ACC_RDONLY, NULL, NULL, 0); /*------------------------------------------------------------------------- * test for error in opening input file @@ -289,7 +289,13 @@ main (int argc, const char *argv[]) * open output file *-------------------------------------------------------------------------*/ - fid_dst = H5Fcreate(fname_dst, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + /* Attempt to open an existing HDF5 file first */ + fid_dst = h5tools_fopen(fname_dst, H5F_ACC_RDWR, NULL, NULL, 0); + + /* If we couldn't open an existing file, try creating file */ + /* (use "EXCL" instead of "TRUNC", so we don't blow away existing non-HDF5 file */ + if(fid_dst < 0) + fid_dst = H5Fcreate(fname_dst, H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT); /*------------------------------------------------------------------------- * test for error in opening output file |