Fixes a couple of warnings: (#849)

- warn_unused_result warnings from h5jamgentest and j5stat_gentest
   that were triggered by write(2) calls where we didn't check the
   return value
 - A missing callback in the NULL VOL connector
 - A possibly uninitialized property list pointer
This commit is contained in:
Dana Robinson 2021-07-22 06:13:14 -07:00 committed by GitHub
parent 96b6872a1e
commit 06de43332d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 359 additions and 153 deletions

View File

@ -2281,7 +2281,7 @@ herr_t
H5Pset_dataset_io_hyperslab_selection(hid_t plist_id, unsigned rank, H5S_seloper_t op, const hsize_t start[],
const hsize_t stride[], const hsize_t count[], const hsize_t block[])
{
H5P_genplist_t *plist; /* Property list pointer */
H5P_genplist_t *plist = NULL; /* Property list pointer */
H5S_t * space; /* Dataspace to hold selection */
hbool_t space_created = FALSE; /* Whether a new dataspace has been created */
hbool_t reset_prop_on_error = FALSE; /* Whether to reset the property on failure */
@ -2371,7 +2371,7 @@ H5Pset_dataset_io_hyperslab_selection(hid_t plist_id, unsigned rank, H5S_seloper
done:
/* Cleanup on failure */
if (ret_value < 0) {
if (reset_prop_on_error && H5P_poke(plist, H5D_XFER_DSET_IO_SEL_NAME, &space) < 0)
if (reset_prop_on_error && plist && H5P_poke(plist, H5D_XFER_DSET_IO_SEL_NAME, &space) < 0)
HDONE_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "error setting dataset I/O selection")
if (space_created && H5S_close(space) < 0)
HDONE_ERROR(H5E_PLIST, H5E_CLOSEERROR, FAIL, "unable to release dataspace")

View File

@ -116,6 +116,7 @@ static const H5VL_class_t null_vol_g = {
{
/* introspect_cls */
NULL, /* get_conn_cls */
NULL, /* get_cap_flags */
NULL, /* opt_query */
},
{

View File

@ -83,7 +83,7 @@ UD_traverse(const char H5_ATTR_UNUSED *link_name, hid_t H5_ATTR_UNUSED cur_group
const void H5_ATTR_UNUSED *udata, size_t H5_ATTR_UNUSED udata_size, hid_t H5_ATTR_UNUSED lapl_id,
hid_t H5_ATTR_UNUSED dxpl_id)
{
return -1;
return H5I_INVALID_HID;
}
#define MY_LINKCLASS 187
@ -116,196 +116,311 @@ g2 : dset2.1 dset2.2 udlink
*/
static void
static herr_t
gent_ub(const char *filename, size_t ub_size, size_t ub_fill)
{
hid_t fid, group, attr, dataset, space;
hid_t create_plist;
hid_t fid = H5I_INVALID_HID;
hid_t group = H5I_INVALID_HID;
hid_t attr = H5I_INVALID_HID;
hid_t dataset = H5I_INVALID_HID;
hid_t space = H5I_INVALID_HID;
hid_t create_plist = H5I_INVALID_HID;
hsize_t dims[2];
int data[2][2], dset1[10][10], dset2[20];
char buf[BUF_SIZE];
int i, j;
size_t u;
float dset2_1[10], dset2_2[3][5];
int fd;
char * bp;
int fd = -1;
if (ub_size > 0) {
create_plist = H5Pcreate(H5P_FILE_CREATE);
H5Pset_userblock(create_plist, (hsize_t)ub_size);
fid = H5Fcreate(filename, H5F_ACC_TRUNC, create_plist, H5P_DEFAULT);
if ((create_plist = H5Pcreate(H5P_FILE_CREATE)) < 0)
goto error;
if (H5Pset_userblock(create_plist, (hsize_t)ub_size) < 0)
goto error;
if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, create_plist, H5P_DEFAULT)) < 0)
goto error;
}
else {
fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
}
/* create groups */
group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
H5Gclose(group);
/* Create groups */
if ((group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (H5Gclose(group) < 0)
goto error;
group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
H5Gclose(group);
if ((group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (H5Gclose(group) < 0)
goto error;
group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
H5Gclose(group);
if ((group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (H5Gclose(group) < 0)
goto error;
group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
H5Gclose(group);
if ((group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (H5Gclose(group) < 0)
goto error;
group = H5Gcreate2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
H5Gclose(group);
if ((group = H5Gcreate2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (H5Gclose(group) < 0)
goto error;
/* root attributes */
group = H5Gopen2(fid, "/", H5P_DEFAULT);
/* Root attributes */
if ((group = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0)
goto error;
dims[0] = 10;
space = H5Screate_simple(1, dims, NULL);
attr = H5Acreate2(group, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT);
HDsprintf(buf, "abcdefghi");
H5Awrite(attr, H5T_NATIVE_SCHAR, buf);
H5Sclose(space);
H5Aclose(attr);
if ((space = H5Screate_simple(1, dims, NULL)) < 0)
goto error;
if ((attr = H5Acreate2(group, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (HDsprintf(buf, "abcdefghi") < 0)
goto error;
if (H5Awrite(attr, H5T_NATIVE_SCHAR, buf) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
if (H5Aclose(attr) < 0)
goto error;
dims[0] = 2;
dims[1] = 2;
space = H5Screate_simple(2, dims, NULL);
attr = H5Acreate2(group, "attr2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT);
dims[0] = 2;
dims[1] = 2;
if ((space = H5Screate_simple(2, dims, NULL)) < 0)
goto error;
if ((attr = H5Acreate2(group, "attr2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
data[0][0] = 0;
data[0][1] = 1;
data[1][0] = 2;
data[1][1] = 3;
H5Awrite(attr, H5T_NATIVE_INT, data);
H5Sclose(space);
H5Aclose(attr);
if (H5Awrite(attr, H5T_NATIVE_INT, data) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
if (H5Aclose(attr) < 0)
goto error;
H5Gclose(group);
if (H5Gclose(group) < 0)
goto error;
group = H5Gopen2(fid, "/g1/g1.1", H5P_DEFAULT);
if ((group = H5Gopen2(fid, "/g1/g1.1", H5P_DEFAULT)) < 0)
goto error;
/* dset1.1.1 */
/* Dataset 1.1.1 */
dims[0] = 10;
dims[1] = 10;
space = H5Screate_simple(2, dims, NULL);
dataset = H5Dcreate2(group, "dset1.1.1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
if ((space = H5Screate_simple(2, dims, NULL)) < 0)
goto error;
if ((dataset =
H5Dcreate2(group, "dset1.1.1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
dset1[i][j] = j * i;
H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1);
H5Sclose(space);
if (H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
/* attributes of dset1.1.1 */
/* Attributes of dset1.1.1 */
dims[0] = 27;
space = H5Screate_simple(1, dims, NULL);
attr = H5Acreate2(dataset, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT);
HDsprintf(buf, "1st attribute of dset1.1.1");
H5Awrite(attr, H5T_NATIVE_SCHAR, buf);
H5Sclose(space);
H5Aclose(attr);
if ((space = H5Screate_simple(1, dims, NULL)) < 0)
goto error;
if ((attr = H5Acreate2(dataset, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (HDsprintf(buf, "1st attribute of dset1.1.1") < 0)
goto error;
if (H5Awrite(attr, H5T_NATIVE_SCHAR, buf) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
if (H5Aclose(attr) < 0)
goto error;
dims[0] = 27;
space = H5Screate_simple(1, dims, NULL);
attr = H5Acreate2(dataset, "attr2", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT);
HDsprintf(buf, "2nd attribute of dset1.1.1");
H5Awrite(attr, H5T_NATIVE_SCHAR, buf);
H5Sclose(space);
H5Aclose(attr);
if ((space = H5Screate_simple(1, dims, NULL)) < 0)
goto error;
if ((attr = H5Acreate2(dataset, "attr2", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if (HDsprintf(buf, "2nd attribute of dset1.1.1") < 0)
goto error;
if (H5Awrite(attr, H5T_NATIVE_SCHAR, buf) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
if (H5Aclose(attr) < 0)
goto error;
H5Dclose(dataset);
if (H5Dclose(dataset) < 0)
goto error;
/* dset1.1.2 */
/* Dataset 1.1.2 */
dims[0] = 20;
space = H5Screate_simple(1, dims, NULL);
dataset = H5Dcreate2(group, "dset1.1.2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
if ((space = H5Screate_simple(1, dims, NULL)) < 0)
goto error;
if ((dataset =
H5Dcreate2(group, "dset1.1.2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
for (i = 0; i < 20; i++)
dset2[i] = i;
H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2);
H5Sclose(space);
H5Dclose(dataset);
if (H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
if (H5Dclose(dataset) < 0)
goto error;
H5Gclose(group);
if (H5Gclose(group) < 0)
goto error;
/* external link */
H5Lcreate_external("somefile", "somepath", fid, "/g1/g1.2/extlink", H5P_DEFAULT, H5P_DEFAULT);
/* External link */
if (H5Lcreate_external("somefile", "somepath", fid, "/g1/g1.2/extlink", H5P_DEFAULT, H5P_DEFAULT) < 0)
goto error;
/* soft link */
group = H5Gopen2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT);
H5Lcreate_soft("somevalue", group, "slink", H5P_DEFAULT, H5P_DEFAULT);
H5Gclose(group);
/* Soft link */
if ((group = H5Gopen2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT)) < 0)
goto error;
if (H5Lcreate_soft("somevalue", group, "slink", H5P_DEFAULT, H5P_DEFAULT) < 0)
goto error;
if (H5Gclose(group) < 0)
goto error;
group = H5Gopen2(fid, "/g2", H5P_DEFAULT);
if ((group = H5Gopen2(fid, "/g2", H5P_DEFAULT)) < 0)
goto error;
/* dset2.1 */
/* Dataset 2.1 */
dims[0] = 10;
space = H5Screate_simple(1, dims, NULL);
dataset = H5Dcreate2(group, "dset2.1", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
if ((space = H5Screate_simple(1, dims, NULL)) < 0)
goto error;
if ((dataset =
H5Dcreate2(group, "dset2.1", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
for (i = 0; i < 10; i++)
dset2_1[i] = (float)((float)i * 0.1F + 1.0F);
H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_1);
H5Sclose(space);
H5Dclose(dataset);
if (H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_1) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
if (H5Dclose(dataset) < 0)
goto error;
/* dset2.2 */
/* Dataset 2.2 */
dims[0] = 3;
dims[1] = 5;
space = H5Screate_simple(2, dims, NULL);
dataset = H5Dcreate2(group, "dset2.2", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
if ((space = H5Screate_simple(2, dims, NULL)) < 0)
goto error;
if ((dataset =
H5Dcreate2(group, "dset2.2", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
for (i = 0; i < 3; i++)
for (j = 0; j < 5; j++)
dset2_2[i][j] = (float)(((float)i + 1.0F) * (float)j * 0.1F);
H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_2);
H5Sclose(space);
H5Dclose(dataset);
if (H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_2) < 0)
goto error;
if (H5Sclose(space) < 0)
goto error;
if (H5Dclose(dataset) < 0)
goto error;
H5Gclose(group);
if (H5Gclose(group) < 0)
goto error;
/* user-defined link */
H5Lregister(UD_link_class);
H5Lcreate_ud(fid, "/g2/udlink", (H5L_type_t)MY_LINKCLASS, NULL, (size_t)0, H5P_DEFAULT, H5P_DEFAULT);
/* User-defined link */
if (H5Lregister(UD_link_class) < 0)
goto error;
if (H5Lcreate_ud(fid, "/g2/udlink", (H5L_type_t)MY_LINKCLASS, NULL, (size_t)0, H5P_DEFAULT, H5P_DEFAULT) <
0)
goto error;
H5Fclose(fid);
/* MUST close the file ID before the user block code or you risk tripping
* over file locking issues.
*/
if (H5Fclose(fid) < 0)
goto error;
/* If a user block is being used, write to it here */
if (ub_size > 0) {
HDassert(ub_size <= BUF_SIZE);
char *bp;
fd = HDopen(filename, O_RDWR);
HDassert(fd >= 0);
if (ub_size > BUF_SIZE)
goto error;
/* fill buf with pattern */
if ((fd = HDopen(filename, O_RDWR)) < 0)
goto error;
/* Fill buf with pattern */
HDmemset(buf, '\0', ub_size);
bp = buf;
for (u = 0; u < ub_fill; u++)
*bp++ = pattern[u % 10];
(void)HDwrite(fd, buf, ub_size);
if (HDwrite(fd, buf, ub_size) < 0)
goto error;
HDclose(fd);
if (HDclose(fd) < 0)
goto error;
}
return SUCCEED;
error:
if (fd >= 0)
HDclose(fd);
H5E_BEGIN_TRY
{
H5Fclose(fid);
H5Gclose(group);
H5Aclose(attr);
H5Dclose(dataset);
H5Sclose(space);
H5Pclose(create_plist);
}
H5E_END_TRY;
return FAIL;
}
static void
/* Creates a simple (i.e., not HDF5) text file and fills it with a pattern */
static herr_t
create_textfile(const char *name, size_t size)
{
char * buf;
int fd;
char * buf = NULL;
int fd = -1;
size_t i;
char * bp;
char * bp = NULL;
fd = HDcreat(name, 0777);
HDassert(fd >= 0);
buf = (char *)HDcalloc(size, (size_t)1);
HDassert(buf);
if ((fd = HDcreat(name, 0777)) < 0)
goto error;
if (NULL == (buf = (char *)HDcalloc(size, 1)))
goto error;
/* fill buf with pattern */
/* Fill buf with pattern */
bp = buf;
for (i = 0; i < size; i++)
*bp++ = pattern[i % 10];
(void)HDwrite(fd, buf, size);
if (HDwrite(fd, buf, size) < 0)
goto error;
HDfree(buf);
HDclose(fd);
return SUCCEED;
error:
HDfree(buf);
if (fd >= 0)
HDclose(fd);
return FAIL;
}
#ifdef notdef
@ -318,19 +433,20 @@ create_binfile(char *name, off_t size)
int i;
char *bp;
fd = creat(name, 0777);
fd = HDcreat(name, 0777);
HDassert(fd >= 0);
buf = HDcalloc(size, 1);
HDassert(buf);
/* fill buf with pattern */
/* Fill buf with pattern */
bp = buf;
for (i = 0; i < size; i++)
*bp++ = (char)i & 0xff;
(void)HDwrite(fd, buf, size);
HDfree(buf);
HDclose(fd);
}
#endif
@ -344,14 +460,19 @@ create_binfile(char *name, off_t size)
int
main(void)
{
/*
create_textfile(UBTXT1, (size_t)0);
*/
create_textfile(UBTXT2, (size_t)10);
create_textfile(UBTXT3, (size_t)511);
create_textfile(UBTXT4, (size_t)512);
create_textfile(UBTXT5, (size_t)513);
if (create_textfile(UBTXT2, 10) < 0)
goto error;
if (create_textfile(UBTXT3, 511) < 0)
goto error;
if (create_textfile(UBTXT4, 512) < 0)
goto error;
if (create_textfile(UBTXT5, 513) < 0)
goto error;
/*
create_textfile(UBTXT6, (size_t)1023);
create_textfile(UBTXT7, (size_t)1024);
@ -365,11 +486,18 @@ main(void)
create_binfile(UBBIN3, (off_t)511);
create_binfile(UBBIN4, (off_t)512);
create_binfile(UBBIN5, (off_t)513);
*/
gent_ub(FILE7, (size_t)0, (size_t)0);
gent_ub(FILE8, (size_t)512, HDstrlen(pattern));
gent_ub(FILE9, (size_t)1024, (size_t)513);
return 0;
if (gent_ub(FILE7, 0, 0) < 0)
goto error;
if (gent_ub(FILE8, 512, HDstrlen(pattern)) < 0)
goto error;
if (gent_ub(FILE9, 1024, 513) < 0)
goto error;
return EXIT_SUCCESS;
error:
HDfprintf(stderr, "h5jam test generator FAILED\n");
return EXIT_FAILURE;
}

View File

@ -51,7 +51,7 @@
* Generate HDF5 file with latest format with
* NUM_GRPS groups and NUM_ATTRS attributes for the dataset
*/
static void
static herr_t
gen_newgrat_file(const char *fname)
{
hid_t fcpl = H5I_INVALID_HID; /* File creation property */
@ -117,6 +117,21 @@ gen_newgrat_file(const char *fname)
} /* end for */
/* Close dataset, dataspace, datatype, file */
if (H5Pclose(fapl) < 0)
goto error;
if (H5Pclose(fcpl) < 0)
goto error;
if (H5Dclose(did) < 0)
goto error;
if (H5Tclose(tid) < 0)
goto error;
if (H5Sclose(sid) < 0)
goto error;
if (H5Fclose(fid) < 0)
goto error;
return SUCCEED;
error:
H5E_BEGIN_TRY
{
@ -130,6 +145,8 @@ error:
H5Fclose(fid);
}
H5E_END_TRY;
return FAIL;
} /* gen_newgrat_file() */
/*
@ -139,7 +156,7 @@ error:
* datasets. -a N (--numattrs=N): Set the threshold for the # of attributes when printing information for
* small # of attributes.
*/
static void
static herr_t
gen_threshold_file(const char *fname)
{
hid_t fid = H5I_INVALID_HID; /* File ID */
@ -302,6 +319,23 @@ gen_threshold_file(const char *fname)
goto error;
}
if (H5Gclose(gid) < 0)
goto error;
if (H5Sclose(sid0) < 0)
goto error;
if (H5Sclose(sid1) < 0)
goto error;
if (H5Sclose(sid2) < 0)
goto error;
if (H5Sclose(sid3) < 0)
goto error;
if (H5Sclose(sid4) < 0)
goto error;
if (H5Fclose(fid) < 0)
goto error;
return SUCCEED;
error:
H5E_BEGIN_TRY
{
@ -317,6 +351,8 @@ error:
}
H5E_END_TRY;
return FAIL;
} /* gen_threshold_file() */
/*
@ -327,18 +363,21 @@ error:
* one dataset: fixed dimension, chunked layout, w/ filters
*
*/
static void
static herr_t
gen_idx_file(const char *fname)
{
hid_t fapl = H5I_INVALID_HID; /* file access property id */
hid_t fid = H5I_INVALID_HID; /* file id */
hid_t sid = H5I_INVALID_HID; /* space id */
hid_t dcpl = H5I_INVALID_HID; /* dataset creation property id */
hid_t did = -1, did2 = H5I_INVALID_HID; /* dataset id */
hsize_t dims[1] = {10}; /* dataset dimension */
hsize_t c_dims[1] = {2}; /* chunk dimension */
int i; /* local index variable */
int buf[10]; /* data buffer */
hid_t fapl = H5I_INVALID_HID; /* file access property id */
hid_t fid = H5I_INVALID_HID; /* file id */
hid_t sid = H5I_INVALID_HID; /* space id */
hid_t dcpl = H5I_INVALID_HID; /* dataset creation property id */
hid_t did = H5I_INVALID_HID; /* dataset id */
#if defined(H5_HAVE_FILTER_DEFLATE)
hid_t did2 = H5I_INVALID_HID; /* dataset id (compressed) */
#endif
hsize_t dims[1] = {10}; /* dataset dimension */
hsize_t c_dims[1] = {2}; /* chunk dimension */
int i; /* local index variable */
int buf[10]; /* data buffer */
/* Get a copy of the file access property */
if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0)
@ -390,6 +429,19 @@ gen_idx_file(const char *fname)
#endif
/* closing: dataspace, dataset, file */
if (H5Pclose(fapl) < 0)
goto error;
if (H5Pclose(dcpl) < 0)
goto error;
if (H5Sclose(sid) < 0)
goto error;
if (H5Dclose(did) < 0)
goto error;
if (H5Fclose(fid) < 0)
goto error;
return SUCCEED;
error:
H5E_BEGIN_TRY
{
@ -404,6 +456,8 @@ error:
}
H5E_END_TRY;
return FAIL;
} /* gen_idx_file() */
/*
@ -419,20 +473,21 @@ error:
* H5O_refcount_decode in the jira issue.
*
*/
static void
static herr_t
gen_err_refcount(const char *fname)
{
hid_t fid = H5I_INVALID_HID; /* File identifier */
hid_t sid = H5I_INVALID_HID; /* Dataspace message */
hid_t did = H5I_INVALID_HID; /* Dataset identifier */
hid_t gid = H5I_INVALID_HID; /* Group identifier */
hid_t aid1 = -1, aid2 = H5I_INVALID_HID; /* Attribute identifier */
hid_t tid = H5I_INVALID_HID; /* Datatype identifier */
int i, n; /* Local index variables */
int buf[10]; /* Data buffer */
hsize_t dims[1]; /* Dimension size */
int fd = -1; /* File descriptor */
unsigned short val = 22; /* The refcount message ID */
hid_t fid = H5I_INVALID_HID; /* File identifier */
hid_t sid = H5I_INVALID_HID; /* Dataspace message */
hid_t did = H5I_INVALID_HID; /* Dataset identifier */
hid_t gid = H5I_INVALID_HID; /* Group identifier */
hid_t aid1 = H5I_INVALID_HID; /* Attribute identifier */
hid_t aid2 = H5I_INVALID_HID; /* Attribute identifier */
hid_t tid = H5I_INVALID_HID; /* Datatype identifier */
int i, n; /* Local index variables */
int buf[10]; /* Data buffer */
hsize_t dims[1]; /* Dimension size */
int fd = -1; /* File descriptor */
unsigned short val = 22; /* The refcount message ID */
/* Initialize data buffer */
n = 0;
@ -485,6 +540,10 @@ gen_err_refcount(const char *fname)
goto error;
if (H5Tclose(tid) < 0)
goto error;
/* Be sure to close this before opening the file again via open(), below,
* or you'll possibly trip over the file locking.
*/
if (H5Fclose(fid) < 0)
goto error;
@ -495,11 +554,16 @@ gen_err_refcount(const char *fname)
with the committed datatype */
/* 24: the offset in the object header containing the version of the
attribute message */
if ((fd = HDopen(fname, O_RDWR, 0633)) >= 0) {
HDlseek(fd, 4520 + 24, SEEK_SET);
(void)HDwrite(fd, &val, 2);
HDclose(fd);
}
if ((fd = HDopen(fname, O_RDWR, 0633)) < 0)
goto error;
if (HDlseek(fd, 4520 + 24, SEEK_SET) < 0)
goto error;
if (HDwrite(fd, &val, 2) < 0)
goto error;
if (HDclose(fd) < 0)
goto error;
return SUCCEED;
error:
H5E_BEGIN_TRY
@ -513,6 +577,11 @@ error:
H5Fclose(fid);
}
H5E_END_TRY;
if (fd >= 0)
HDclose(fd);
return FAIL;
} /* gen_err_refcount() */
/*
@ -542,14 +611,22 @@ error:
int
main(void)
{
gen_newgrat_file(NEWGRAT_FILE);
gen_threshold_file(THRESHOLD_FILE);
if (gen_newgrat_file(NEWGRAT_FILE) < 0)
goto error;
if (gen_threshold_file(THRESHOLD_FILE) < 0)
goto error;
/* Generate an HDF file to test for datasets with Fixed Array indexing */
gen_idx_file(IDX_FILE);
if (gen_idx_file(IDX_FILE) < 0)
goto error;
/* Generate a file with a refcount message ID */
gen_err_refcount(ERR_REFCOUNT_FILE);
if (gen_err_refcount(ERR_REFCOUNT_FILE) < 0)
goto error;
return 0;
return EXIT_SUCCESS;
error:
HDfprintf(stderr, "h5stat test generator FAILED\n");
return EXIT_FAILURE;
}