mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-30 15:32:37 +08:00
[svn-r23395] Description:
Bring Coverity changes from branch to trunk: r20682: fixed coverity: 76, 77, 635, 636, 1164, 1165, 1166, 1121, 1122, 1117, 1343 Tested on: Mac OSX/64 10.8.3 (amazon) w/C++ & FORTRAN (too minor to require h5committest)
This commit is contained in:
parent
8ad18f496a
commit
59dd5665a5
@ -199,23 +199,21 @@ static int parse_flag(const char* str_flag, unsigned *flag)
|
||||
int
|
||||
main (int argc, const char *argv[])
|
||||
{
|
||||
hid_t fid_src=-1;
|
||||
hid_t fid_dst=-1;
|
||||
char *fname_src=NULL;
|
||||
char *fname_dst=NULL;
|
||||
char *oname_src=NULL;
|
||||
char *oname_dst=NULL;
|
||||
unsigned flag=0;
|
||||
unsigned verbose=0;
|
||||
unsigned parents=0;
|
||||
hid_t fid_src = -1;
|
||||
hid_t fid_dst = -1;
|
||||
char *fname_src = NULL;
|
||||
char *fname_dst = NULL;
|
||||
char *oname_src = NULL;
|
||||
char *oname_dst = NULL;
|
||||
char *str_flag = NULL;
|
||||
unsigned flag = 0;
|
||||
unsigned verbose = 0;
|
||||
unsigned parents = 0;
|
||||
hid_t ocpl_id = (-1); /* Object copy property list */
|
||||
hid_t lcpl_id = (-1); /* Link creation property list */
|
||||
char str_flag[20];
|
||||
int opt;
|
||||
int li_ret;
|
||||
h5tool_link_info_t linkinfo;
|
||||
int i, len;
|
||||
char *str_ptr=NULL;
|
||||
|
||||
h5tools_setprogname(PROGRAMNAME);
|
||||
h5tools_setstatus(EXIT_SUCCESS);
|
||||
@ -249,7 +247,7 @@ main (int argc, const char *argv[])
|
||||
usage();
|
||||
leave(EXIT_FAILURE);
|
||||
}
|
||||
HDstrcpy(str_flag,opt_arg);
|
||||
str_flag = HDstrdup(opt_arg);
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
@ -377,8 +375,10 @@ main (int argc, const char *argv[])
|
||||
{
|
||||
printf("Copying file <%s> and object <%s> to file <%s> and object <%s>\n",
|
||||
fname_src, oname_src, fname_dst, oname_dst);
|
||||
if (flag)
|
||||
if (flag) {
|
||||
HDassert(str_flag);
|
||||
printf("Using %s flag\n", str_flag);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -417,14 +417,19 @@ main (int argc, const char *argv[])
|
||||
} /* end if */
|
||||
else /* error, if parent groups doesn't already exist in destination file */
|
||||
{
|
||||
size_t i, len;
|
||||
|
||||
len = HDstrlen(oname_dst);
|
||||
|
||||
/* check if all the parents groups exist. skip root group */
|
||||
for (i = 1; i < len; i++)
|
||||
{
|
||||
if ('/'==oname_dst[i])
|
||||
{
|
||||
str_ptr = (char*)HDcalloc((size_t)i+1, sizeof(char));
|
||||
HDstrncpy (str_ptr, oname_dst, (size_t)i);
|
||||
char *str_ptr;
|
||||
|
||||
str_ptr = (char *)HDcalloc(i + 1, sizeof(char));
|
||||
HDstrncpy(str_ptr, oname_dst, i);
|
||||
str_ptr[i]='\0';
|
||||
if (H5Lexists(fid_dst, str_ptr, H5P_DEFAULT) <= 0)
|
||||
{
|
||||
@ -513,6 +518,8 @@ error:
|
||||
HDfree(oname_dst);
|
||||
if (oname_src)
|
||||
HDfree(oname_src);
|
||||
if (str_flag)
|
||||
HDfree(str_flag);
|
||||
|
||||
h5tools_close();
|
||||
|
||||
|
@ -115,8 +115,8 @@ typedef struct {
|
||||
hid_t gid; /* Group ID */
|
||||
hbool_t symlink_target; /* Whether this is the target of an symbolic link */
|
||||
symlink_trav_t *symlink_list; /* List of visited symbolic links */
|
||||
int base_len; /* Length of base path name, if not root */
|
||||
int name_start; /* # of leading characters to strip off path names on output */
|
||||
size_t base_len; /* Length of base path name, if not root */
|
||||
size_t name_start; /* # of leading characters to strip off path names on output */
|
||||
}iter_t;
|
||||
|
||||
/* Command-line switches */
|
||||
@ -154,7 +154,6 @@ static struct dispatch_t {
|
||||
dispatch_g[TYPE].list2 = (LIST2); \
|
||||
}
|
||||
|
||||
static void display_type(hid_t type, int ind);
|
||||
static void print_type(h5tools_str_t *buffer, hid_t type, int ind);
|
||||
static herr_t visit_obj(hid_t file, const char *oname, iter_t *iter);
|
||||
|
||||
@ -342,7 +341,7 @@ print_obj_name(h5tools_str_t *buffer, const iter_t *iter, const char *oname,
|
||||
int n;
|
||||
|
||||
if(show_file_name_g)
|
||||
sprintf(fullname, "%s/%s", iter->fname, oname + iter->name_start);
|
||||
HDsnprintf(fullname, sizeof(fullname), "%s/%s", iter->fname, oname + iter->name_start);
|
||||
else
|
||||
name = oname + iter->name_start;
|
||||
|
||||
@ -553,14 +552,14 @@ print_precision(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
/* If the precision is less than the total size then show the precision
|
||||
* and offset on the following line. Also display the padding
|
||||
* information. */
|
||||
if (8*H5Tget_size(type)!=(prec=H5Tget_precision(type))) {
|
||||
if(8 * H5Tget_size(type) != (prec = H5Tget_precision(type))) {
|
||||
h5tools_str_append(buffer, "\n%*s(%lu bit%s of precision beginning at bit %lu)",
|
||||
ind, "", (unsigned long)prec, 1==prec?"":"s",
|
||||
ind, "", (unsigned long)prec, 1 == prec ? "" : "s",
|
||||
(unsigned long)H5Tget_offset(type));
|
||||
|
||||
H5Tget_pad(type, &plsb, &pmsb);
|
||||
if (H5Tget_offset(type)>0) {
|
||||
switch (plsb) {
|
||||
if(H5Tget_offset(type) > 0) {
|
||||
switch(plsb) {
|
||||
case H5T_PAD_ZERO:
|
||||
plsb_s = "zero";
|
||||
break;
|
||||
@ -575,12 +574,11 @@ print_precision(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
plsb_s = "unknown";
|
||||
break;
|
||||
default:
|
||||
;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (H5Tget_offset(type)+prec<8*H5Tget_size(type)) {
|
||||
switch (pmsb) {
|
||||
if((unsigned)H5Tget_offset(type) + prec < 8 * H5Tget_size(type)) {
|
||||
switch(pmsb) {
|
||||
case H5T_PAD_ZERO:
|
||||
pmsb_s = "zero";
|
||||
break;
|
||||
@ -595,23 +593,22 @@ print_precision(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
pmsb_s = "unknown";
|
||||
break;
|
||||
default:
|
||||
;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (plsb_s || pmsb_s) {
|
||||
h5tools_str_append(buffer, "\n%*s(", ind, "");
|
||||
if (plsb_s) {
|
||||
nbits = H5Tget_offset(type);
|
||||
nbits = (unsigned)H5Tget_offset(type);
|
||||
h5tools_str_append(buffer, "%lu %s bit%s at bit 0",
|
||||
(unsigned long)nbits, plsb_s, 1==nbits?"":"s");
|
||||
(unsigned long)nbits, plsb_s, 1 == nbits ? "" : "s");
|
||||
}
|
||||
if (plsb_s && pmsb_s) h5tools_str_append(buffer, ", ");
|
||||
if (pmsb_s) {
|
||||
nbits = 8*H5Tget_size(type)-(H5Tget_offset(type)+prec);
|
||||
nbits = (8 * H5Tget_size(type)) - ((unsigned)H5Tget_offset(type) + prec);
|
||||
h5tools_str_append(buffer, "%lu %s bit%s at bit %lu",
|
||||
(unsigned long)nbits, pmsb_s, 1==nbits?"":"s",
|
||||
(unsigned long)(8*H5Tget_size(type)-nbits));
|
||||
(unsigned long)nbits, pmsb_s, 1 == nbits ? "" : "s",
|
||||
(unsigned long)(8 * H5Tget_size(type) - nbits));
|
||||
}
|
||||
h5tools_str_append(buffer, ")");
|
||||
}
|
||||
@ -829,14 +826,18 @@ print_cmpd_type(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
char *name=NULL; /* member name */
|
||||
size_t size; /* total size of type in bytes */
|
||||
hid_t subtype; /* member data type */
|
||||
unsigned nmembs; /* number of members */
|
||||
int nmembs; /* number of members */
|
||||
int n; /* miscellaneous counters */
|
||||
unsigned i; /* miscellaneous counters */
|
||||
|
||||
if (H5T_COMPOUND!=H5Tget_class(type)) return FALSE;
|
||||
if(H5T_COMPOUND != H5Tget_class(type))
|
||||
return FALSE;
|
||||
nmembs = H5Tget_nmembers(type);
|
||||
if(nmembs <= 0)
|
||||
return FALSE;
|
||||
|
||||
h5tools_str_append(buffer, "struct {");
|
||||
nmembs=H5Tget_nmembers(type);
|
||||
for (i=0; i<nmembs; i++) {
|
||||
for(i = 0; i < (unsigned)nmembs; i++) {
|
||||
|
||||
/* Name and offset */
|
||||
name = H5Tget_member_name(type, i);
|
||||
@ -877,89 +878,109 @@ print_cmpd_type(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
static hbool_t
|
||||
print_enum_type(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
{
|
||||
char **name=NULL; /* member names */
|
||||
unsigned char *value=NULL; /* value array */
|
||||
unsigned char *copy = NULL; /* a pointer to value array */
|
||||
unsigned nmembs; /* number of members */
|
||||
int nchars; /* number of output characters */
|
||||
int nmembs; /* number of members */
|
||||
hid_t super; /* enum base integer type */
|
||||
hid_t native=-1; /* native integer data type */
|
||||
size_t dst_size; /* destination value type size */
|
||||
unsigned i; /* miscellaneous counters */
|
||||
size_t j;
|
||||
|
||||
if (H5T_ENUM!=H5Tget_class(type)) return FALSE;
|
||||
if(H5T_ENUM != H5Tget_class(type))
|
||||
return FALSE;
|
||||
nmembs = H5Tget_nmembers(type);
|
||||
HDassert(nmembs>0);
|
||||
if(nmembs < 0)
|
||||
return FALSE;
|
||||
|
||||
super = H5Tget_super(type);
|
||||
h5tools_str_append(buffer, "enum ");
|
||||
print_type(buffer, super, ind+4);
|
||||
print_type(buffer, super, ind + 4);
|
||||
h5tools_str_append(buffer, " {");
|
||||
|
||||
/* Determine what data type to use for the native values. To simplify
|
||||
* things we entertain three possibilities:
|
||||
* 1. long long -- the largest native signed integer
|
||||
* 2. unsigned long long -- the largest native unsigned integer
|
||||
* 3. raw format */
|
||||
if (H5Tget_size(type)<=sizeof(long long)) {
|
||||
dst_size = sizeof(long long);
|
||||
if (H5T_SGN_NONE==H5Tget_sign(type)) {
|
||||
native = H5T_NATIVE_ULLONG;
|
||||
} else {
|
||||
native = H5T_NATIVE_LLONG;
|
||||
if(nmembs > 0) {
|
||||
char **name; /* member names */
|
||||
unsigned char *value; /* value array */
|
||||
hid_t native = -1; /* native integer data type */
|
||||
size_t dst_size; /* destination value type size */
|
||||
unsigned i; /* miscellaneous counters */
|
||||
|
||||
/* Determine what data type to use for the native values. To simplify
|
||||
* things we entertain three possibilities:
|
||||
* 1. long long -- the largest native signed integer
|
||||
* 2. unsigned long long -- the largest native unsigned integer
|
||||
* 3. raw format */
|
||||
if(H5Tget_size(type) <= sizeof(long long)) {
|
||||
dst_size = sizeof(long long);
|
||||
if(H5T_SGN_NONE == H5Tget_sign(type))
|
||||
native = H5T_NATIVE_ULLONG;
|
||||
else
|
||||
native = H5T_NATIVE_LLONG;
|
||||
} /* end if */
|
||||
else
|
||||
dst_size = H5Tget_size(type);
|
||||
|
||||
/* Get the names and raw values of all members */
|
||||
name = (char **)HDcalloc((size_t)nmembs, sizeof(char *));
|
||||
value = (unsigned char *)HDcalloc((size_t)nmembs, MAX(H5Tget_size(type), dst_size));
|
||||
for(i = 0; i < (unsigned)nmembs; i++) {
|
||||
name[i] = H5Tget_member_name(type, i);
|
||||
H5Tget_member_value(type, i, value + i * H5Tget_size(type));
|
||||
}
|
||||
} else {
|
||||
dst_size = H5Tget_size(type);
|
||||
}
|
||||
|
||||
/* Get the names and raw values of all members */
|
||||
name = HDcalloc(nmembs, sizeof(char*));
|
||||
value = (unsigned char *)HDcalloc(nmembs, MAX(H5Tget_size(type), dst_size));
|
||||
for (i=0; i<nmembs; i++) {
|
||||
name[i] = H5Tget_member_name(type, i);
|
||||
H5Tget_member_value(type, i, value+i*H5Tget_size(type));
|
||||
}
|
||||
/* Convert values to native data type */
|
||||
if(native > 0)
|
||||
if(H5Tconvert(super, native, (size_t)nmembs, value, NULL, H5P_DEFAULT) < 0) {
|
||||
/* Release resources */
|
||||
for(i = 0; i < (unsigned)nmembs; i++)
|
||||
HDfree(name[i]);
|
||||
HDfree(name);
|
||||
HDfree(value);
|
||||
|
||||
/* Convert values to native data type */
|
||||
if (native>0) H5Tconvert(super, native, nmembs, value, NULL, H5P_DEFAULT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Sort members by increasing value */
|
||||
/*not implemented yet*/
|
||||
/* Sort members by increasing value */
|
||||
/*not implemented yet*/
|
||||
|
||||
/* Print members */
|
||||
for (i=0; i<nmembs; i++) {
|
||||
h5tools_str_append(buffer, "\n%*s", ind+4, "");
|
||||
nchars = print_string(buffer, name[i], TRUE);
|
||||
h5tools_str_append(buffer, "%*s = ", MAX(0, 16-nchars), "");
|
||||
/* Print members */
|
||||
for(i = 0; i < (unsigned)nmembs; i++) {
|
||||
unsigned char *copy; /* a pointer to value array */
|
||||
int nchars; /* number of output characters */
|
||||
|
||||
if (native<0) {
|
||||
h5tools_str_append(buffer, "0x");
|
||||
for (j=0; j<dst_size; j++)
|
||||
h5tools_str_append(buffer, "%02x", value[i*dst_size+j]);
|
||||
}
|
||||
else if (H5T_SGN_NONE==H5Tget_sign(native)) {
|
||||
/*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
|
||||
*strangely, unless use another pointer "copy".*/
|
||||
copy = value+i*dst_size;
|
||||
h5tools_str_append(buffer, HSIZE_T_FORMAT, *((unsigned long long*)((void*)copy)));
|
||||
}
|
||||
else {
|
||||
/*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
|
||||
*strangely, unless use another pointer "copy".*/
|
||||
copy = value+i*dst_size;
|
||||
h5tools_str_append(buffer, "%"H5_PRINTF_LL_WIDTH"d",
|
||||
*((long long*)((void*)copy)));
|
||||
h5tools_str_append(buffer, "\n%*s", ind+4, "");
|
||||
nchars = print_string(buffer, name[i], TRUE);
|
||||
h5tools_str_append(buffer, "%*s = ", MAX(0, 16 - nchars), "");
|
||||
|
||||
if(native < 0) {
|
||||
size_t j;
|
||||
|
||||
h5tools_str_append(buffer, "0x");
|
||||
for(j = 0; j < dst_size; j++)
|
||||
h5tools_str_append(buffer, "%02x", value[i*dst_size+j]);
|
||||
}
|
||||
else if(H5T_SGN_NONE == H5Tget_sign(native)) {
|
||||
/*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
|
||||
*strangely, unless use another pointer "copy".*/
|
||||
copy = value + i * dst_size;
|
||||
h5tools_str_append(buffer, HSIZE_T_FORMAT, *((unsigned long long*)((void*)copy)));
|
||||
}
|
||||
else {
|
||||
/*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
|
||||
*strangely, unless use another pointer "copy".*/
|
||||
copy = value + i * dst_size;
|
||||
h5tools_str_append(buffer, "%"H5_PRINTF_LL_WIDTH"d",
|
||||
*((long long*)((void*)copy)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Release resources */
|
||||
for (i=0; i<nmembs; i++) HDfree(name[i]);
|
||||
HDfree(name);
|
||||
HDfree(value);
|
||||
/* Release resources */
|
||||
for(i = 0; i < (unsigned)nmembs; i++)
|
||||
HDfree(name[i]);
|
||||
HDfree(name);
|
||||
HDfree(value);
|
||||
}
|
||||
else
|
||||
h5tools_str_append(buffer, "\n%*s <empty>", ind+4, "");
|
||||
|
||||
h5tools_str_append(buffer, "\n%*s}", ind, "");
|
||||
|
||||
H5Tclose(super);
|
||||
|
||||
if (0==nmembs) h5tools_str_append(buffer, "\n%*s <empty>", ind+4, "");
|
||||
h5tools_str_append(buffer, "\n%*s}", ind, "");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1189,10 +1210,11 @@ print_array_type(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
int ndims, i;
|
||||
hsize_t *dims=NULL;
|
||||
|
||||
if (H5T_ARRAY!=H5Tget_class(type)) return FALSE;
|
||||
if (H5T_ARRAY!=H5Tget_class(type))
|
||||
return FALSE;
|
||||
ndims = H5Tget_array_ndims(type);
|
||||
if (ndims) {
|
||||
dims = (hsize_t *)HDmalloc(ndims*sizeof(dims[0]));
|
||||
dims = (hsize_t *)HDmalloc((unsigned)ndims * sizeof(dims[0]));
|
||||
H5Tget_array_dims2(type, dims);
|
||||
|
||||
/* Print dimensions */
|
||||
@ -1202,9 +1224,8 @@ print_array_type(h5tools_str_t *buffer, hid_t type, int ind)
|
||||
|
||||
HDfree(dims);
|
||||
}
|
||||
else {
|
||||
else
|
||||
h5tools_str_append(buffer, " [SCALAR]\n", rawoutstream);
|
||||
}
|
||||
|
||||
|
||||
/* Print parent type */
|
||||
@ -1390,7 +1411,7 @@ dump_dataset_values(hid_t dset)
|
||||
outputformat.line_per_line = 1;
|
||||
}
|
||||
else {
|
||||
outputformat.line_ncols = width_g;
|
||||
outputformat.line_ncols = (unsigned)width_g;
|
||||
}
|
||||
if (label_g) outputformat.cmpd_name = "%s=";
|
||||
outputformat.line_pre = " %s ";
|
||||
@ -1412,9 +1433,9 @@ dump_dataset_values(hid_t dset)
|
||||
}
|
||||
outputformat.arr_linebreak = 0;
|
||||
/* Floating point types should display full precision */
|
||||
sprintf(fmt_float, "%%1.%dg", FLT_DIG);
|
||||
HDsnprintf(fmt_float, sizeof(fmt_float), "%%1.%dg", FLT_DIG);
|
||||
outputformat.fmt_float = fmt_float;
|
||||
sprintf(fmt_double, "%%1.%dg", DBL_DIG);
|
||||
HDsnprintf(fmt_double, sizeof(fmt_double), "%%1.%dg", DBL_DIG);
|
||||
outputformat.fmt_double = fmt_double;
|
||||
|
||||
if (hexdump_g) {
|
||||
@ -1428,8 +1449,7 @@ dump_dataset_values(hid_t dset)
|
||||
outputformat.ascii = TRUE;
|
||||
outputformat.elmt_suf1 = "";
|
||||
outputformat.elmt_suf2 = "";
|
||||
strcpy(string_prefix, outputformat.line_pre);
|
||||
strcat(string_prefix, "\"");
|
||||
HDsnprintf(string_prefix, sizeof(string_prefix), "%s\"", outputformat.line_pre);
|
||||
outputformat.line_pre = string_prefix;
|
||||
outputformat.line_suf = "\"";
|
||||
}
|
||||
@ -1487,7 +1507,6 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
|
||||
size_t need;
|
||||
int ndims;
|
||||
int i;
|
||||
int n;
|
||||
void *buf;
|
||||
H5S_class_t space_type;
|
||||
hsize_t curr_pos = 0; /* total data element position */
|
||||
@ -1502,7 +1521,7 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
|
||||
h5tools_str_reset(&buffer);
|
||||
h5tools_str_append(&buffer, " Attribute: ");
|
||||
|
||||
n = print_string(&buffer, attr_name, TRUE);
|
||||
print_string(&buffer, attr_name, TRUE);
|
||||
|
||||
if((attr = H5Aopen(obj, attr_name, H5P_DEFAULT))) {
|
||||
space = H5Aget_space(attr);
|
||||
@ -1535,6 +1554,7 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
|
||||
h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, info->line_ncols, 0, 0);
|
||||
break;
|
||||
|
||||
case H5S_NO_CLASS:
|
||||
default:
|
||||
/* Unknown dataspace type */
|
||||
h5tools_str_append(&buffer, " unknown\n");
|
||||
@ -1570,7 +1590,7 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
|
||||
outputformat.str_repeat = 8;
|
||||
}
|
||||
|
||||
outputformat.line_ncols = width_g;
|
||||
outputformat.line_ncols = (unsigned)width_g;
|
||||
if(label_g)
|
||||
outputformat.cmpd_name = "%s=";
|
||||
if(string_g && 1==H5Tget_size(type) &&
|
||||
@ -1777,7 +1797,7 @@ dataset_list2(hid_t dset, const char UNUSED *name)
|
||||
}
|
||||
|
||||
/* Print total raw storage size */
|
||||
total = H5Sget_simple_extent_npoints(space) * H5Tget_size(type);
|
||||
total = (hsize_t)H5Sget_simple_extent_npoints(space) * H5Tget_size(type);
|
||||
used = H5Dget_storage_size(dset);
|
||||
tclass = H5Tget_class(type);
|
||||
h5tools_str_append(&buffer, " %-10s ", "Storage:");
|
||||
@ -1795,13 +1815,24 @@ dataset_list2(hid_t dset, const char UNUSED *name)
|
||||
}
|
||||
break;
|
||||
|
||||
case H5T_NO_CLASS:
|
||||
case H5T_INTEGER:
|
||||
case H5T_FLOAT:
|
||||
case H5T_TIME:
|
||||
case H5T_STRING:
|
||||
case H5T_BITFIELD:
|
||||
case H5T_OPAQUE:
|
||||
case H5T_COMPOUND:
|
||||
case H5T_ENUM:
|
||||
case H5T_ARRAY:
|
||||
case H5T_NCLASSES:
|
||||
default:
|
||||
h5tools_str_append(&buffer, HSIZE_T_FORMAT" logical byte%s, "HSIZE_T_FORMAT" allocated byte%s",
|
||||
total, 1==total?"":"s",
|
||||
used, 1==used?"":"s");
|
||||
if (used>0)
|
||||
{
|
||||
utilization = (total*100.0)/used;
|
||||
utilization = ((double)total * (double)100.0f) / (double)used;
|
||||
h5tools_str_append(&buffer, ", %1.2f%% utilization", utilization);
|
||||
}
|
||||
}
|
||||
@ -1811,7 +1842,8 @@ dataset_list2(hid_t dset, const char UNUSED *name)
|
||||
/* Print information about external strorage */
|
||||
if((nf = H5Pget_external_count(dcpl)) > 0) {
|
||||
for(i = 0, max_len = 0; i < nf; i++) {
|
||||
H5Pget_external(dcpl, (unsigned)i, sizeof(f_name), f_name, NULL, NULL);
|
||||
if(H5Pget_external(dcpl, (unsigned)i, sizeof(f_name), f_name, NULL, NULL) < 0)
|
||||
continue;
|
||||
n = print_string(NULL, f_name, TRUE);
|
||||
max_len = MAX(max_len, n);
|
||||
} /* end for */
|
||||
@ -1857,7 +1889,7 @@ dataset_list2(hid_t dset, const char UNUSED *name)
|
||||
filt_id = H5Pget_filter2(dcpl, (unsigned)i, &filt_flags, &cd_nelmts,
|
||||
cd_values, sizeof(f_name), f_name, NULL);
|
||||
f_name[sizeof(f_name) - 1] = '\0';
|
||||
sprintf(s, "Filter-%d:", i);
|
||||
HDsnprintf(s, sizeof(s), "Filter-%d:", i);
|
||||
h5tools_str_append(&buffer, " %-10s %s-%u %s {", s,
|
||||
(f_name[0] ? f_name : "method"),
|
||||
(unsigned)filt_id,
|
||||
@ -2054,7 +2086,7 @@ list_obj(const char *name, const H5O_info_t *oinfo, const char *first_seen, void
|
||||
if (cmt_bufsize > 0) {
|
||||
comment = (char *)HDmalloc((size_t)cmt_bufsize + 1); /* new_size including null terminator */
|
||||
if(comment) {
|
||||
cmt_bufsize = H5Oget_comment(obj, comment, cmt_bufsize);
|
||||
cmt_bufsize = H5Oget_comment(obj, comment, (size_t)cmt_bufsize);
|
||||
if(cmt_bufsize > 0) {
|
||||
comment[cmt_bufsize] = 0;
|
||||
h5tools_str_reset(&buffer);
|
||||
@ -2267,6 +2299,9 @@ list_lnk(const char *name, const H5L_info_t *linfo, void *_iter)
|
||||
}
|
||||
break;
|
||||
|
||||
case H5L_TYPE_ERROR:
|
||||
case H5L_TYPE_HARD:
|
||||
case H5L_TYPE_MAX:
|
||||
default:
|
||||
h5tools_str_append(&buffer, "UD Link {cannot follow UD links}\n");
|
||||
h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, info->line_ncols, 0, 0);
|
||||
@ -2457,7 +2492,7 @@ get_width(void)
|
||||
static hbool_t
|
||||
is_valid_args(void)
|
||||
{
|
||||
herr_t ret = TRUE;
|
||||
hbool_t ret = TRUE;
|
||||
|
||||
if(recursive_g && grp_literal_g)
|
||||
{
|
||||
|
@ -241,7 +241,6 @@ static int is_exclude_path (char * path, h5trav_type_t type, diff_opt_t *options
|
||||
struct exclude_path_list * exclude_path_ptr;
|
||||
int ret_cmp;
|
||||
int ret = 0;
|
||||
int len_grp;
|
||||
|
||||
/* check if exclude path option is given */
|
||||
if (!options->exclude_path)
|
||||
@ -260,6 +259,8 @@ static int is_exclude_path (char * path, h5trav_type_t type, diff_opt_t *options
|
||||
HDstrlen(exclude_path_ptr->obj_path));
|
||||
if (ret_cmp == 0) /* found matching members */
|
||||
{
|
||||
size_t len_grp;
|
||||
|
||||
/* check if given path belong to an excluding group, if so
|
||||
* exclude it as well.
|
||||
* This verifies if “/grp1/dset1” is only under “/grp1”, but
|
||||
@ -338,7 +339,6 @@ static void free_exclude_path_list(diff_opt_t *options)
|
||||
*------------------------------------------------------------------------*/
|
||||
static void build_match_list (const char *objname1, trav_info_t *info1, const char *objname2, trav_info_t *info2, trav_table_t ** table_out, diff_opt_t *options)
|
||||
{
|
||||
unsigned i;
|
||||
size_t curr1 = 0;
|
||||
size_t curr2 = 0;
|
||||
unsigned infile[2];
|
||||
@ -346,8 +346,8 @@ static void build_match_list (const char *objname1, trav_info_t *info1, const ch
|
||||
char * path2_lp;
|
||||
h5trav_type_t type1_l;
|
||||
h5trav_type_t type2_l;
|
||||
int path1_offset = 0;
|
||||
int path2_offset = 0;
|
||||
size_t path1_offset = 0;
|
||||
size_t path2_offset = 0;
|
||||
int cmp;
|
||||
trav_table_t *table;
|
||||
size_t idx;
|
||||
@ -616,8 +616,8 @@ hsize_t h5diff(const char *fname1,
|
||||
int i;
|
||||
int l_ret1 = -1;
|
||||
int l_ret2 = -1;
|
||||
const char * obj1fullname = NULL;
|
||||
const char * obj2fullname = NULL;
|
||||
char * obj1fullname = NULL;
|
||||
char * obj2fullname = NULL;
|
||||
int both_objs_grp = 0;
|
||||
/* init to group type */
|
||||
h5trav_type_t obj1type = H5TRAV_TYPE_GROUP;
|
||||
@ -701,26 +701,26 @@ hsize_t h5diff(const char *fname1,
|
||||
/* make the given object1 fullpath, start with "/" */
|
||||
if (HDstrncmp(objname1, "/", 1))
|
||||
{
|
||||
HDstrcpy((char *)obj1fullname, "/");
|
||||
HDstrcat((char *)obj1fullname, objname1);
|
||||
HDstrcpy(obj1fullname, "/");
|
||||
HDstrcat(obj1fullname, objname1);
|
||||
}
|
||||
else
|
||||
HDstrcpy((char *)obj1fullname, objname1);
|
||||
HDstrcpy(obj1fullname, objname1);
|
||||
|
||||
/* make the given object2 fullpath, start with "/" */
|
||||
if (HDstrncmp(objname2, "/", 1))
|
||||
{
|
||||
HDstrcpy((char *)obj2fullname, "/");
|
||||
HDstrcat((char *)obj2fullname, objname2);
|
||||
HDstrcpy(obj2fullname, "/");
|
||||
HDstrcat(obj2fullname, objname2);
|
||||
}
|
||||
else
|
||||
HDstrcpy((char *)obj2fullname, objname2);
|
||||
HDstrcpy(obj2fullname, objname2);
|
||||
|
||||
/*----------------------------------------------------------
|
||||
* check if obj1 is root, group, single object or symlink
|
||||
*/
|
||||
h5difftrace("h5diff check if obj1 is root, group, single object or symlink\n");
|
||||
if(!HDstrcmp((char *)obj1fullname, "/"))
|
||||
if(!HDstrcmp(obj1fullname, "/"))
|
||||
{
|
||||
obj1type = H5TRAV_TYPE_GROUP;
|
||||
}
|
||||
@ -840,10 +840,10 @@ hsize_t h5diff(const char *fname1,
|
||||
h5difftrace("h5diff no object specified\n");
|
||||
/* set root group */
|
||||
obj1fullname = (char*)HDcalloc(2, sizeof(char));
|
||||
HDstrcat((char *)obj1fullname, "/");
|
||||
HDstrcat(obj1fullname, "/");
|
||||
obj1type = H5TRAV_TYPE_GROUP;
|
||||
obj2fullname = (char*)HDcalloc(2, sizeof(char));
|
||||
HDstrcat((char *)obj2fullname, "/");
|
||||
HDstrcat(obj2fullname, "/");
|
||||
obj2type = H5TRAV_TYPE_GROUP;
|
||||
}
|
||||
|
||||
@ -1078,9 +1078,9 @@ out:
|
||||
|
||||
/* free buffers */
|
||||
if (obj1fullname)
|
||||
HDfree((char *)obj1fullname);
|
||||
HDfree(obj1fullname);
|
||||
if (obj2fullname)
|
||||
HDfree((char *)obj2fullname);
|
||||
HDfree(obj2fullname);
|
||||
|
||||
/* free link info buffer */
|
||||
if (trg_linfo1.trg_path)
|
||||
|
@ -196,210 +196,5 @@ int print_objname(diff_opt_t *options, hsize_t nfound);
|
||||
void do_print_objname (const char *OBJ, const char *path1, const char *path2, diff_opt_t * opts);
|
||||
void do_print_attrname (const char *attr, const char *path1, const char *path2);
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* XCAO, 11/10/2010
|
||||
* added to improve performance for compound datasets
|
||||
*/
|
||||
typedef struct mcomp_t
|
||||
{
|
||||
int n; /* number of members */
|
||||
hid_t *ids; /* member type id */
|
||||
unsigned char *flags;
|
||||
size_t *offsets;
|
||||
struct mcomp_t **m; /* members */
|
||||
}mcomp_t;
|
||||
|
||||
hsize_t diff_datum(void *_mem1,
|
||||
void *_mem2,
|
||||
hid_t m_type,
|
||||
hsize_t i,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
hid_t container1_id,
|
||||
hid_t container2_id, /*where the reference came from*/
|
||||
int *ph, /*print header */
|
||||
mcomp_t *members); /*compound members */
|
||||
|
||||
|
||||
|
||||
hsize_t diff_float(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_double(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
#if H5_SIZEOF_LONG_DOUBLE !=0
|
||||
|
||||
hsize_t diff_ldouble(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
#endif
|
||||
|
||||
hsize_t diff_schar(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_uchar(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_short(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_ushort(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_int(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_uint(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_long(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_ulong(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_llong(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
hsize_t diff_ullong(unsigned char *mem1,
|
||||
unsigned char *mem2,
|
||||
hsize_t nelmts,
|
||||
hsize_t hyper_start,
|
||||
int rank,
|
||||
hsize_t *dims,
|
||||
hsize_t *acc,
|
||||
hsize_t *pos,
|
||||
diff_opt_t *options,
|
||||
const char *obj1,
|
||||
const char *obj2,
|
||||
int *ph);
|
||||
|
||||
#endif /* H5DIFF_H__ */
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -108,17 +108,17 @@ static void table_attrs_free( table_attrs_t *table )
|
||||
*------------------------------------------------------------------------*/
|
||||
static void table_attr_mark_exist(unsigned *exist, char *name, table_attrs_t *table)
|
||||
{
|
||||
unsigned int new;
|
||||
size_t new_val;
|
||||
|
||||
if(table->nattrs == table->size) {
|
||||
table->size = MAX(1, table->size * 2);
|
||||
table->attrs = (match_attr_t *)HDrealloc(table->attrs, table->size * sizeof(match_attr_t));
|
||||
} /* end if */
|
||||
|
||||
new = table->nattrs++;
|
||||
table->attrs[new].exist[0] = exist[0];
|
||||
table->attrs[new].exist[1] = exist[1];
|
||||
table->attrs[new].name = (char *)HDstrdup(name);
|
||||
new_val = table->nattrs++;
|
||||
table->attrs[new_val].exist[0] = exist[0];
|
||||
table->attrs[new_val].exist[1] = exist[1];
|
||||
table->attrs[new_val].name = (char *)HDstrdup(name);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -459,8 +459,8 @@ hsize_t diff_attr(hid_t loc1_id,
|
||||
goto error;
|
||||
|
||||
/* format output string */
|
||||
sprintf(np1,"%s of <%s>",name1,path1);
|
||||
sprintf(np2,"%s of <%s>",name2,path2);
|
||||
HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
|
||||
HDsnprintf(np2, sizeof(np1), "%s of <%s>", name2, path2);
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
* array compare
|
||||
|
@ -159,7 +159,7 @@ typedef struct {
|
||||
/* obtain link info from H5tools_get_symlink_info() */
|
||||
typedef struct {
|
||||
H5O_type_t trg_type; /* OUT: target type */
|
||||
const char *trg_path; /* OUT: target obj path. This must be freed
|
||||
char *trg_path; /* OUT: target obj path. This must be freed
|
||||
* when used with H5tools_get_symlink_info() */
|
||||
haddr_t objno; /* OUT: target object address */
|
||||
unsigned long fileno; /* OUT: File number that target object is located in */
|
||||
|
Loading…
Reference in New Issue
Block a user