Refactor "extra" command-line arguments, and clean up code so the tool doesn't
assert when exiting.
This commit is contained in:
@@ -77,65 +77,64 @@ static const H5B2_class_t *
|
|||||||
get_H5B2_class(const uint8_t *sig)
|
get_H5B2_class(const uint8_t *sig)
|
||||||
{
|
{
|
||||||
H5B2_subid_t subtype = (H5B2_subid_t)sig[H5_SIZEOF_MAGIC + 1];
|
H5B2_subid_t subtype = (H5B2_subid_t)sig[H5_SIZEOF_MAGIC + 1];
|
||||||
const H5B2_class_t *cls;
|
const H5B2_class_t *cls = NULL;
|
||||||
|
|
||||||
switch(subtype) {
|
switch(subtype) {
|
||||||
case H5B2_TEST_ID:
|
case H5B2_TEST_ID:
|
||||||
cls = H5B2_TEST;
|
cls = H5B2_TEST;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_FHEAP_HUGE_INDIR_ID:
|
case H5B2_FHEAP_HUGE_INDIR_ID:
|
||||||
cls = H5HF_HUGE_BT2_INDIR;
|
cls = H5HF_HUGE_BT2_INDIR;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_FHEAP_HUGE_FILT_INDIR_ID:
|
case H5B2_FHEAP_HUGE_FILT_INDIR_ID:
|
||||||
cls = H5HF_HUGE_BT2_FILT_INDIR;
|
cls = H5HF_HUGE_BT2_FILT_INDIR;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_FHEAP_HUGE_DIR_ID:
|
case H5B2_FHEAP_HUGE_DIR_ID:
|
||||||
cls = H5HF_HUGE_BT2_DIR;
|
cls = H5HF_HUGE_BT2_DIR;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_FHEAP_HUGE_FILT_DIR_ID:
|
case H5B2_FHEAP_HUGE_FILT_DIR_ID:
|
||||||
cls = H5HF_HUGE_BT2_FILT_DIR;
|
cls = H5HF_HUGE_BT2_FILT_DIR;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_GRP_DENSE_NAME_ID:
|
case H5B2_GRP_DENSE_NAME_ID:
|
||||||
cls = H5G_BT2_NAME;
|
cls = H5G_BT2_NAME;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_GRP_DENSE_CORDER_ID:
|
case H5B2_GRP_DENSE_CORDER_ID:
|
||||||
cls = H5G_BT2_CORDER;
|
cls = H5G_BT2_CORDER;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_SOHM_INDEX_ID:
|
case H5B2_SOHM_INDEX_ID:
|
||||||
cls = H5SM_INDEX;
|
cls = H5SM_INDEX;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_ATTR_DENSE_NAME_ID:
|
case H5B2_ATTR_DENSE_NAME_ID:
|
||||||
cls = H5A_BT2_NAME;
|
cls = H5A_BT2_NAME;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_ATTR_DENSE_CORDER_ID:
|
case H5B2_ATTR_DENSE_CORDER_ID:
|
||||||
cls = H5A_BT2_CORDER;
|
cls = H5A_BT2_CORDER;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_CDSET_ID:
|
case H5B2_CDSET_ID:
|
||||||
cls = H5D_BT2;
|
cls = H5D_BT2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_CDSET_FILT_ID:
|
case H5B2_CDSET_FILT_ID:
|
||||||
cls = H5D_BT2_FILT;
|
cls = H5D_BT2_FILT;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_TEST2_ID:
|
case H5B2_TEST2_ID:
|
||||||
cls = H5B2_TEST2;
|
cls = H5B2_TEST2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B2_NUM_BTREE_ID:
|
case H5B2_NUM_BTREE_ID:
|
||||||
default:
|
default:
|
||||||
HDfprintf(stderr, "Unknown v2 B-tree subtype %u\n", (unsigned)(subtype));
|
HDfprintf(stderr, "Unknown v2 B-tree subtype %u\n", (unsigned)(subtype));
|
||||||
HDexit(4);
|
|
||||||
} /* end switch */
|
} /* end switch */
|
||||||
|
|
||||||
return(cls);
|
return(cls);
|
||||||
@@ -161,25 +160,24 @@ static const H5EA_class_t *
|
|||||||
get_H5EA_class(const uint8_t *sig)
|
get_H5EA_class(const uint8_t *sig)
|
||||||
{
|
{
|
||||||
H5EA_cls_id_t clsid = (H5EA_cls_id_t)sig[H5_SIZEOF_MAGIC + 1];
|
H5EA_cls_id_t clsid = (H5EA_cls_id_t)sig[H5_SIZEOF_MAGIC + 1];
|
||||||
const H5EA_class_t *cls;
|
const H5EA_class_t *cls = NULL;
|
||||||
|
|
||||||
switch(clsid) {
|
switch(clsid) {
|
||||||
case H5EA_CLS_TEST_ID:
|
case H5EA_CLS_TEST_ID:
|
||||||
cls = H5EA_CLS_TEST;
|
cls = H5EA_CLS_TEST;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5EA_CLS_CHUNK_ID:
|
case H5EA_CLS_CHUNK_ID:
|
||||||
cls = H5EA_CLS_CHUNK;
|
cls = H5EA_CLS_CHUNK;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5EA_CLS_FILT_CHUNK_ID:
|
case H5EA_CLS_FILT_CHUNK_ID:
|
||||||
cls = H5EA_CLS_FILT_CHUNK;
|
cls = H5EA_CLS_FILT_CHUNK;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5EA_NUM_CLS_ID:
|
case H5EA_NUM_CLS_ID:
|
||||||
default:
|
default:
|
||||||
HDfprintf(stderr, "Unknown extensible array class %u\n", (unsigned)(clsid));
|
HDfprintf(stderr, "Unknown extensible array class %u\n", (unsigned)(clsid));
|
||||||
HDexit(4);
|
|
||||||
} /* end switch */
|
} /* end switch */
|
||||||
|
|
||||||
return(cls);
|
return(cls);
|
||||||
@@ -205,25 +203,24 @@ static const H5FA_class_t *
|
|||||||
get_H5FA_class(const uint8_t *sig)
|
get_H5FA_class(const uint8_t *sig)
|
||||||
{
|
{
|
||||||
H5FA_cls_id_t clsid = (H5FA_cls_id_t)sig[H5_SIZEOF_MAGIC + 1];
|
H5FA_cls_id_t clsid = (H5FA_cls_id_t)sig[H5_SIZEOF_MAGIC + 1];
|
||||||
const H5FA_class_t *cls;
|
const H5FA_class_t *cls = NULL;
|
||||||
|
|
||||||
switch(clsid) {
|
switch(clsid) {
|
||||||
case H5FA_CLS_TEST_ID:
|
case H5FA_CLS_TEST_ID:
|
||||||
cls = H5FA_CLS_TEST;
|
cls = H5FA_CLS_TEST;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5FA_CLS_CHUNK_ID:
|
case H5FA_CLS_CHUNK_ID:
|
||||||
cls = H5FA_CLS_CHUNK;
|
cls = H5FA_CLS_CHUNK;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5FA_CLS_FILT_CHUNK_ID:
|
case H5FA_CLS_FILT_CHUNK_ID:
|
||||||
cls = H5FA_CLS_FILT_CHUNK;
|
cls = H5FA_CLS_FILT_CHUNK;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5FA_NUM_CLS_ID:
|
case H5FA_NUM_CLS_ID:
|
||||||
default:
|
default:
|
||||||
HDfprintf(stderr, "Unknown fixed array class %u\n", (unsigned)(clsid));
|
HDfprintf(stderr, "Unknown fixed array class %u\n", (unsigned)(clsid));
|
||||||
HDexit(4);
|
|
||||||
} /* end switch */
|
} /* end switch */
|
||||||
|
|
||||||
return(cls);
|
return(cls);
|
||||||
@@ -248,26 +245,32 @@ get_H5FA_class(const uint8_t *sig)
|
|||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
hid_t fid, fapl;
|
hid_t fid = H5I_INVALID_HID;
|
||||||
|
hid_t fapl = H5I_INVALID_HID;
|
||||||
H5VL_object_t *vol_obj;
|
H5VL_object_t *vol_obj;
|
||||||
H5F_t *f;
|
H5F_t *f;
|
||||||
haddr_t addr = 0, extra = 0, extra2 = 0, extra3 = 0, extra4 = 0, extra5 = 0;
|
haddr_t addr = 0;
|
||||||
|
int extra_count = 0; /* Number of extra arguments */
|
||||||
|
haddr_t extra[10];
|
||||||
uint8_t sig[H5F_SIGNATURE_LEN];
|
uint8_t sig[H5F_SIGNATURE_LEN];
|
||||||
size_t u;
|
size_t u;
|
||||||
H5E_auto2_t func;
|
H5E_auto2_t func;
|
||||||
void *edata;
|
void *edata;
|
||||||
hbool_t api_ctx_pushed = FALSE; /* Whether API context pushed */
|
hbool_t api_ctx_pushed = FALSE; /* Whether API context pushed */
|
||||||
herr_t status = SUCCEED;
|
herr_t status = SUCCEED;
|
||||||
|
int exit_value = 0;
|
||||||
|
|
||||||
if(argc == 1) {
|
if(argc == 1) {
|
||||||
HDfprintf(stderr, "Usage: %s filename [signature-addr [extra]]\n", argv[0]);
|
HDfprintf(stderr, "Usage: %s filename [signature-addr [extra]*]\n", argv[0]);
|
||||||
HDexit(1);
|
exit_value = 1;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
/* Initialize the library */
|
/* Initialize the library */
|
||||||
if(H5open() < 0) {
|
if(H5open() < 0) {
|
||||||
HDfprintf(stderr, "cannot initialize the library\n");
|
HDfprintf(stderr, "cannot initialize the library\n");
|
||||||
HDexit(1);
|
exit_value = 1;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
/* Disable error reporting */
|
/* Disable error reporting */
|
||||||
@@ -279,56 +282,63 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
|
if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
|
||||||
HDfprintf(stderr, "cannot create file access property list\n");
|
HDfprintf(stderr, "cannot create file access property list\n");
|
||||||
HDexit(1);
|
exit_value = 1;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
if(HDstrchr(argv[1], '%'))
|
if(HDstrchr(argv[1], '%'))
|
||||||
if(H5Pset_fapl_family (fapl, (hsize_t)0, H5P_DEFAULT) < 0) {
|
if(H5Pset_fapl_family (fapl, (hsize_t)0, H5P_DEFAULT) < 0) {
|
||||||
HDfprintf(stderr, "cannot set file access property list\n");
|
HDfprintf(stderr, "cannot set file access property list\n");
|
||||||
HDexit(1);
|
exit_value = 1;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
if((fid = H5Fopen(argv[1], H5F_ACC_RDONLY, fapl)) < 0) {
|
if((fid = H5Fopen(argv[1], H5F_ACC_RDONLY, fapl)) < 0) {
|
||||||
HDfprintf(stderr, "cannot open file\n");
|
HDfprintf(stderr, "cannot open file\n");
|
||||||
HDexit(1);
|
exit_value = 1;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
/* Push API context */
|
/* Push API context */
|
||||||
if(H5CX_push() < 0) {
|
if(H5CX_push() < 0) {
|
||||||
HDfprintf(stderr, "cannot set API context\n");
|
HDfprintf(stderr, "cannot set API context\n");
|
||||||
HDexit(1);
|
exit_value = 1;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
api_ctx_pushed = TRUE;
|
api_ctx_pushed = TRUE;
|
||||||
|
|
||||||
if(NULL == (vol_obj = (H5VL_object_t *)H5VL_vol_object(fid))) {
|
if(NULL == (vol_obj = (H5VL_object_t *)H5VL_vol_object(fid))) {
|
||||||
HDfprintf(stderr, "cannot obtain vol_obj pointer\n");
|
HDfprintf(stderr, "cannot obtain vol_obj pointer\n");
|
||||||
HDexit(2);
|
exit_value = 2;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
if(NULL == (f = (H5F_t *)H5VL_object_data(vol_obj))) {
|
if(NULL == (f = (H5F_t *)H5VL_object_data(vol_obj))) {
|
||||||
HDfprintf(stderr, "cannot obtain H5F_t pointer\n");
|
HDfprintf(stderr, "cannot obtain H5F_t pointer\n");
|
||||||
HDexit(2);
|
exit_value = 2;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
/* Ignore metadata tags while using h5debug */
|
/* Ignore metadata tags while using h5debug */
|
||||||
if(H5AC_ignore_tags(f) < 0) {
|
if(H5AC_ignore_tags(f) < 0) {
|
||||||
HDfprintf(stderr, "cannot ignore metadata tags\n");
|
HDfprintf(stderr, "cannot ignore metadata tags\n");
|
||||||
HDexit(1);
|
exit_value = 1;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse command arguments.
|
* Parse command arguments.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Primary data structure to dump */
|
||||||
if(argc > 2)
|
if(argc > 2)
|
||||||
addr = (haddr_t)HDstrtoll(argv[2], NULL, 0);
|
addr = (haddr_t)HDstrtoll(argv[2], NULL, 0);
|
||||||
if(argc > 3)
|
|
||||||
extra = (haddr_t)HDstrtoll(argv[3], NULL, 0);
|
/* Extra arguments for primary data structure */
|
||||||
if(argc > 4)
|
HDmemset(extra, 0, sizeof(extra));
|
||||||
extra2 = (haddr_t)HDstrtoll(argv[4], NULL, 0);
|
if(argc > 3) {
|
||||||
if(argc > 5)
|
extra_count = argc - 3; /* Number of extra arguments */
|
||||||
extra3 = (haddr_t)HDstrtoll(argv[5], NULL, 0);
|
for(u = 0; u < (size_t)extra_count; u++)
|
||||||
if(argc > 6)
|
extra[u] = (haddr_t)HDstrtoll(argv[u + 3], NULL, 0);
|
||||||
extra4 = (haddr_t)HDstrtoll(argv[6], NULL, 0);
|
} /* end if */
|
||||||
if(argc > 7)
|
|
||||||
extra5 = (haddr_t)HDstrtoll(argv[7], NULL, 0);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read the signature at the specified file position.
|
* Read the signature at the specified file position.
|
||||||
@@ -336,7 +346,8 @@ main(int argc, char *argv[])
|
|||||||
HDfprintf(stdout, "Reading signature at address %a (rel)\n", addr);
|
HDfprintf(stdout, "Reading signature at address %a (rel)\n", addr);
|
||||||
if(H5F_block_read(f, H5FD_MEM_SUPER, addr, sizeof(sig), sig) < 0) {
|
if(H5F_block_read(f, H5FD_MEM_SUPER, addr, sizeof(sig), sig) < 0) {
|
||||||
HDfprintf(stderr, "cannot read signature\n");
|
HDfprintf(stderr, "cannot read signature\n");
|
||||||
HDexit(3);
|
exit_value = 3;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
if(!HDmemcmp(sig, H5F_SIGNATURE, (size_t)H5F_SIGNATURE_LEN)) {
|
if(!HDmemcmp(sig, H5F_SIGNATURE, (size_t)H5F_SIGNATURE_LEN)) {
|
||||||
/*
|
/*
|
||||||
@@ -364,13 +375,13 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Check for extra parameters */
|
/* Check for extra parameters */
|
||||||
if(extra == 0) {
|
if(extra_count == 0 || extra[0] == 0) {
|
||||||
HDfprintf(stderr, "\nWarning: Providing the group's local heap address will give more information\n");
|
HDfprintf(stderr, "\nWarning: Providing the group's local heap address will give more information\n");
|
||||||
HDfprintf(stderr, "Symbol table node usage:\n");
|
HDfprintf(stderr, "Symbol table node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <Symbol table node address> <address of local heap>\n\n");
|
HDfprintf(stderr, "\th5debug <filename> <Symbol table node address> <address of local heap>\n\n");
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5G_node_debug(f, addr, stdout, 0, VCOL, extra);
|
status = H5G_node_debug(f, addr, stdout, 0, VCOL, extra[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5B_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5B_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -386,48 +397,51 @@ main(int argc, char *argv[])
|
|||||||
switch(subtype) {
|
switch(subtype) {
|
||||||
case H5B_SNODE_ID:
|
case H5B_SNODE_ID:
|
||||||
/* Check for extra parameters */
|
/* Check for extra parameters */
|
||||||
if(extra == 0) {
|
if(extra_count == 0 || extra[0] == 0) {
|
||||||
HDfprintf(stderr, "\nWarning: Providing the group's local heap address will give more information\n");
|
HDfprintf(stderr, "\nWarning: Providing the group's local heap address will give more information\n");
|
||||||
HDfprintf(stderr, "B-tree symbol table node usage:\n");
|
HDfprintf(stderr, "B-tree symbol table node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <address of local heap>\n\n");
|
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <address of local heap>\n\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5G_node_debug(f, addr, stdout, 0, VCOL, extra);
|
status = H5G_node_debug(f, addr, stdout, 0, VCOL, extra[0]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H5B_CHUNK_ID:
|
case H5B_CHUNK_ID:
|
||||||
/* Check for extra parameters */
|
/* Check for extra parameters */
|
||||||
if(extra == 0) {
|
if(extra_count == 0 || extra[0] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need number of dimensions of chunk in order to dump chunk B-tree node\n");
|
HDfprintf(stderr, "ERROR: Need number of dimensions of chunk in order to dump chunk B-tree node\n");
|
||||||
HDfprintf(stderr, "B-tree chunked storage node usage:\n");
|
HDfprintf(stderr, "B-tree chunked storage node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <# of dimensions> <slowest chunk dim>...<fastest chunk dim>\n");
|
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <# of dimensions> <slowest chunk dim>...<fastest chunk dim>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
/* Build array of chunk dimensions */
|
/* Set # of dimensions */
|
||||||
ndims = (unsigned)extra;
|
ndims = (unsigned)extra[0];
|
||||||
dim[0] = (uint32_t)extra2;
|
|
||||||
if(ndims > 1)
|
|
||||||
dim[1] = (uint32_t)extra3;
|
|
||||||
if(ndims > 2)
|
|
||||||
dim[2] = (uint32_t)extra4;
|
|
||||||
if(ndims > 3)
|
|
||||||
dim[3] = (uint32_t)extra5;
|
|
||||||
|
|
||||||
/* Check for dimension error */
|
/* Check for dimension error */
|
||||||
if(ndims > 4) {
|
if(ndims > 9) {
|
||||||
HDfprintf(stderr, "ERROR: Only 4 dimensions support currently (fix h5debug)\n");
|
HDfprintf(stderr, "ERROR: Only 9 dimensions support currently (fix h5debug)\n");
|
||||||
HDfprintf(stderr, "B-tree chunked storage node usage:\n");
|
HDfprintf(stderr, "B-tree chunked storage node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <# of dimensions> <slowest chunk dim>...<fastest chunk dim>\n");
|
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <# of dimensions> <slowest chunk dim>...<fastest chunk dim>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end for */
|
} /* end for */
|
||||||
|
|
||||||
|
/* Build array of chunk dimensions */
|
||||||
|
for(u = 0; u < ndims; u++)
|
||||||
|
dim[u] = (uint32_t)extra[u + 1];
|
||||||
|
|
||||||
|
/* Check for dimension error */
|
||||||
for(u = 0; u < ndims; u++)
|
for(u = 0; u < ndims; u++)
|
||||||
if(0 == dim[u]) {
|
if(0 == dim[u]) {
|
||||||
HDfprintf(stderr, "ERROR: Chunk dimensions should be >0\n");
|
HDfprintf(stderr, "ERROR: Chunk dimensions should be >0\n");
|
||||||
HDfprintf(stderr, "B-tree chunked storage node usage:\n");
|
HDfprintf(stderr, "B-tree chunked storage node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <# of dimensions> <slowest chunk dim>...<fastest chunk dim>\n");
|
HDfprintf(stderr, "\th5debug <filename> <B-tree node address> <# of dimensions> <slowest chunk dim>...<fastest chunk dim>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
/* Set the last dimension (the element size) to zero */
|
/* Set the last dimension (the element size) to zero */
|
||||||
@@ -439,7 +453,8 @@ main(int argc, char *argv[])
|
|||||||
case H5B_NUM_BTREE_ID:
|
case H5B_NUM_BTREE_ID:
|
||||||
default:
|
default:
|
||||||
HDfprintf(stderr, "Unknown v1 B-tree subtype %u\n", (unsigned)(subtype));
|
HDfprintf(stderr, "Unknown v1 B-tree subtype %u\n", (unsigned)(subtype));
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -450,14 +465,15 @@ main(int argc, char *argv[])
|
|||||||
const H5B2_class_t *cls = get_H5B2_class(sig);
|
const H5B2_class_t *cls = get_H5B2_class(sig);
|
||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && extra == 0) {
|
if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && (extra_count == 0 || extra[0] == 0)) {
|
||||||
HDfprintf(stderr, "ERROR: Need v2 B-tree header address and object header address containing the layout message in order to dump header\n");
|
HDfprintf(stderr, "ERROR: Need v2 B-tree header address and object header address containing the layout message in order to dump header\n");
|
||||||
HDfprintf(stderr, "v2 B-tree hdr usage:\n");
|
HDfprintf(stderr, "v2 B-tree hdr usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <v2 B-tree header address> <object header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <v2 B-tree header address> <object header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5B2__hdr_debug(f, addr, stdout, 0, VCOL, cls, (haddr_t)extra);
|
status = H5B2__hdr_debug(f, addr, stdout, 0, VCOL, cls, (haddr_t)extra[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5B2_INT_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5B2_INT_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -468,23 +484,25 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && (extra == 0 || extra2 == 0 || extra3 == 0 || extra4 == 0)) {
|
if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && (extra_count == 0 || extra[0] == 0 || extra[1] == 0 || extra[2] == 0 || extra[3] == 0)) {
|
||||||
HDfprintf(stderr, "ERROR: Need v2 B-tree header address, the node's number of records, depth, and object header address containing the layout message in order to dump internal node\n");
|
HDfprintf(stderr, "ERROR: Need v2 B-tree header address, the node's number of records, depth, and object header address containing the layout message in order to dump internal node\n");
|
||||||
HDfprintf(stderr, "NOTE: Leaf nodes are depth 0, the internal nodes above them are depth 1, etc.\n");
|
HDfprintf(stderr, "NOTE: Leaf nodes are depth 0, the internal nodes above them are depth 1, etc.\n");
|
||||||
HDfprintf(stderr, "v2 B-tree internal node usage:\n");
|
HDfprintf(stderr, "v2 B-tree internal node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <internal node address> <v2 B-tree header address> <number of records> <depth> <object header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <internal node address> <v2 B-tree header address> <number of records> <depth> <object header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(extra == 0 || extra2 == 0 || extra3 == 0) {
|
else if(extra_count == 0 || extra[0] == 0 || extra[1] == 0 || extra[2] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need v2 B-tree header address and the node's number of records and depth in order to dump internal node\n");
|
HDfprintf(stderr, "ERROR: Need v2 B-tree header address and the node's number of records and depth in order to dump internal node\n");
|
||||||
HDfprintf(stderr, "NOTE: Leaf nodes are depth 0, the internal nodes above them are depth 1, etc.\n");
|
HDfprintf(stderr, "NOTE: Leaf nodes are depth 0, the internal nodes above them are depth 1, etc.\n");
|
||||||
HDfprintf(stderr, "v2 B-tree internal node usage:\n");
|
HDfprintf(stderr, "v2 B-tree internal node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <internal node address> <v2 B-tree header address> <number of records> <depth>\n");
|
HDfprintf(stderr, "\th5debug <filename> <internal node address> <v2 B-tree header address> <number of records> <depth>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5B2__int_debug(f, addr, stdout, 0, VCOL, cls, extra, (unsigned)extra2, (unsigned)extra3, (haddr_t)extra4);
|
status = H5B2__int_debug(f, addr, stdout, 0, VCOL, cls, extra[0], (unsigned)extra[1], (unsigned)extra[2], (haddr_t)extra[3]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5B2_LEAF_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5B2_LEAF_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -495,22 +513,24 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && (extra == 0 || extra2 == 0 || extra3 == 0 )) {
|
if((cls == H5D_BT2 || cls == H5D_BT2_FILT) && (extra_count == 0 || extra[0] == 0 || extra[1] == 0 || extra[2] == 0 )) {
|
||||||
|
|
||||||
HDfprintf(stderr, "ERROR: Need v2 B-tree header address, number of records, and object header address containing the layout message in order to dump leaf node\n");
|
HDfprintf(stderr, "ERROR: Need v2 B-tree header address, number of records, and object header address containing the layout message in order to dump leaf node\n");
|
||||||
HDfprintf(stderr, "v2 B-tree leaf node usage:\n");
|
HDfprintf(stderr, "v2 B-tree leaf node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <leaf node address> <v2 B-tree header address> <number of records> <object header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <leaf node address> <v2 B-tree header address> <number of records> <object header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(extra == 0 || extra2 == 0) {
|
else if(extra_count == 0 || extra[0] == 0 || extra[1] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need v2 B-tree header address and number of records in order to dump leaf node\n");
|
HDfprintf(stderr, "ERROR: Need v2 B-tree header address and number of records in order to dump leaf node\n");
|
||||||
HDfprintf(stderr, "v2 B-tree leaf node usage:\n");
|
HDfprintf(stderr, "v2 B-tree leaf node usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <leaf node address> <v2 B-tree header address> <number of records>\n");
|
HDfprintf(stderr, "\th5debug <filename> <leaf node address> <v2 B-tree header address> <number of records>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5B2__leaf_debug(f, addr, stdout, 0, VCOL, cls, extra, (unsigned)extra2, (haddr_t)extra3);
|
status = H5B2__leaf_debug(f, addr, stdout, 0, VCOL, cls, extra[0], (unsigned)extra[1], (haddr_t)extra[2]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5HF_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5HF_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -526,14 +546,15 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0 || extra2 == 0) {
|
if(extra_count == 0 || extra[0] == 0 || extra[1] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need fractal heap header address and size of direct block in order to dump direct block\n");
|
HDfprintf(stderr, "ERROR: Need fractal heap header address and size of direct block in order to dump direct block\n");
|
||||||
HDfprintf(stderr, "Fractal heap direct block usage:\n");
|
HDfprintf(stderr, "Fractal heap direct block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <direct block address> <heap header address> <size of direct block>\n");
|
HDfprintf(stderr, "\th5debug <filename> <direct block address> <heap header address> <size of direct block>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5HF_dblock_debug(f, addr, stdout, 0, VCOL, extra, (size_t)extra2);
|
status = H5HF_dblock_debug(f, addr, stdout, 0, VCOL, extra[0], (size_t)extra[1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5HF_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5HF_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -542,14 +563,15 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0 || extra2 == 0) {
|
if(extra_count == 0 || extra[0] == 0 || extra[1] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need fractal heap header address and number of rows in order to dump indirect block\n");
|
HDfprintf(stderr, "ERROR: Need fractal heap header address and number of rows in order to dump indirect block\n");
|
||||||
HDfprintf(stderr, "Fractal heap indirect block usage:\n");
|
HDfprintf(stderr, "Fractal heap indirect block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <indirect block address> <heap header address> <number of rows>\n");
|
HDfprintf(stderr, "\th5debug <filename> <indirect block address> <heap header address> <number of rows>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5HF_iblock_debug(f, addr, stdout, 0, VCOL, extra, (unsigned)extra2);
|
status = H5HF_iblock_debug(f, addr, stdout, 0, VCOL, extra[0], (unsigned)extra[1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5FS_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5FS_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -566,14 +588,15 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0 || extra2 == 0) {
|
if(extra_count == 0 || extra[0] == 0 || extra[1] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need free space header address and client address in order to dump serialized sections\n");
|
HDfprintf(stderr, "ERROR: Need free space header address and client address in order to dump serialized sections\n");
|
||||||
HDfprintf(stderr, "Free space serialized sections usage:\n");
|
HDfprintf(stderr, "Free space serialized sections usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <serialized sections address> <free space header address> <client address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <serialized sections address> <free space header address> <client address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5FS_sects_debug(f, addr, stdout, 0, VCOL, extra, extra2);
|
status = H5FS_sects_debug(f, addr, stdout, 0, VCOL, extra[0], extra[1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5SM_TABLE_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5SM_TABLE_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -590,14 +613,15 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0) {
|
if(extra_count == 0 || extra[0] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need shared message header address in order to shared message list\n");
|
HDfprintf(stderr, "ERROR: Need shared message header address in order to shared message list\n");
|
||||||
HDfprintf(stderr, "Shared message list usage:\n");
|
HDfprintf(stderr, "Shared message list usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <shared message list address> <shared message header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <shared message list address> <shared message header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5SM_list_debug(f, addr, stdout, 0, VCOL, (haddr_t)extra);
|
status = H5SM_list_debug(f, addr, stdout, 0, VCOL, (haddr_t)extra[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5EA_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5EA_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -608,14 +632,15 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0) {
|
if(extra_count == 0 || extra[0] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need object header address containing the layout message in order to dump header\n");
|
HDfprintf(stderr, "ERROR: Need object header address containing the layout message in order to dump header\n");
|
||||||
HDfprintf(stderr, "Extensible array header block usage:\n");
|
HDfprintf(stderr, "Extensible array header block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <Extensible Array header address> <object header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <Extensible Array header address> <object header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5EA__hdr_debug(f, addr, stdout, 0, VCOL, cls, extra);
|
status = H5EA__hdr_debug(f, addr, stdout, 0, VCOL, cls, extra[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5EA_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5EA_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -626,14 +651,15 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0 || extra2 == 0) {
|
if(extra_count == 0 || extra[0] == 0 || extra[1] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need extensible array header address and object header address containing the layout message in order to dump index block\n");
|
HDfprintf(stderr, "ERROR: Need extensible array header address and object header address containing the layout message in order to dump index block\n");
|
||||||
HDfprintf(stderr, "Extensible array index block usage:\n");
|
HDfprintf(stderr, "Extensible array index block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <index block address> <array header address> <object header address\n");
|
HDfprintf(stderr, "\th5debug <filename> <index block address> <array header address> <object header address\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5EA__iblock_debug(f, addr, stdout, 0, VCOL, cls, extra, extra2);
|
status = H5EA__iblock_debug(f, addr, stdout, 0, VCOL, cls, extra[0], extra[1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5EA_SBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5EA_SBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -644,14 +670,15 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0 || extra2 == 0 || extra3 == 0) {
|
if(extra_count == 0 || extra[0] == 0 || extra[1] == 0 || extra[2] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need extensible array header address, super block index and object header address containing the layout message in order to dump super block\n");
|
HDfprintf(stderr, "ERROR: Need extensible array header address, super block index and object header address containing the layout message in order to dump super block\n");
|
||||||
HDfprintf(stderr, "Extensible array super block usage:\n");
|
HDfprintf(stderr, "Extensible array super block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <super block address> <array header address> <super block index> <object header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <super block address> <array header address> <super block index> <object header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5EA__sblock_debug(f, addr, stdout, 0, VCOL, cls, extra, (unsigned)extra2, extra3);
|
status = H5EA__sblock_debug(f, addr, stdout, 0, VCOL, cls, extra[0], (unsigned)extra[1], extra[2]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5EA_DBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5EA_DBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -662,14 +689,15 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0 || extra2 == 0 || extra3 == 0) {
|
if(extra_count == 0 || extra[0] == 0 || extra[1] == 0 || extra[2] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need extensible array header address, # of elements in data block and object header address containing the layout message in order to dump data block\n");
|
HDfprintf(stderr, "ERROR: Need extensible array header address, # of elements in data block and object header address containing the layout message in order to dump data block\n");
|
||||||
HDfprintf(stderr, "Extensible array data block usage:\n");
|
HDfprintf(stderr, "Extensible array data block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <data block address> <array header address> <# of elements in data block> <object header address\n");
|
HDfprintf(stderr, "\th5debug <filename> <data block address> <array header address> <# of elements in data block> <object header address\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5EA__dblock_debug(f, addr, stdout, 0, VCOL, cls, extra, (size_t)extra2, extra3);
|
status = H5EA__dblock_debug(f, addr, stdout, 0, VCOL, cls, extra[0], (size_t)extra[1], extra[2]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5FA_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5FA_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -680,14 +708,15 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0) {
|
if(extra_count == 0 || extra[0] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need object header address containing the layout message in order to dump header\n");
|
HDfprintf(stderr, "ERROR: Need object header address containing the layout message in order to dump header\n");
|
||||||
HDfprintf(stderr, "Fixed array header block usage:\n");
|
HDfprintf(stderr, "Fixed array header block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <Fixed Array header address> <object header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <Fixed Array header address> <object header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5FA__hdr_debug(f, addr, stdout, 0, VCOL, cls, extra);
|
status = H5FA__hdr_debug(f, addr, stdout, 0, VCOL, cls, extra[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5FA_DBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5FA_DBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -698,14 +727,15 @@ main(int argc, char *argv[])
|
|||||||
HDassert(cls);
|
HDassert(cls);
|
||||||
|
|
||||||
/* Check for enough valid parameters */
|
/* Check for enough valid parameters */
|
||||||
if(extra == 0 || extra2 == 0) {
|
if(extra_count == 0 || extra[0] == 0 || extra[1] == 0) {
|
||||||
HDfprintf(stderr, "ERROR: Need fixed array header address and object header address containing the layout message in order to dump data block\n");
|
HDfprintf(stderr, "ERROR: Need fixed array header address and object header address containing the layout message in order to dump data block\n");
|
||||||
HDfprintf(stderr, "fixed array data block usage:\n");
|
HDfprintf(stderr, "fixed array data block usage:\n");
|
||||||
HDfprintf(stderr, "\th5debug <filename> <data block address> <array header address> <object header address>\n");
|
HDfprintf(stderr, "\th5debug <filename> <data block address> <array header address> <object header address>\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
status = H5FA__dblock_debug(f, addr, stdout, 0, VCOL, cls, extra, extra2);
|
status = H5FA__dblock_debug(f, addr, stdout, 0, VCOL, cls, extra[0], extra[1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!HDmemcmp(sig, H5O_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
else if(!HDmemcmp(sig, H5O_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC)) {
|
||||||
@@ -742,24 +772,27 @@ main(int argc, char *argv[])
|
|||||||
HDputchar('\n');
|
HDputchar('\n');
|
||||||
|
|
||||||
HDfprintf(stderr, "unknown signature\n");
|
HDfprintf(stderr, "unknown signature\n");
|
||||||
HDexit(4);
|
exit_value = 4;
|
||||||
|
goto done;
|
||||||
} /* end else */
|
} /* end else */
|
||||||
|
|
||||||
/* Check for an error when dumping information */
|
/* Check for an error when dumping information */
|
||||||
if(status < 0) {
|
if(status < 0) {
|
||||||
HDfprintf(stderr, "An error occurred!\n");
|
HDfprintf(stderr, "An error occurred!\n");
|
||||||
H5Eprint2(H5E_DEFAULT, stderr);
|
H5Eprint2(H5E_DEFAULT, stderr);
|
||||||
HDexit(5);
|
exit_value = 5;
|
||||||
|
goto done;
|
||||||
} /* end if */
|
} /* end if */
|
||||||
|
|
||||||
H5Pclose(fapl);
|
done:
|
||||||
H5Fclose(fid);
|
if(fapl > 0) H5Pclose(fapl);
|
||||||
|
if(fid > 0) H5Fclose(fid);
|
||||||
|
|
||||||
/* Pop API context */
|
/* Pop API context */
|
||||||
if(api_ctx_pushed) H5CX_pop();
|
if(api_ctx_pushed) H5CX_pop();
|
||||||
|
|
||||||
H5Eset_auto2(H5E_DEFAULT, func, edata);
|
H5Eset_auto2(H5E_DEFAULT, func, edata);
|
||||||
|
|
||||||
return 0;
|
return exit_value;
|
||||||
} /* main() */
|
} /* main() */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user