Mercurial > octave
diff src/ls-hdf5.h @ 6760:301885c9d265
[project @ 2007-06-27 02:27:51 by dbateman]
author | dbateman |
---|---|
date | Wed, 27 Jun 2007 02:27:51 +0000 |
parents | 768d3ad80bbf |
children | 93c65f2a5668 |
line wrap: on
line diff
--- a/src/ls-hdf5.h Tue Jun 26 15:54:41 2007 +0000 +++ b/src/ls-hdf5.h Wed Jun 27 02:27:51 2007 +0000 @@ -44,13 +44,20 @@ hdf5_fstreambase () { file_id = -1; } + ~hdf5_fstreambase () { close (); } + hdf5_fstreambase (const char *name, int mode, int /* prot */ = 0) { if (mode & std::ios::in) file_id = H5Fopen (name, H5F_ACC_RDONLY, H5P_DEFAULT); else if (mode & std::ios::out) - file_id = H5Fcreate (name, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - + { + if (mode & std::ios::app && H5Fis_hdf5 (name) > 0) + file_id = H5Fopen (name, H5F_ACC_RDWR, H5P_DEFAULT); + else + file_id = H5Fcreate (name, H5F_ACC_TRUNC, H5P_DEFAULT, + H5P_DEFAULT); + } if (file_id < 0) std::ios::setstate (std::ios::badbit); @@ -74,8 +81,13 @@ if (mode & std::ios::in) file_id = H5Fopen (name, H5F_ACC_RDONLY, H5P_DEFAULT); else if (mode & std::ios::out) - file_id = H5Fcreate (name, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - + { + if (mode & std::ios::app && H5Fis_hdf5 (name) > 0) + file_id = H5Fopen (name, H5F_ACC_RDWR, H5P_DEFAULT); + else + file_id = H5Fcreate (name, H5F_ACC_TRUNC, H5P_DEFAULT, + H5P_DEFAULT); + } if (file_id < 0) std::ios::setstate (std::ios::badbit);