diff options
-rw-r--r-- | tools/h5toh4.c | 409 | ||||
-rw-r--r-- | tools/testfiles/h5dumptst.c | 198 | ||||
-rw-r--r-- | tools/testfiles/tall.h5 | bin | 7836 -> 7836 bytes | |||
-rw-r--r-- | tools/testfiles/tcompound.h5 | bin | 5184 -> 5184 bytes | |||
-rw-r--r-- | tools/testfiles/tcompound2.dmp | 118 | ||||
-rw-r--r-- | tools/testfiles/tcompound2.h5 | bin | 0 -> 13632 bytes | |||
-rw-r--r-- | tools/testfiles/tdset.h5 | bin | 4672 -> 4672 bytes | |||
-rw-r--r-- | tools/testfiles/tdset2.dmp | 373 | ||||
-rw-r--r-- | tools/testfiles/tdset2.h5 | bin | 0 -> 9936 bytes | |||
-rw-r--r-- | tools/testfiles/thlink.h5 | bin | 3332 -> 3332 bytes | |||
-rw-r--r-- | tools/testh5toh4 | 6 |
11 files changed, 901 insertions, 203 deletions
diff --git a/tools/h5toh4.c b/tools/h5toh4.c index 1d4ff55..5aee126 100644 --- a/tools/h5toh4.c +++ b/tools/h5toh4.c @@ -534,295 +534,300 @@ hid_t fieldtype; int32 order; off_t offset; - sd_id = op_data->sd_id; + sd_id = op_data->sd_id; /* hard link */ if ((status = H5Gget_objinfo(did, ".", TRUE, &statbuf)) != SUCCEED ) { - fprintf(stderr,"Error: H5Gget_objinfo() did not work\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - return (status); + fprintf(stderr,"Error: H5Gget_objinfo() did not work\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + return (status); } - if ((type = H5Dget_type(did)) <= 0) { - fprintf(stderr, "Error: H5Dget_type() didn't return appropriate value.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; + if ((type = H5Dget_type(did)) <= 0) { + fprintf(stderr, "Error: H5Dget_type() didn't return appropriate value.\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; return status; - } + } - if ((space = H5Dget_space(did)) <= 0) { - fprintf(stderr, "Error: H5Dget_space() didn't return appropriate value.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; + if ((space = H5Dget_space(did)) <= 0) { + fprintf(stderr, "Error: H5Dget_space() didn't return appropriate value.\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; return status; - } + } - if ((n_values = H5Sget_simple_extent_npoints(space)) <= 0) { - fprintf(stderr, "Error: H5Sget_simple_extent_npoints() returned inappropriate value.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; + if ((n_values = H5Sget_simple_extent_npoints(space)) <= 0) { + fprintf(stderr, "Error: H5Sget_simple_extent_npoints() returned inappropriate value.\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; return status; - } + } - if ((ndims = H5Sget_simple_extent_dims(space,dims,maxdims)) < 0 ) { - fprintf(stderr, "Error: Problems getting ndims, dims, and maxdims of dataset\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = ndims; + if ((ndims = H5Sget_simple_extent_dims(space,dims,maxdims)) < 0 ) { + fprintf(stderr, "Error: Problems getting ndims, dims, and maxdims of dataset\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = ndims; return status; } if ((class = H5Tget_class(type)) < 0 ) { fprintf(stderr,"Error: problem with getting class\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = class; + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = class; return status; } switch (class) { case H5T_INTEGER: case H5T_FLOAT: - if ((h4_type = h5type_to_h4type(type)) == FAIL ) { - fprintf(stderr, "Error: Problems translating h5 type to h4 type\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; - break; - } - if ((mem_type = h4type_to_memtype(h4_type)) == FAIL ) { - fprintf(stderr, "Error: Problems translating h4 type to mem type\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; + if ((h4_type = h5type_to_h4type(type)) == FAIL ) { + fprintf(stderr, "Error: Problems translating h5 type to h4 type\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } + if ((mem_type = h4type_to_memtype(h4_type)) == FAIL ) { + fprintf(stderr, "Error: Problems translating h4 type to mem type\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; return status; - } - if ((typesize = H5Tget_size(mem_type)) <= 0) { - fprintf(stderr, "Error: H5Tget_size() didn't return appropriate value.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; - break; - } + } + if ((typesize = H5Tget_size(mem_type)) <= 0) { + fprintf(stderr, "Error: H5Tget_size() didn't return appropriate value.\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } if ((buffer = HDmalloc(n_values*typesize)) == NULL) { - fprintf(stderr, "Error: Problems with HDmalloc of memory space\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; - break; - } + fprintf(stderr, "Error: Problems with HDmalloc of memory space\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } if ((status = H5Dread(did, mem_type, space, space, H5P_DEFAULT, buffer)) != SUCCEED) { - fprintf(stderr, "Error: Problems with H5Aread\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; - break; - } - for (i=0;i<ndims;i++) { - if (i==0) { - dim_sizes[i] = (int32)maxdims[i]; - } else if (maxdims[i] == 0) { - dim_sizes[i] = (int32)dims[i]; + fprintf(stderr, "Error: Problems with H5Dread\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } + for (i=0;i<ndims;i++) { + if (maxdims[i] == H5S_UNLIMITED) { + if ( i == 0 ) { + dim_sizes[0] = 0; /* this is how HDF4 communicates unlimited dimension */ } else { - dim_sizes[i] = (int32)maxdims[i]; + dim_sizes[i] = (int32)dims[i]; } - start[i] = 0; - edges[i] = (int32)dims[i]; - } - if ((sds_id = SDcreate(sd_id, name, h4_type, ndims, dim_sizes)) <= 0 ) { - fprintf(stderr, "Error: Unable to create SDS %s.\n",name); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; - break; - } - op_data->sds_id = sds_id; - if ((status = SDwritedata(sds_id, start, NULL, edges, buffer)) != SUCCEED ) { - fprintf(stderr, "Error: Unable to write SDS %s.\n",name); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + } else { + dim_sizes[i] = (int32)maxdims[i]; } + start[i] = 0; + edges[i] = (int32)dims[i]; + } + if ((sds_id = SDcreate(sd_id, name, h4_type, ndims, dim_sizes)) <= 0 ) { + fprintf(stderr, "Error: Unable to create SDS %s.\n",name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } + op_data->sds_id = sds_id; + if ((status = SDwritedata(sds_id, start, NULL, edges, buffer)) != SUCCEED ) { + fprintf(stderr, "Error: Unable to write SDS %s.\n",name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + } if ((status = H5Aiterate(did, NULL, (H5G_operator_t)convert_attr, op_data)) < 0 ) { fprintf(stderr,"Error: iterate over attributes\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); } - if ((status = SDendaccess(sds_id)) != SUCCEED ) { - fprintf(stderr, "Error: Unable to end access to SDS %s.\n",name); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - } + if ((status = SDendaccess(sds_id)) != SUCCEED ) { + fprintf(stderr, "Error: Unable to end access to SDS %s.\n",name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + } break; case H5T_TIME: fprintf(stderr,"Error: H5T_TIME not yet implemented.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; case H5T_STRING: fprintf(stderr,"Error: H5T_STRING not yet implemented.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; case H5T_BITFIELD: fprintf(stderr,"Error: H5T_BITFIELD not yet implemented.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; case H5T_OPAQUE: fprintf(stderr,"Error: H5T_OPAQUE not yet implemented.\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; case H5T_COMPOUND: - if (ndims==1) { - if ((nmembers = H5Tget_nmembers(type)) <= 0 ) { - fprintf(stderr, "Error: Unable to get information about compound datatype %d\n",nmembers); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - for (idx=0;idx<nmembers;idx++) { - if ((ndimf = H5Tget_member_dims(type, idx, dimf, permf)) > 1 ) { - fprintf(stdout,"Warning: H5 datasets of H5T_COMPOUND type with ndims = 1, whose members\n"); + if (ndims==1) { + if ((nmembers = H5Tget_nmembers(type)) <= 0 ) { + fprintf(stderr, "Error: Unable to get information about compound datatype %d\n",nmembers); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + for (idx=0;idx<nmembers;idx++) { + if ((ndimf = H5Tget_member_dims(type, idx, dimf, permf)) > 1 ) { + fprintf(stdout,"Warning: H5 datasets of H5T_COMPOUND type with ndims = 1, whose members\n"); fprintf(stdout,"Warning: of the H5T_COMPOUND type have rank > 1 are not converted.\n"); - break; - } - } - hfile_id = op_data->hfile_id; - if ((vdata_id = VSattach(hfile_id, -1, "w")) <= 0 ) { - fprintf(stderr, "Error: Unable to create vdata %s.\n",name); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; break; - } - op_data->vdata_id = vdata_id; - if ((status = VSsetname(vdata_id, name)) != SUCCEED ) { - fprintf(stderr, "Error: Unable to set vdata name %s.\n",name); + } + } + hfile_id = op_data->hfile_id; + if ((vdata_id = VSattach(hfile_id, -1, "w")) <= 0 ) { + fprintf(stderr, "Error: Unable to create vdata %s.\n",name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } + op_data->vdata_id = vdata_id; + if ((status = VSsetname(vdata_id, name)) != SUCCEED ) { + fprintf(stderr, "Error: Unable to set vdata name %s.\n",name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + if ((status = VSsetclass(vdata_id, "HDF5")) != SUCCEED ) { + fprintf(stderr, "Error: Unable to set class on vdata %s\n", name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + for (idx=0;idx<nmembers;idx++) { + if ((ndimf = H5Tget_member_dims(type, idx, dimf, NULL)) < 0 ) { + fprintf(stderr, "Error: field rank for H5T_COMPOUND type %d, idx %d < 0\n", type, idx); DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; } - if ((status = VSsetclass(vdata_id, "HDF5")) != SUCCEED ) { - fprintf(stderr, "Error: Unable to set class on vdata %s\n", name); + if ((fieldname = H5Tget_member_name(type, idx)) == NULL ) { + fprintf(stderr, "Error: Unable to get fieldname for compound type %d, idx %d\n", type, idx); DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; } - for (idx=0;idx<nmembers;idx++) { - if ((ndimf = H5Tget_member_dims(type, idx, dimf, NULL)) < 0 ) { - fprintf(stderr, "Error: field rank for H5T_COMPOUND type %d, idx %d < 0\n", type, idx); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - if ((fieldname = H5Tget_member_name(type, idx)) == NULL ) { - fprintf(stderr, "Error: Unable to get fieldname for compound type %d, idx %d\n", type, idx); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - if ((fieldtype = H5Tget_member_type(type, idx)) < 0 ) { + if ((fieldtype = H5Tget_member_type(type, idx)) < 0 ) { fprintf(stderr,"Error: H5 datasets of H5T_COMPOUND type with fieldtype %d, idx %d.\n",fieldtype,idx); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - if ((h4_type = h5type_to_h4type(fieldtype)) < 0 ) { - fprintf(stderr, "Error: Problems translating h5 type to h4 type\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } -/* - if ((mem_type = h4type_to_memtype(h4_type)) == FAIL ) { - fprintf(stderr, "Error: Problems translating h4 type to mem type\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - return FAIL; - } -*/ - if (ndimf == 0 ) { - order = 1; - } else { - order = dimf[0]; - } - if ((status = VSfdefine(vdata_id, fieldname, h4_type, order)) != SUCCEED ) { - fprintf(stderr, "Error: Unable to set field %d\n", idx); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - strcat(fieldname_list,fieldname); - if (idx<nmembers-1) { - strcat(fieldname_list,", "); - } - - HDfree(fieldname); - } - if ((status = VSsetfields(vdata_id, fieldname_list)) != SUCCEED ) { - fprintf(stderr, "Error: Unable to set fieldname list %s\n", name); DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; } - if ((status = VSsetinterlace(vdata_id, FULL_INTERLACE)) != SUCCEED ) { - fprintf(stderr, "Error: Unable to set FULL_INTERLACE mode, status %d\n", (int)status); + if ((h4_type = h5type_to_h4type(fieldtype)) < 0 ) { + fprintf(stderr, "Error: Problems translating h5 type to h4 type\n"); DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; } - - if ((type2 = H5Tcopy(type)) <= 0 ) { - fprintf(stderr, "Error: H5Tcopy did not SUCCEED, type %d\n", type2); +/* + if ((mem_type = h4type_to_memtype(h4_type)) == FAIL ) { + fprintf(stderr, "Error: Problems translating h4 type to mem type\n"); DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; + return FAIL; } - if ((status = H5Tpack(type2)) != SUCCEED ) { - fprintf(stderr, "Error: H5Tpack did not SUCCEED, status %d\n", (int)status); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; +*/ + if (ndimf == 0 ) { + order = 1; + } else { + order = dimf[0]; } - if ((recsize = H5Tget_size(type2)) <= 0 ) { - fprintf(stderr, "Error: Unable to get record size %d\n", (int)recsize); + if ((status = VSfdefine(vdata_id, fieldname, h4_type, order)) != SUCCEED ) { + fprintf(stderr, "Error: Unable to set field %d\n", idx); DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); break; } - n_records = (int32)dims[0]; - if ((buffer = HDmalloc(n_records*recsize)) == NULL) { - fprintf(stderr, "Error: Problems with HDmalloc of memory space\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; - break; + strcat(fieldname_list,fieldname); + if (idx<nmembers-1) { + strcat(fieldname_list,", "); } + + HDfree(fieldname); + } + if ((status = VSsetfields(vdata_id, fieldname_list)) != SUCCEED ) { + fprintf(stderr, "Error: Unable to set fieldname list %s\n", name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + if ((status = VSsetinterlace(vdata_id, FULL_INTERLACE)) != SUCCEED ) { + fprintf(stderr, "Error: Unable to set FULL_INTERLACE mode, status %d\n", (int)status); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + + if ((type2 = H5Tcopy(type)) <= 0 ) { + fprintf(stderr, "Error: H5Tcopy did not SUCCEED, type %d\n", type2); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + if ((status = H5Tpack(type2)) != SUCCEED ) { + fprintf(stderr, "Error: H5Tpack did not SUCCEED, status %d\n", (int)status); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + if ((recsize = H5Tget_size(type2)) <= 0 ) { + fprintf(stderr, "Error: Unable to get record size %d\n", (int)recsize); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } +/* + Since the space is rank 1, n_records does not depend on maxdims. +*/ + n_records = n_values; + if ((buffer = HDmalloc(n_records*recsize)) == NULL) { + fprintf(stderr, "Error: Problems with HDmalloc of memory space\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } if ((status = H5Dread(did, type2, space, space, H5P_DEFAULT, buffer)) != SUCCEED) { - fprintf(stderr, "Error: Problems with H5Aread\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - status = FAIL; - break; - } + fprintf(stderr, "Error: Problems with H5Dread\n"); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + status = FAIL; + break; + } - if ((record_pos = VSseek(vdata_id, 0)) != 0 ) { - fprintf(stderr, "Error: Could not seek the beginning of the Vdata, %d\n", (int)record_pos); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - if ((num_of_recs = VSwrite(vdata_id, (void *)buffer, n_records, FULL_INTERLACE)) != n_records ) { - fprintf(stderr, "Error: Only able to write %d of %d records\n", (int)num_of_recs, (int)n_records); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - /* there are only vdata attributes, no field attributes */ + if ((record_pos = VSseek(vdata_id, 0)) != 0 ) { + fprintf(stderr, "Error: Could not seek the beginning of the Vdata, %d\n", (int)record_pos); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + if ((num_of_recs = VSwrite(vdata_id, (void *)buffer, n_records, FULL_INTERLACE)) != n_records ) { + fprintf(stderr, "Error: Only able to write %d of %d records\n", (int)num_of_recs, (int)n_records); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } + /* there are only vdata attributes, no field attributes */ if ((status = H5Aiterate(did, NULL, (H5G_operator_t)convert_attr, op_data)) < 0 ) { fprintf(stderr,"Error: iterate over attributes\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); } - if ((status = VSdetach(vdata_id)) != SUCCEED ) { - fprintf(stderr, "Error: Unable to detach to vdata %s.\n",name); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } + if ((status = VSdetach(vdata_id)) != SUCCEED ) { + fprintf(stderr, "Error: Unable to detach to vdata %s.\n",name); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; + } - if ((status = H5Tclose(type2)) != SUCCEED ) { - fprintf(stderr, "Error: H5Tclose did not SUCCEED, status %d\n", (int)status); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); - break; - } - } else { - fprintf(stdout,"Warning: H5 datasets of H5T_COMPOUND type with ndims > 1 are not converted.\n"); + if ((status = H5Tclose(type2)) != SUCCEED ) { + fprintf(stderr, "Error: H5Tclose did not SUCCEED, status %d\n", (int)status); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + break; } - break; + } else { + fprintf(stdout,"Warning: H5 datasets of H5T_COMPOUND type with ndims > 1 are not converted.\n"); + } + break; default: fprintf(stderr,"Error: %d class not found\n",class); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); } if ((status = H5Tclose(type)) < 0 ) { fprintf(stderr,"Error: closing type\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); } if ((status = H5Sclose(space)) < 0 ) { fprintf(stderr,"Error: closing space\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); } HDfree(buffer); - return status; + return status; } @@ -889,7 +894,7 @@ int32 n_values; if ((mem_type = h4type_to_memtype(h4_type)) == FAIL ) { fprintf(stderr, "Error: Problems translating h4 type to mem type\n"); - DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_dataset", __FILE__, __LINE__); + DEBUG_PRINT("Error detected in %s() [%s line %d]\n", "convert_attr", __FILE__, __LINE__); status = FAIL; return status; } diff --git a/tools/testfiles/h5dumptst.c b/tools/testfiles/h5dumptst.c index 43be347..36bd35c 100644 --- a/tools/testfiles/h5dumptst.c +++ b/tools/testfiles/h5dumptst.c @@ -1,6 +1,7 @@ /* * Generate the binary hdf5 files for the h5dump tests. */ +#include <limits.h> #include "hdf5.h" #define FILE1 "tgroup.h5" @@ -10,6 +11,8 @@ #define FILE5 "thlink.h5" #define FILE6 "tcompound.h5" #define FILE7 "tall.h5" +#define FILE8 "tdset2.h5" +#define FILE9 "tcompound2.h5" static void test_group(void) { hid_t fid, group; @@ -90,6 +93,49 @@ int i, j; H5Fclose(fid); } +static void test_dataset2(void) { +hid_t fid, dataset, space, create_plist; +hsize_t dims[2]; +hsize_t maxdims[2]; +int dset1[10][20]; +double dset2[30][10]; +int i, j; + + + fid = H5Fcreate(FILE8, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + create_plist = H5Pcreate(H5P_DATASET_CREATE); + + dims[0] = 5; dims[1] = 5; + H5Pset_chunk(create_plist, 2, dims); + + /* dset1 */ + dims[0] = 10; dims[1] = 20; + maxdims[0] = H5S_UNLIMITED; maxdims[1] = 20; + space = H5Screate_simple(2, dims, maxdims); + dataset = H5Dcreate(fid, "/dset1", H5T_STD_I32BE, space, create_plist); + for (i = 0; i < 10; i++) + for (j = 0; j < 20; j++) + dset1[i][j] = j; + H5Dwrite(dataset, H5T_STD_I32BE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); + H5Sclose(space); + H5Dclose(dataset); + + /* dset2 */ + dims[0] = 30; dims[1] = 10; + maxdims[0] = 30; maxdims[1] = H5S_UNLIMITED; + space = H5Screate_simple(2, dims, maxdims); + dataset = H5Dcreate(fid, "/dset2", H5T_IEEE_F64BE, space, create_plist); + for (i = 0; i < 30; i++) + for (j = 0; j < 10; j++) + dset2[i][j] = j; + H5Dwrite(dataset, H5T_IEEE_F64BE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); + H5Sclose(space); + H5Dclose(dataset); + + + H5Fclose(fid); +} static void test_attribute(void) { hid_t fid, root, space, attr; @@ -329,6 +375,156 @@ hsize_t sdim = 5; } +/* + / + / | \ \ + dset1 group1 type1 type2 + | + dset2 + +*/ +static void test_compound_dt2(void) { /* test compound data type */ +hid_t fid, group, dataset, space, type, create_plist; +typedef struct { + int a; + float b; + double c; +} dset1_t; +dset1_t dset1[10]; + +typedef struct { + int a; + float b; +} dset2_t; +dset2_t dset2[10]; + +typedef struct { + int a[4]; + float b[5][6]; +} dset3_t; + +typedef struct { + int a; + float b; +} dset4_t; +dset4_t dset4[10]; + +typedef struct { + int a; + float b; +} dset5_t; +dset5_t dset5[10]; + +int i, ndims; +const int perm[2]; +size_t dim[2]; + +hsize_t sdim, maxdim; + + sdim = 10; + for (i = 0; i < (int)sdim; i++) { + dset1[i].a = i; + dset1[i].b = i*i; + dset1[i].c = 1./(i+1); + + dset2[i].a = i; + dset2[i].b = i+ i*0.1; + + dset4[i].a = i; + dset4[i].b = i*1.0; + + dset5[i].a = i; + dset5[i].b = i*1.0; + } + + fid = H5Fcreate(FILE9, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + create_plist = H5Pcreate(H5P_DATASET_CREATE); + + sdim = 2; + H5Pset_chunk(create_plist, 1, &sdim); + + sdim = 6; + maxdim = H5S_UNLIMITED; + + space = H5Screate_simple(1, &sdim, &maxdim); + + type = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); + + H5Tinsert(type, "a_name", HOFFSET(dset1_t, a), H5T_STD_I32BE); + H5Tinsert(type, "b_name", HOFFSET(dset1_t, b), H5T_IEEE_F32BE); + H5Tinsert(type, "c_name", HOFFSET(dset1_t, c), H5T_IEEE_F64BE); + + dataset = H5Dcreate(fid, "/dset1", type, space, create_plist); + H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); + + H5Tclose(type); + H5Sclose(space); + H5Dclose(dataset); + + sdim = 6; + maxdim = 10; + + space = H5Screate_simple(1, &sdim, &maxdim); + + /* shared data type 1 */ + type = H5Tcreate (H5T_COMPOUND, sizeof(dset2_t)); + H5Tinsert(type, "int_name", HOFFSET(dset2_t, a), H5T_STD_I32BE); + H5Tinsert(type, "float_name", HOFFSET(dset2_t, b), H5T_IEEE_F32BE); + H5Tcommit(fid, "type1", type); + + group = H5Gcreate (fid, "/group1", 0); + + dataset = H5Dcreate(group, "dset2", type, space, create_plist); + H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); + + H5Tclose(type); + H5Dclose(dataset); + + + /* shared data type 2 */ + type = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t)); + ndims = 1; dim[0] = 4; + H5Tinsert_array(type, "int_array", HOFFSET(dset3_t, a), ndims, dim, perm, H5T_STD_I32BE); + ndims = 2; dim[0] = 5; dim[1] = 6; + H5Tinsert_array(type, "float_array", HOFFSET(dset3_t, b), ndims, dim, perm, H5T_STD_I32BE); + H5Tcommit(fid, "type2", type); + H5Tclose(type); + + /* shared data type 3 */ + type = H5Tcreate (H5T_COMPOUND, sizeof(dset4_t)); + H5Tinsert(type, "int", HOFFSET(dset4_t, a), H5T_STD_I32BE); + H5Tinsert(type, "float", HOFFSET(dset4_t, b), H5T_IEEE_F32BE); + H5Tcommit(group, "type3", type); + + dataset = H5Dcreate(group, "dset4", type, space, create_plist); + H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset4); + + H5Tclose(type); + H5Dclose(dataset); + H5Gclose(group); + + + /* unamed data type */ + group = H5Gcreate (fid, "/group2", 0); + + type = H5Tcreate (H5T_COMPOUND, sizeof(dset5_t)); + H5Tinsert(type, "int", HOFFSET(dset5_t, a), H5T_STD_I32BE); + H5Tinsert(type, "float", HOFFSET(dset5_t, b), H5T_IEEE_F32BE); + H5Tcommit(group, "type4", type); + dataset = H5Dcreate(group, "dset5", type, space, create_plist); + H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset5); + + H5Gunlink(group,"type4"); + + H5Tclose(type); + H5Dclose(dataset); + H5Sclose(space); + H5Gclose(group); + + H5Fclose(fid); + +} /* @@ -472,8 +668,10 @@ test_group(); test_attribute(); test_softlink(); test_dataset(); +test_dataset2(); test_hardlink(); test_compound_dt(); +test_compound_dt2(); test_all(); return 0; diff --git a/tools/testfiles/tall.h5 b/tools/testfiles/tall.h5 Binary files differindex 81a8493..8ccc0e0 100644 --- a/tools/testfiles/tall.h5 +++ b/tools/testfiles/tall.h5 diff --git a/tools/testfiles/tcompound.h5 b/tools/testfiles/tcompound.h5 Binary files differindex 19e4b8c..8c8eb69 100644 --- a/tools/testfiles/tcompound.h5 +++ b/tools/testfiles/tcompound.h5 diff --git a/tools/testfiles/tcompound2.dmp b/tools/testfiles/tcompound2.dmp new file mode 100644 index 0000000..4a16d87 --- /dev/null +++ b/tools/testfiles/tcompound2.dmp @@ -0,0 +1,118 @@ +File name: testfiles/tcompound2.hdf + + +Vgroup:0 + tag = 1965; reference = 2; + name = /; class = HDF5; + number of entries = 2; + number of attributes = 0 +Entries:- + #0 (Vgroup) + tag = 1965;reference = 4; + number of entries = 0; + name = group1; class = HDF5 + number of attributes = 0 + #1 (Vgroup) + tag = 1965;reference = 10; + number of entries = 0; + name = group2; class = HDF5 + number of attributes = 0 + + +Vgroup:1 + tag = 1965; reference = 4; + name = group1; class = HDF5; + number of entries = 0; + number of attributes = 0 +Entries:- + None. + + +Vgroup:2 + tag = 1965; reference = 10; + name = group2; class = HDF5; + number of entries = 0; + number of attributes = 0 +Entries:- + None. + + +Graphical representation of the file:- +(vg#: vgroup; vd: vdata) + + vg0 -- vg1 + -- vg2 + + vg1 + + vg2 + +File name: testfiles/tcompound2.hdf + +Vdata: 0 + tag = 1962; reference = 3; + number of records = 6; interlace = 0; + fields = [a_name, b_name, c_name]; + record size (in bytes) = 16; + name = dset1; class = HDF5; + number of attributes = 0 +- field index 0: [a_name], type=24, order=1 + number of attributes = 0 +- field index 1: [b_name], type=5, order=1 + number of attributes = 0 +- field index 2: [c_name], type=6, order=1 + number of attributes = 0 +Loc. Data +0 0 0.000000 1.000000 ; 1 1.000000 0.500000 ; 2 4.000000 0.333333 ; +3 3 9.000000 0.250000 ; 4 16.000000 0.200000 ; 5 25.000000 0.166667 ; + + +Vdata: 1 + tag = 1962; reference = 5; + number of records = 6; interlace = 0; + fields = [int_name, float_name]; + record size (in bytes) = 8; + name = dset2; class = HDF5; + number of attributes = 0 +- field index 0: [int_name], type=24, order=1 + number of attributes = 0 +- field index 1: [float_name], type=5, order=1 + number of attributes = 0 +Loc. Data +0 0 0.000000 ; 1 1.100000 ; 2 2.200000 ; +3 3 3.300000 ; 4 4.400000 ; 5 5.500000 ; + + +Vdata: 2 + tag = 1962; reference = 7; + number of records = 6; interlace = 0; + fields = [int, float]; + record size (in bytes) = 8; + name = dset4; class = HDF5; + number of attributes = 0 +- field index 0: [int], type=24, order=1 + number of attributes = 0 +- field index 1: [float], type=5, order=1 + number of attributes = 0 +Loc. Data +0 0 0.000000 ; 1 1.000000 ; 2 2.000000 ; +3 3 3.000000 ; 4 4.000000 ; 5 5.000000 ; + + +Vdata: 3 + tag = 1962; reference = 11; + number of records = 6; interlace = 0; + fields = [int, float]; + record size (in bytes) = 8; + name = dset5; class = HDF5; + number of attributes = 0 +- field index 0: [int], type=24, order=1 + number of attributes = 0 +- field index 1: [float], type=5, order=1 + number of attributes = 0 +Loc. Data +0 0 0.000000 ; 1 1.000000 ; 2 2.000000 ; +3 3 3.000000 ; 4 4.000000 ; 5 5.000000 ; + + +File name: testfiles/tcompound2.hdf diff --git a/tools/testfiles/tcompound2.h5 b/tools/testfiles/tcompound2.h5 Binary files differnew file mode 100644 index 0000000..6df3bf5 --- /dev/null +++ b/tools/testfiles/tcompound2.h5 diff --git a/tools/testfiles/tdset.h5 b/tools/testfiles/tdset.h5 Binary files differindex 16c17f2..a35040c 100644 --- a/tools/testfiles/tdset.h5 +++ b/tools/testfiles/tdset.h5 diff --git a/tools/testfiles/tdset2.dmp b/tools/testfiles/tdset2.dmp new file mode 100644 index 0000000..58c1601 --- /dev/null +++ b/tools/testfiles/tdset2.dmp @@ -0,0 +1,373 @@ +File name: testfiles/tdset2.hdf + + +Vgroup:0 + tag = 1965; reference = 2; + name = /; class = HDF5; + number of entries = 0; + number of attributes = 0 +Entries:- + None. + + +Vgroup:1 + tag = 1965; reference = 8; + name = fakeDim0; class = UDim0.0; + number of entries = 1; + number of attributes = 0 +Entries:- + #0 (Vdata) + tag = 1962; reference = 7; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim0; class = DimVal0.1; + total number of attributes = 0. + + +Vgroup:2 + tag = 1965; reference = 10; + name = fakeDim1; class = Dim0.0; + number of entries = 1; + number of attributes = 0 +Entries:- + #0 (Vdata) + tag = 1962; reference = 9; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim1; class = DimVal0.1; + total number of attributes = 0. + + +Vgroup:3 + tag = 1965; reference = 12; + name = fakeDim2; class = Dim0.0; + number of entries = 1; + number of attributes = 0 +Entries:- + #0 (Vdata) + tag = 1962; reference = 11; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim2; class = DimVal0.1; + total number of attributes = 0. + + +Vgroup:4 + tag = 1965; reference = 14; + name = fakeDim3; class = Dim0.0; + number of entries = 1; + number of attributes = 0 +Entries:- + #0 (Vdata) + tag = 1962; reference = 13; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim3; class = DimVal0.1; + total number of attributes = 0. + + +Vgroup:5 + tag = 1965; reference = 16; + name = dset1; class = Var0.0; + number of entries = 6; + number of attributes = 0 +Entries:- + #0 (Vgroup) + tag = 1965;reference = 8; + number of entries = 1; + name = fakeDim0; class = UDim0.0 + number of attributes = 0 + #1 (Vgroup) + tag = 1965;reference = 10; + number of entries = 1; + name = fakeDim1; class = Dim0.0 + number of attributes = 0 + #2 (Scientific Data) + tag = 702; reference = 4; + #3 (Number type) + tag = 106; reference = 15; + #4 (SciData dimension record) + tag = 701; reference = 15; + #5 (Numeric Data Group) + tag = 720; reference = 3; + + +Vgroup:6 + tag = 1965; reference = 18; + name = dset2; class = Var0.0; + number of entries = 6; + number of attributes = 0 +Entries:- + #0 (Vgroup) + tag = 1965;reference = 12; + number of entries = 1; + name = fakeDim2; class = Dim0.0 + number of attributes = 0 + #1 (Vgroup) + tag = 1965;reference = 14; + number of entries = 1; + name = fakeDim3; class = Dim0.0 + number of attributes = 0 + #2 (Scientific Data) + tag = 702; reference = 6; + #3 (Number type) + tag = 106; reference = 17; + #4 (SciData dimension record) + tag = 701; reference = 17; + #5 (Numeric Data Group) + tag = 720; reference = 5; + + +Vgroup:7 + tag = 1965; reference = 19; + name = tdset2.hdf; class = CDF0.0; + number of entries = 6; + number of attributes = 0 +Entries:- + #0 (Vgroup) + tag = 1965;reference = 8; + number of entries = 1; + name = fakeDim0; class = UDim0.0 + number of attributes = 0 + #1 (Vgroup) + tag = 1965;reference = 10; + number of entries = 1; + name = fakeDim1; class = Dim0.0 + number of attributes = 0 + #2 (Vgroup) + tag = 1965;reference = 12; + number of entries = 1; + name = fakeDim2; class = Dim0.0 + number of attributes = 0 + #3 (Vgroup) + tag = 1965;reference = 14; + number of entries = 1; + name = fakeDim3; class = Dim0.0 + number of attributes = 0 + #4 (Vgroup) + tag = 1965;reference = 16; + number of entries = 6; + name = dset1; class = Var0.0 + number of attributes = 0 + #5 (Vgroup) + tag = 1965;reference = 18; + number of entries = 6; + name = dset2; class = Var0.0 + number of attributes = 0 + + +Graphical representation of the file:- +(vg#: vgroup; vd: vdata) + + vg0 + + vg1 -- vd + + vg2 -- vd + + vg3 -- vd + + vg4 -- vd + + vg5 -- vg1 -- vd + -- vg2 -- vd + -- Scientific Data + -- Number type + -- SciData dimension record + -- Numeric Data Group + + vg6 -- vg3 -- vd + -- vg4 -- vd + -- Scientific Data + -- Number type + -- SciData dimension record + -- Numeric Data Group + + vg7 -- vg1 -- vd + -- vg2 -- vd + -- vg3 -- vd + -- vg4 -- vd + -- vg5 -- vg1 -- vd + -- vg2 -- vd + -- Scientific Data + -- Number type + -- SciData dimension record + -- Numeric Data Group + -- vg6 -- vg3 -- vd + -- vg4 -- vd + -- Scientific Data + -- Number type + -- SciData dimension record + -- Numeric Data Group + +File name: testfiles/tdset2.hdf + +Vdata: 0 + tag = 1962; reference = 7; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim0; class = DimVal0.1; + number of attributes = 0 +- field index 0: [Values], type=24, order=1 + number of attributes = 0 +Loc. Data +0 1 ; + +Vdata: 1 + tag = 1962; reference = 9; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim1; class = DimVal0.1; + number of attributes = 0 +- field index 0: [Values], type=24, order=1 + number of attributes = 0 +Loc. Data +0 20 ; + +Vdata: 2 + tag = 1962; reference = 11; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim2; class = DimVal0.1; + number of attributes = 0 +- field index 0: [Values], type=24, order=1 + number of attributes = 0 +Loc. Data +0 30 ; + +Vdata: 3 + tag = 1962; reference = 13; + number of records = 1; interlace = 0; + fields = [Values]; + record size (in bytes) = 4; + name = fakeDim3; class = DimVal0.1; + number of attributes = 0 +- field index 0: [Values], type=24, order=1 + number of attributes = 0 +Loc. Data +0 10 ; + +File name: testfiles/tdset2.hdf + +Variable Name = dset1 + Index = 0 + Type= 32-bit signed integer + Ref. = 3 + Rank = 2 + Number of attributes = 0 + Dim0: Name=fakeDim0 + Size = UNLIMITED (currently 10) + Scale Type = number-type not set + Number of attributes = 0 + Dim1: Name=fakeDim1 + Size = 20 + Scale Type = number-type not set + Number of attributes = 0 + Data : + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + + + + +Variable Name = dset2 + Index = 1 + Type= 64-bit floating point + Ref. = 5 + Rank = 2 + Number of attributes = 0 + Dim0: Name=fakeDim2 + Size = 30 + Scale Type = number-type not set + Number of attributes = 0 + Dim1: Name=fakeDim3 + Size = 10 + Scale Type = number-type not set + Number of attributes = 0 + Data : + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 + 6.000000 7.000000 8.000000 9.000000 + + diff --git a/tools/testfiles/tdset2.h5 b/tools/testfiles/tdset2.h5 Binary files differnew file mode 100644 index 0000000..fc1bcaa --- /dev/null +++ b/tools/testfiles/tdset2.h5 diff --git a/tools/testfiles/thlink.h5 b/tools/testfiles/thlink.h5 Binary files differindex 8419785..49ebeb5 100644 --- a/tools/testfiles/thlink.h5 +++ b/tools/testfiles/thlink.h5 diff --git a/tools/testh5toh4 b/tools/testh5toh4 index 5b5e85f..22ea13b 100644 --- a/tools/testh5toh4 +++ b/tools/testh5toh4 @@ -236,21 +236,25 @@ MESG 3 "$TestName" $RM ./testfiles/*.hdf ./testfiles/*.tmp TEST tgroup.h5 TEST tdset.h5 +TEST tdset2.h5 TEST tattr.h5 TEST tslink.h5 TEST thlink.h5 TEST tcompound.h5 +TEST tcompound2.h5 TEST tall.h5 $RM ./testfiles/*.tmp TEST tgroup.h5 tgroup.hdf TEST tdset.h5 tdset.hdf +TEST tdset2.h5 tdset2.hdf TEST tattr.h5 tattr.hdf TEST tslink.h5 tslink.hdf TEST thlink.h5 thlink.hdf TEST tcompound.h5 tcompound.hdf +TEST tcompound2.h5 tcompound2.hdf TEST tall.h5 tall.hdf $RM ./testfiles/*.hdf ./testfiles/*.tmp -TEST -m tgroup.h5 tdset.h5 tattr.h5 tslink.h5 thlink.h5 tcompound.h5 tall.h5 +TEST -m tgroup.h5 tdset.h5 tdset2.h5 tattr.h5 tslink.h5 thlink.h5 tcompound.h5 tcompound2.h5 tall.h5 $RM ./testfiles/*.hdf ./testfiles/*.tmp else MESG 3 "$TestName <<<SKIPPED>>>" |