summaryrefslogtreecommitdiffstats
path: root/tools/h5copy/h5copy.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5copy/h5copy.c')
-rw-r--r--tools/h5copy/h5copy.c10
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