summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fortran/src/H5Ef.c26
-rw-r--r--perform/overhead.c4
-rw-r--r--src/H5.c27
-rw-r--r--src/H5A.c8
-rw-r--r--src/H5AC.c2
-rw-r--r--src/H5CS.c4
-rw-r--r--src/H5D.c10
-rw-r--r--src/H5Distore.c5
-rw-r--r--src/H5E.c1299
-rw-r--r--src/H5Eprivate.h348
-rw-r--r--src/H5Epublic.h440
-rw-r--r--src/H5F.c2
-rw-r--r--src/H5FDfamily.c2
-rw-r--r--src/H5FDmulti.c52
-rw-r--r--src/H5FDstdio.c24
-rw-r--r--src/H5FS.c4
-rw-r--r--src/H5Fistore.c5
-rw-r--r--src/H5G.c17
-rw-r--r--src/H5Gnode.c6
-rw-r--r--src/H5HL.c2
-rw-r--r--src/H5I.c2
-rw-r--r--src/H5O.c8
-rw-r--r--src/H5T.c14
-rw-r--r--src/H5TS.c27
-rw-r--r--src/H5TSprivate.h3
-rw-r--r--src/H5Z.c8
-rw-r--r--src/H5private.h2
-rw-r--r--test/enum.c2
-rw-r--r--test/errors.c53
-rw-r--r--test/gheap.c14
-rw-r--r--test/h5test.c4
-rw-r--r--test/lheap.c10
-rw-r--r--test/ohdr.c42
-rw-r--r--test/testhdf5.c2
-rw-r--r--test/testhdf5.h20
-rw-r--r--test/ttsafe.c9
-rw-r--r--test/ttsafe_error.c87
-rw-r--r--testpar/t_dset.c24
-rw-r--r--testpar/testphdf5.h4
-rw-r--r--tools/h5diff/h5diff.c16
-rw-r--r--tools/h5diff/h5trav.c10
-rw-r--r--tools/h5dump/h5dump.c8
-rwxr-xr-xtools/h5import/h5import.c18
-rw-r--r--tools/h5ls/h5ls.c2
44 files changed, 873 insertions, 1803 deletions
diff --git a/fortran/src/H5Ef.c b/fortran/src/H5Ef.c
index b69a4c6..b54ee14 100644
--- a/fortran/src/H5Ef.c
+++ b/fortran/src/H5Ef.c
@@ -37,7 +37,7 @@ nh5eclear_c( )
/*
* Call H5Eclear function.
*/
- status = H5Eclear();
+ status = H5Eclear(H5E_DEFAULT);
if(status < 0) return ret_val;
ret_val = 0;
return ret_val;
@@ -71,7 +71,7 @@ nh5eprint_c1(_fcd name, int_f* namelen)
/*
* Call H5Eprint function.
*/
- status = H5Eprint(file);
+ status = H5Eprint(H5E_DEFAULT, file);
if (status >=0 ) ret_val = 0;
fclose(file);
@@ -101,7 +101,7 @@ nh5eprint_c2()
/*
* Call H5Eprint function.
*/
- status = H5Eprint(NULL);
+ status = H5Eprint(H5E_DEFAULT, NULL);
if(status >= 0) ret_val = 0;
return ret_val;
}
@@ -121,14 +121,14 @@ int_f
nh5eget_major_c(int_f* error_no, _fcd name)
{
int ret_val = -1;
- const char* c_name;
- H5E_major_t c_error_no;
- c_error_no = (H5E_major_t)*error_no;
+ const char c_name[H5E_LEN];
+ hid_t c_error_no;
+ c_error_no = (hid_t)*error_no;
/*
* Call H5Eget_major function.
*/
- c_name = H5Eget_major(c_error_no);
+ H5Eget_msg(c_error_no, NULL, c_name, H5E_LEN);
HD5packFstring((char*)c_name, _fcdtocp(name), strlen(c_name));
if(!strcmp(c_name, "Invalid major error number")) return ret_val;
@@ -151,14 +151,14 @@ int_f
nh5eget_minor_c(int_f* error_no, _fcd name)
{
int ret_val = -1;
- const char* c_name;
- H5E_minor_t c_error_no;
- c_error_no = (H5E_minor_t)*error_no;
+ const char c_name[H5E_LEN];
+ hid_t c_error_no;
+ c_error_no = (hid_t)*error_no;
/*
* Call H5Eget_minor function.
*/
- c_name = H5Eget_minor(c_error_no);
+ H5Eget_msg(c_error_no, NULL, c_name, H5E_LEN);
HD5packFstring((char*)c_name, _fcdtocp(name), strlen(c_name));
if(!strcmp(c_name, "Invalid minor error number")) return ret_val;
@@ -183,9 +183,9 @@ nh5eset_auto_c(int_f* printflag)
herr_t status;
if (*printflag == 1)
- status = H5Eset_auto((H5E_auto_t)H5Eprint, stderr);
+ status = H5Eset_auto(H5E_DEFAULT, (H5E_auto_t)H5Eprint, stderr);
if (*printflag == 0)
- status = H5Eset_auto(NULL,NULL);
+ status = H5Eset_auto(H5E_DEFAULT, NULL,NULL);
if (status >= 0) ret_val = 0;
return ret_val;
}
diff --git a/perform/overhead.c b/perform/overhead.c
index 0066255..2b4e620 100644
--- a/perform/overhead.c
+++ b/perform/overhead.c
@@ -165,7 +165,7 @@ static herr_t
display_error_cb (void UNUSED *client_data)
{
puts ("*FAILED*");
- H5Eprint (stdout);
+ H5Eprint (H5E_DEFAULT, stdout);
return 0;
}
@@ -370,7 +370,7 @@ main(int argc, char *argv[])
int i, j, nerrors=0;
/* Default split ratios */
- H5Eset_auto(display_error_cb, NULL);
+ H5Eset_auto(H5E_DEFAULT, display_error_cb, NULL);
if ((xfer=H5Pcreate(H5P_DATASET_XFER))<0) goto error;
if (H5Pget_btree_ratios(xfer, splits+0, splits+1, splits+2)<0) {
goto error;
diff --git a/src/H5.c b/src/H5.c
index bd0576c..f752a7e 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -196,7 +196,7 @@ H5_term_library(void)
goto done;
/* Check if we should display error output */
- (void)H5Eget_auto(&func,NULL);
+ (void)H5Eget_auto(H5E_DEFAULT,&func,NULL);
/*
* Terminate each interface. The termination functions return a positive
@@ -239,6 +239,7 @@ H5_term_library(void)
pending += DOWN(Z);
pending += DOWN(FD);
pending += DOWN(P);
+ /*pending += DOWN(E); - Commented out since there is seg fault */
/* Don't shut down the ID code until other APIs which use them are shut down */
if(pending==0)
pending += DOWN(I);
@@ -1807,8 +1808,15 @@ H5_trace (const double *returning, const char *func, const char *type, ...)
fprintf(out, "NULL");
}
} else {
- H5E_major_t emaj = va_arg(ap, H5E_major_t);
- fprintf(out, "%d", (int)emaj);
+ /*H5E_major_t emaj = va_arg(ap, H5E_major_t);*/
+ hid_t emaj_id = va_arg(ap, hid_t);
+ H5E_msg_t *emaj_ptr;
+
+ /* Get the message and print it */
+ if(NULL != (emaj_ptr = H5I_object_verify(emaj_id, H5I_ERROR_MSG)))
+ fprintf (out, emaj_ptr->msg);
+ else
+ fprintf(out, "%d", (int)emaj_id);
}
break;
@@ -1820,8 +1828,17 @@ H5_trace (const double *returning, const char *func, const char *type, ...)
fprintf(out, "NULL");
}
} else {
- H5E_minor_t emin = va_arg(ap, H5E_minor_t);
- fprintf(out, "%d", (int)emin);
+ /*H5E_minor_t emin = va_arg(ap, H5E_minor_t);*/
+ hid_t emin_id = va_arg(ap, hid_t);
+ H5E_msg_t *emin_ptr;
+
+ /* Get the message and print it */
+ if(NULL != (emin_ptr = H5I_object_verify(emin_id, H5I_ERROR_MSG)))
+ fprintf (out, emin_ptr->msg);
+ else
+ fprintf(out, "%d", (int)emin_id);
+
+ fprintf(out, "%d", (int)emin_id);
}
break;
diff --git a/src/H5A.c b/src/H5A.c
index 96c209f..ecd6316 100644
--- a/src/H5A.c
+++ b/src/H5A.c
@@ -276,7 +276,7 @@ H5A_create(const H5G_entry_t *ent, const char *name, const H5T_t *type,
HGOTO_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "can't release attribute info")
seq++;
}
- H5E_clear ();
+ H5E_clear(H5E_get_my_stack()); \
/* Create the attribute message and save the attribute index */
if (H5O_modify(&(attr->ent), H5O_ATTR_ID, H5O_NEW_MESG, 0, 1, attr, dxpl_id) < 0)
@@ -348,7 +348,7 @@ H5A_get_index(H5G_entry_t *ent, const char *name, hid_t dxpl_id)
HGOTO_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "can't release attribute info")
i++;
}
- H5E_clear ();
+ H5E_clear(H5E_get_my_stack()); \
if(ret_value<0)
HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "attribute not found")
@@ -1326,7 +1326,7 @@ H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op, void *op_data)
if(H5O_reset (H5O_ATTR_ID, &found_attr)<0)
HGOTO_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "can't release attribute info")
}
- H5E_clear ();
+ H5E_clear(H5E_get_my_stack()); \
}
else
if(start_idx>0)
@@ -1401,7 +1401,7 @@ H5Adelete(hid_t loc_id, const char *name)
HGOTO_ERROR(H5E_ATTR, H5E_CANTFREE, FAIL, "can't release attribute info")
idx++;
}
- H5E_clear ();
+ H5E_clear(H5E_get_my_stack()); \
if (found<0)
HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "attribute not found")
diff --git a/src/H5AC.c b/src/H5AC.c
index f7a41cd..38c249d 100644
--- a/src/H5AC.c
+++ b/src/H5AC.c
@@ -311,7 +311,7 @@ H5AC_term_interface(void)
if (H5Pclose(H5AC_dxpl_id) < 0 ||
H5Pclose(H5AC_noblock_dxpl_id) < 0 ||
H5Pclose(H5AC_ind_dxpl_id) < 0)
- H5E_clear(); /*ignore the error*/
+ H5E_clear(H5E_get_my_stack()); /*ingnore error*/ \
else {
/* Reset static IDs */
H5AC_dxpl_id=(-1);
diff --git a/src/H5CS.c b/src/H5CS.c
index 9ec80de..c39d497 100644
--- a/src/H5CS.c
+++ b/src/H5CS.c
@@ -86,7 +86,9 @@ H5FS_get_stack(void)
fstack = pthread_getspecific(H5TS_funcstk_key_g);
if (!fstack) {
/* no associated value with current thread - create one */
- fstack = (H5FS_t *)H5MM_malloc(sizeof(H5FS_t));
+ /* Where is it freed? */
+ fstack = (H5FS_t *)H5MM_calloc(sizeof(H5FS_t));
+ fstack->nused = 0;
pthread_setspecific(H5TS_funcstk_key_g, (void *)fstack);
}
diff --git a/src/H5D.c b/src/H5D.c
index d741b32..4973048 100644
--- a/src/H5D.c
+++ b/src/H5D.c
@@ -1950,8 +1950,8 @@ H5D_open(H5G_entry_t *ent, hid_t dxpl_id)
H5D_t *dataset; /*the dataset which was found */
/* Clear any errors from H5FO_opened() */
- H5E_clear();
-
+ H5E_clear(H5E_get_my_stack());
+
/* Open the dataset object */
if ((dataset=H5D_open_oid(ent, dxpl_id)) ==NULL)
HGOTO_ERROR(H5E_DATASET, H5E_NOTFOUND, FAIL, "not found")
@@ -2054,7 +2054,7 @@ H5D_open_oid(const H5G_entry_t *ent, hid_t dxpl_id)
/* Get the optional filters message */
if(NULL == H5O_read(&(dataset->ent), H5O_PLINE_ID, 0, &pline, dxpl_id)) {
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
HDmemset(&pline, 0, sizeof(pline));
}
if(H5P_set(plist, H5D_CRT_DATA_PIPELINE_NAME, &pline) < 0)
@@ -2120,7 +2120,7 @@ H5D_open_oid(const H5G_entry_t *ent, hid_t dxpl_id)
/* Get the new fill value message */
if(NULL == H5O_read(&(dataset->ent), H5O_FILL_NEW_ID, 0, &fill, dxpl_id)) {
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
HDmemset(&fill, 0, sizeof(fill));
/* Set the space allocation time appropriately, based on the type of dataset storage */
@@ -2151,7 +2151,7 @@ H5D_open_oid(const H5G_entry_t *ent, hid_t dxpl_id)
/* For compatibility with v1.4. Retrieve the old fill value message.
* If size is 0, make it -1 for undefined. */
if(NULL == H5O_read(&(dataset->ent), H5O_FILL_ID, 0, fill_prop, dxpl_id)) {
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
HDmemset(fill_prop, 0, sizeof(H5O_fill_t));
}
if(fill_prop->size == 0) {
diff --git a/src/H5Distore.c b/src/H5Distore.c
index d5c2855..3274440 100644
--- a/src/H5Distore.c
+++ b/src/H5Distore.c
@@ -1432,7 +1432,7 @@ H5F_istore_lock(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
udata.mesg = *layout;
udata.addr = HADDR_UNDEF;
status = H5B_find (f, dxpl_id, H5B_ISTORE, layout->addr, &udata);
- H5E_clear ();
+ H5E_clear(H5E_get_my_stack());
if (status>=0 && H5F_addr_defined(udata.addr)) {
size_t chunk_alloc=0; /*allocated chunk size */
@@ -2082,7 +2082,8 @@ H5F_istore_get_addr(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
/* Go get the chunk information */
if (H5B_find (f, dxpl_id, H5B_ISTORE, layout->addr, &udata)<0) {
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
+
HGOTO_ERROR(H5E_BTREE,H5E_NOTFOUND,HADDR_UNDEF,"Can't locate chunk info");
} /* end if */
diff --git a/src/H5E.c b/src/H5E.c
index 536a606..695cfb9 100644
--- a/src/H5E.c
+++ b/src/H5E.c
@@ -46,8 +46,6 @@
#define PABLO_MASK H5E_mask
-#ifndef NEW_ERR
-
/* Major error IDs */
hid_t H5E_NONE_MAJOR_g = FAIL; /*special zero, no error */
hid_t H5E_ARGS_g = FAIL; /*invalid arguments to routine */
@@ -175,161 +173,10 @@ hid_t H5E_CALLBACK_g = FAIL; /*callback failed
hid_t H5E_CANAPPLY_g = FAIL; /*error from filter "can apply" callback */
hid_t H5E_SETLOCAL_g = FAIL; /*error from filter "set local" callback */
-#endif /* NEW_ERR */
-
-
-static const H5E_major_mesg_t H5E_major_mesg_g[] = {
- {H5E_NONE_MAJOR, "No error"},
- {H5E_ARGS, "Function arguments"},
- {H5E_RESOURCE, "Resource unavailable"},
- {H5E_INTERNAL, "Internal HDF5 error"},
- {H5E_FILE, "File interface"},
- {H5E_IO, "Low-level I/O layer"},
- {H5E_FUNC, "Function entry/exit"},
- {H5E_ATOM, "Atom layer"},
- {H5E_CACHE, "Meta data cache layer"},
- {H5E_BTREE, "B-tree layer"},
- {H5E_SYM, "Symbol table layer"},
- {H5E_HEAP, "Heap layer"},
- {H5E_OHDR, "Object header layer"},
- {H5E_DATATYPE, "Datatype interface"},
- {H5E_DATASPACE, "Dataspace interface"},
- {H5E_DATASET, "Dataset interface"},
- {H5E_STORAGE, "Data storage layer"},
- {H5E_PLIST, "Property list interface"},
- {H5E_ATTR, "Attribute layer"},
- {H5E_PLINE, "Data filters layer"},
- {H5E_EFL, "External file list"},
- {H5E_REFERENCE, "References layer"},
- {H5E_VFL, "Virtual File Layer"},
- {H5E_TBBT, "Threaded, Balanced, Binary Trees"},
- {H5E_FPHDF5, "Flexible Parallel HDF5"},
- {H5E_TST, "Ternary Search Trees"},
- {H5E_RS, "Reference Counted Strings"},
- {H5E_ERROR, "Error API"},
-};
-
-static const H5E_minor_mesg_t H5E_minor_mesg_g[] = {
- {H5E_NONE_MINOR, "No error"},
-
- /* Argument errors */
- {H5E_UNINITIALIZED, "Information is uninitialized"},
- {H5E_UNSUPPORTED, "Feature is unsupported"},
- {H5E_BADTYPE, "Inappropriate type"},
- {H5E_BADRANGE, "Out of range"},
- {H5E_BADVALUE, "Bad value"},
-
- /* Resource errors */
- {H5E_NOSPACE, "No space available for allocation"},
- {H5E_CANTCOPY, "Unable to copy object"},
- {H5E_CANTFREE, "Unable to free object"},
- {H5E_ALREADYEXISTS, "Object already exists"},
- {H5E_CANTLOCK, "Unable to lock object"},
- {H5E_CANTUNLOCK, "Unable to unlock object"},
- {H5E_CANTGC, "Unable to garbage collect"},
-
- /* File accessability errors */
- {H5E_FILEEXISTS, "File already exists"},
- {H5E_FILEOPEN, "File already open"},
- {H5E_CANTCREATE, "Unable to create file"},
- {H5E_CANTOPENFILE, "Unable to open file"},
- {H5E_CANTCLOSEFILE, "Unable to close file"},
- {H5E_NOTHDF5, "Not an HDF5 file"},
- {H5E_BADFILE, "Bad file ID accessed"},
- {H5E_TRUNCATED, "File has been truncated"},
- {H5E_MOUNT, "File mount error"},
-
- /* Generic low-level file I/O errors */
- {H5E_SEEKERROR, "Seek failed"},
- {H5E_READERROR, "Read failed"},
- {H5E_WRITEERROR, "Write failed"},
- {H5E_CLOSEERROR, "Close failed"},
- {H5E_OVERFLOW, "Address overflowed"},
- {H5E_FCNTL, "File control (fcntl) failed"},
-
- /* Function entry/exit interface errors */
- {H5E_CANTINIT, "Unable to initialize object"},
- {H5E_ALREADYINIT, "Object already initialized"},
- {H5E_CANTRELEASE, "Unable to release object"},
-
- /* Object atom related errors */
- {H5E_BADATOM, "Unable to find atom information (already closed?)"},
- {H5E_BADGROUP, "Unable to find ID group information"},
- {H5E_CANTREGISTER, "Unable to register new atom"},
- {H5E_CANTINC, "Unable to increment reference count"},
- {H5E_CANTDEC, "Unable to decrement reference count"},
- {H5E_NOIDS, "Out of IDs for group"},
-
- /* Cache related errors */
- {H5E_CANTFLUSH, "Unable to flush data from cache"},
- {H5E_CANTLOAD, "Unable to load meta data into cache"},
- {H5E_PROTECT, "Protected meta data error"},
- {H5E_NOTCACHED, "Meta data not currently cached"},
-
- /* B-tree related errors */
- {H5E_NOTFOUND, "Object not found"},
- {H5E_EXISTS, "Object already exists"},
- {H5E_CANTENCODE, "Unable to encode value"},
- {H5E_CANTDECODE, "Unable to decode value"},
- {H5E_CANTSPLIT, "Unable to split node"},
- {H5E_CANTINSERT, "Unable to insert object"},
- {H5E_CANTLIST, "Unable to list node"},
-
- /* Object header related errors */
- {H5E_LINKCOUNT, "Bad object header link count"},
- {H5E_VERSION, "Wrong version number"},
- {H5E_ALIGNMENT, "Alignment error"},
- {H5E_BADMESG, "Unrecognized message"},
- {H5E_CANTDELETE, "Can't delete message"},
-
- /* Group related errors */
- {H5E_CANTOPENOBJ, "Can't open object"},
- {H5E_COMPLEN, "Name component is too long"},
- {H5E_CWG, "Problem with current working group"},
- {H5E_LINK, "Link count failure"},
- {H5E_SLINK, "Symbolic link error"},
-
- /* Datatype conversion errors */
- {H5E_CANTCONVERT, "Can't convert datatypes"},
- {H5E_BADSIZE, "Bad size for object"},
-
- /* Dataspace errors */
- {H5E_CANTCLIP, "Can't clip hyperslab region"},
- {H5E_CANTCOUNT, "Can't count elements"},
- {H5E_CANTSELECT, "Can't select hyperslab"},
- {H5E_CANTNEXT, "Can't move to next iterator location"},
- {H5E_BADSELECT, "Invalid selection"},
- {H5E_CANTCOMPARE, "Can't compare objects"},
-
- /* Property list errors */
- {H5E_CANTGET, "Can't get value"},
- {H5E_CANTSET, "Can't set value"},
- {H5E_DUPCLASS, "Duplicate class name in parent class"},
-
- /* Parallel MPI errors */
- {H5E_MPI, "Some MPI function failed"},
- {H5E_MPIERRSTR, "MPI Error String"},
-
- /* FPHDF5 errors */
- {H5E_CANTMAKETREE, "Can't create a binary tree node"},
- {H5E_CANTRECV, "Can't receive messages from processes"},
- {H5E_CANTSENDMDATA, "Can't send metadata message"},
- {H5E_CANTCHANGE, "Can't register change with server"},
- {H5E_CANTALLOC, "Can't allocate from file"},
-
- /* I/O pipeline errors */
- {H5E_NOFILTER, "Requested filter is not available"},
- {H5E_CALLBACK, "Callback failed"},
- {H5E_CANAPPLY, "Error from filter \"can apply\" callback"},
- {H5E_SETLOCAL, "Error from filter \"set local\" callback"}
-
-};
-
/* Interface initialization? */
static int interface_initialize_g = 0;
#define INTERFACE_INIT H5E_init_interface
-#ifndef NEW_ERR
/*
* Predefined errors. These are initialized at runtime in H5E_init_interface()
* in this source file.
@@ -338,53 +185,9 @@ static int interface_initialize_g = 0;
* types to reset in H5E_term_interface().
*/
hid_t H5E_ERR_CLS_g = FAIL;
-
-#endif /* NEW_ERR */
-
-#ifndef NEW_ERR
-#ifdef H5_HAVE_THREADSAFE
-/*
- * The per-thread error stack. pthread_once() initializes a special
- * key that will be used by all threads to create a stack specific to
- * each thread individually. The association of stacks to threads will
- * be handled by the pthread library.
- *
- * In order for this macro to work, H5E_get_my_stack() must be preceeded
- * by "H5E_t *estack =".
- */
-H5E_t_new *H5E_get_stack_new(void);
-#define H5E_get_my_stack_new() H5E_get_stack_new()
-#else /* H5_HAVE_THREADSAFE */
-/*
- * The error stack. Eventually we'll have some sort of global table so each
- * thread has it's own stack. The stacks will be created on demand when the
- * thread first calls H5E_push(). */
-H5E_t_new H5E_stack_g_new[1];
-#define H5E_get_my_stack_new() (H5E_stack_g_new+0)
-#endif /* H5_HAVE_THREADSAFE */
-
-#endif /* NEW_ERR */
-
-#ifdef H5_HAVE_THREADSAFE
-/*
- * The per-thread error stack. pthread_once() initializes a special
- * key that will be used by all threads to create a stack specific to
- * each thread individually. The association of stacks to threads will
- * be handled by the pthread library.
- *
- * In order for this macro to work, H5E_get_my_stack() must be preceeded
- * by "H5E_t *estack =".
- */
-H5E_t *H5E_get_stack(void);
-#define H5E_get_my_stack() H5E_get_stack()
-#else
-/*
- * The error stack. Eventually we'll have some sort of global table so each
- * thread has it's own stack. The stacks will be created on demand when the
- * thread first calls H5E_push(). */
+#ifndef H5_HAVE_THREADSAFE
H5E_t H5E_stack_g[1];
-#define H5E_get_my_stack() (H5E_stack_g+0)
-#endif
+#endif /* H5_HAVE_THREADSAFE */
#ifdef H5_HAVE_PARALLEL
/*
@@ -394,23 +197,13 @@ char H5E_mpi_error_str[MPI_MAX_ERROR_STRING];
int H5E_mpi_error_str_len;
#endif
-/*
- * Automatic error stack traversal occurs if the traversal callback function
- * is non null and an API function is about to return an error. These should
- * probably be part of the error stack so they're local to a thread.
- */
-herr_t (*H5E_auto_g)(void*) = (herr_t(*)(void*))H5Eprint;
-void *H5E_auto_data_g = NULL;
-
-
/* Static function declarations */
static herr_t H5E_init_interface (void);
-#ifndef NEW_ERR
static int H5E_close_msg_cb(void *obj_ptr, hid_t obj_id, void *key);
-static herr_t H5E_walk_cb_new(int n, H5E_error_t_new *err_desc, void *client_data);
-#endif /* NEW_ERR */
-static herr_t H5E_walk_cb (int n, H5E_error_t *err_desc, void *client_data);
+static herr_t H5E_walk_cb(int n, H5E_error_t *err_desc, void *client_data);
+
+#ifdef OLD_ERR /* Old codes, commented out */
#ifdef H5_HAVE_THREADSAFE
/*-------------------------------------------------------------------------
@@ -452,8 +245,7 @@ done:
FUNC_LEAVE_NOAPI(ret_value);
}
#endif /* H5_HAVE_THREADSAFE */
-
-#ifndef NEW_ERR
+#endif /* OLD_ERR */
/*--------------------------------------------------------------------------
* Function: H5E_init_interface
@@ -485,143 +277,140 @@ H5E_init_interface(void)
(H5I_free_t)H5E_close_stack);
#ifndef H5_HAVE_THREADSAFE
- H5E_stack_g_new[0].func = &(H5Eprint_new);
- H5E_stack_g_new[0].auto_data = stderr;
+ H5E_stack_g[0].func = (H5E_auto_t)H5Eprint;
+ H5E_stack_g[0].auto_data = stderr;
#endif /* H5_HAVE_THREADSAFE */
H5E_ERR_CLS_g = H5E_register_class(H5E_CLS_NAME, H5E_CLS_LIB_NAME, H5E_CLS_LIB_VERS);
- H5E_NONE_MAJOR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_NONE_MAJOR_MSG_new);
- H5E_ARGS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_ARGS_MSG_new);
- H5E_RESOURCE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_RESOURCE_MSG_new);
- H5E_INTERNAL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_INTERNAL_MSG_new);
- H5E_FILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_FILE_MSG_new);
-
- H5E_IO_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_IO_MSG_new);
- H5E_FUNC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_FUNC_MSG_new);
- H5E_ATOM_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_ATOM_MSG_new);
- H5E_CACHE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_CACHE_MSG_new);
- H5E_BTREE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_BTREE_MSG_new);
-
- H5E_SYM_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_SYM_MSG_new);
- H5E_HEAP_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_HEAP_MSG_new);
- H5E_OHDR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_HEAP_MSG_new);
- H5E_DATATYPE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_DATATYPE_MSG_new);
- H5E_DATASPACE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_DATASPACE_MSG_new);
-
- H5E_DATASET_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_DATASET_MSG_new);
- H5E_STORAGE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_STORAGE_MSG_new);
- H5E_PLIST_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_PLIST_MSG_new);
- H5E_ATTR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_ATTR_MSG_new);
- H5E_PLINE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_PLINE_MSG_new);
-
- H5E_EFL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_EFL_MSG_new);
- H5E_REFERENCE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_REFERENCE_MSG_new);
- H5E_VFL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_VFL_MSG_new);
- H5E_TBBT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_TBBT_MSG_new);
- H5E_FPHDF5_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_FPHDF5_MSG_new);
-
- H5E_TST_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_TST_MSG_new);
- H5E_RS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_RS_MSG_new);
- H5E_ERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MAJ_ERROR_MSG_new);
+ H5E_NONE_MAJOR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_NONE_MAJOR_MSG);
+ H5E_ARGS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_ARGS_MSG);
+ H5E_RESOURCE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_RESOURCE_MSG);
+ H5E_INTERNAL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_INTERNAL_MSG);
+ H5E_FILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_FILE_MSG);
+
+ H5E_IO_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_IO_MSG);
+ H5E_FUNC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_FUNC_MSG);
+ H5E_ATOM_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_ATOM_MSG);
+ H5E_CACHE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_CACHE_MSG);
+ H5E_BTREE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_BTREE_MSG);
+
+ H5E_SYM_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_SYM_MSG);
+ H5E_HEAP_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_HEAP_MSG);
+ H5E_OHDR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_HEAP_MSG);
+ H5E_DATATYPE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_DATATYPE_MSG);
+ H5E_DATASPACE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_DATASPACE_MSG);
+
+ H5E_DATASET_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_DATASET_MSG);
+ H5E_STORAGE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_STORAGE_MSG);
+ H5E_PLIST_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_PLIST_MSG);
+ H5E_ATTR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_ATTR_MSG);
+ H5E_PLINE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_PLINE_MSG);
+
+ H5E_EFL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_EFL_MSG);
+ H5E_REFERENCE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_REFERENCE_MSG);
+ H5E_VFL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_VFL_MSG);
+ H5E_TBBT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_TBBT_MSG);
+ H5E_FPHDF5_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_FPHDF5_MSG);
+
+ H5E_TST_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_TST_MSG);
+ H5E_RS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_RS_MSG);
+ H5E_ERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR, H5E_MAJ_ERROR_MSG);
/* Minor errors */
- H5E_NONE_MINOR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR_new, H5E_NONE_MINOR_MSG_new);
- H5E_UNINITIALIZED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_UNINITIALIZED_MSG_new);
- H5E_UNSUPPORTED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_UNSUPPORTED_MSG_new);
- H5E_BADTYPE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADTYPE_MSG_new);
- H5E_BADRANGE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADRANGE_MSG_new);
- H5E_BADVALUE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADVALUE_MSG_new);
-
- H5E_NOSPACE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_NOSPACE_MSG_new);
- H5E_CANTCOPY_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCOPY_MSG_new);
- H5E_CANTFREE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTFREE_MSG_new);
- H5E_ALREADYEXISTS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_ALREADYEXISTS_MSG_new);
- H5E_CANTLOCK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTLOCK_MSG_new);
- H5E_CANTUNLOCK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTUNLOCK_MSG_new);
- H5E_CANTGC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTGC_MSG_new);
-
- H5E_FILEEXISTS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_FILEEXISTS_MSG_new);
- H5E_FILEOPEN_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_FILEOPEN_MSG_new);
- H5E_CANTCREATE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCREATE_MSG_new);
- H5E_CANTOPENFILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTOPENFILE_MSG_new);
- H5E_CANTCLOSEFILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCLOSEFILE_MSG_new);
- H5E_NOTHDF5_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_NOTHDF5_MSG_new);
- H5E_BADFILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADFILE_MSG_new);
- H5E_TRUNCATED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_TRUNCATED_MSG_new);
- H5E_MOUNT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_MOUNT_MSG_new);
-
- H5E_SEEKERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_SEEKERROR_MSG_new);
- H5E_READERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_READERROR_MSG_new);
- H5E_WRITEERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_WRITEERROR_MSG_new);
- H5E_CLOSEERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CLOSEERROR_MSG_new);
-
- H5E_CANTINIT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTINIT_MSG_new);
- H5E_ALREADYINIT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_ALREADYINIT_MSG_new);
- H5E_CANTRELEASE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTRELEASE_MSG_new);
-
- H5E_BADATOM_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADATOM_MSG_new);
- H5E_BADGROUP_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADGROUP_MSG_new);
- H5E_CANTREGISTER_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTREGISTER_MSG_new);
- H5E_CANTINC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTINC_MSG_new);
- H5E_CANTDEC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTDEC_MSG_new);
- H5E_NOIDS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_NOIDS_MSG_new);
-
- H5E_CANTFLUSH_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTFLUSH_MSG_new);
- H5E_CANTLOAD_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTLOAD_MSG_new);
- H5E_PROTECT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_PROTECT_MSG_new);
- H5E_NOTCACHED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_NOTCACHED_MSG_new);
-
- H5E_NOTFOUND_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_NOTFOUND_MSG_new);
- H5E_EXISTS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_EXISTS_MSG_new);
- H5E_CANTENCODE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTENCODE_MSG_new);
- H5E_CANTDECODE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTDECODE_MSG_new);
- H5E_CANTSPLIT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTSPLIT_MSG_new);
- H5E_CANTINSERT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTINSERT_MSG_new);
- H5E_CANTLIST_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTLIST_MSG_new);
-
- H5E_LINKCOUNT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_LINKCOUNT_MSG_new);
- H5E_VERSION_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_VERSION_MSG_new);
- H5E_ALIGNMENT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_ALIGNMENT_MSG_new);
- H5E_BADMESG_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADMESG_MSG_new);
- H5E_CANTDELETE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTDELETE_MSG_new);
-
- H5E_CANTOPENOBJ_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTOPENOBJ_MSG_new);
- H5E_COMPLEN_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_COMPLEN_MSG_new);
- H5E_CWG_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CWG_MSG_new);
- H5E_LINK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_LINK_MSG_new);
- H5E_SLINK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_SLINK_MSG_new);
-
- H5E_CANTCONVERT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCONVERT_MSG_new);
- H5E_BADSIZE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADSIZE_MSG_new);
-
- H5E_CANTCLIP_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCLIP_MSG_new);
- H5E_CANTCOUNT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCOUNT_MSG_new);
- H5E_CANTSELECT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTSELECT_MSG_new);
- H5E_CANTNEXT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTNEXT_MSG_new);
- H5E_BADSELECT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_BADSELECT_MSG_new);
- H5E_CANTCOMPARE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCOMPARE_MSG_new);
-
- H5E_CANTGET_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTGET_MSG_new);
- H5E_CANTSET_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTSET_MSG_new);
- H5E_DUPCLASS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_DUPCLASS_MSG_new);
-
- H5E_MPI_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_MPI_MSG_new);
- H5E_MPIERRSTR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_MPIERRSTR_MSG_new);
-
- H5E_CANTMAKETREE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTMAKETREE_MSG_new);
- H5E_CANTRECV_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTRECV_MSG_new);
- H5E_CANTSENDMDATA_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTSENDMDATA_MSG_new);
- H5E_CANTCHANGE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTCHANGE_MSG_new);
- H5E_CANTALLOC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANTALLOC_MSG_new);
-
- H5E_NOFILTER_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_NOFILTER_MSG_new);
- H5E_CALLBACK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CALLBACK_MSG_new);
- H5E_CANAPPLY_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_CANAPPLY_MSG_new);
- H5E_SETLOCAL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MAJOR_new, H5E_MIN_SETLOCAL_MSG_new);
-
- /* From the old function; take out later */
- H5E_auto_data_g = stderr;
+ H5E_NONE_MINOR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_NONE_MINOR_MSG);
+ H5E_UNINITIALIZED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_UNINITIALIZED_MSG);
+ H5E_UNSUPPORTED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_UNSUPPORTED_MSG);
+ H5E_BADTYPE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADTYPE_MSG);
+ H5E_BADRANGE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADRANGE_MSG);
+ H5E_BADVALUE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADVALUE_MSG);
+
+ H5E_NOSPACE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_NOSPACE_MSG);
+ H5E_CANTCOPY_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCOPY_MSG);
+ H5E_CANTFREE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTFREE_MSG);
+ H5E_ALREADYEXISTS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_ALREADYEXISTS_MSG);
+ H5E_CANTLOCK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTLOCK_MSG);
+ H5E_CANTUNLOCK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTUNLOCK_MSG);
+ H5E_CANTGC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTGC_MSG);
+
+ H5E_FILEEXISTS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_FILEEXISTS_MSG);
+ H5E_FILEOPEN_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_FILEOPEN_MSG);
+ H5E_CANTCREATE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCREATE_MSG);
+ H5E_CANTOPENFILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTOPENFILE_MSG);
+ H5E_CANTCLOSEFILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCLOSEFILE_MSG);
+ H5E_NOTHDF5_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_NOTHDF5_MSG);
+ H5E_BADFILE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADFILE_MSG);
+ H5E_TRUNCATED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_TRUNCATED_MSG);
+ H5E_MOUNT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_MOUNT_MSG);
+
+ H5E_SEEKERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_SEEKERROR_MSG);
+ H5E_READERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_READERROR_MSG);
+ H5E_WRITEERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_WRITEERROR_MSG);
+ H5E_CLOSEERROR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CLOSEERROR_MSG);
+
+ H5E_CANTINIT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTINIT_MSG);
+ H5E_ALREADYINIT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_ALREADYINIT_MSG);
+ H5E_CANTRELEASE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTRELEASE_MSG);
+
+ H5E_BADATOM_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADATOM_MSG);
+ H5E_BADGROUP_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADGROUP_MSG);
+ H5E_CANTREGISTER_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTREGISTER_MSG);
+ H5E_CANTINC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTINC_MSG);
+ H5E_CANTDEC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTDEC_MSG);
+ H5E_NOIDS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_NOIDS_MSG);
+
+ H5E_CANTFLUSH_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTFLUSH_MSG);
+ H5E_CANTLOAD_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTLOAD_MSG);
+ H5E_PROTECT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_PROTECT_MSG);
+ H5E_NOTCACHED_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_NOTCACHED_MSG);
+
+ H5E_NOTFOUND_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_NOTFOUND_MSG);
+ H5E_EXISTS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_EXISTS_MSG);
+ H5E_CANTENCODE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTENCODE_MSG);
+ H5E_CANTDECODE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTDECODE_MSG);
+ H5E_CANTSPLIT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTSPLIT_MSG);
+ H5E_CANTINSERT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTINSERT_MSG);
+ H5E_CANTLIST_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTLIST_MSG);
+
+ H5E_LINKCOUNT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_LINKCOUNT_MSG);
+ H5E_VERSION_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_VERSION_MSG);
+ H5E_ALIGNMENT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_ALIGNMENT_MSG);
+ H5E_BADMESG_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADMESG_MSG);
+ H5E_CANTDELETE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTDELETE_MSG);
+
+ H5E_CANTOPENOBJ_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTOPENOBJ_MSG);
+ H5E_COMPLEN_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_COMPLEN_MSG);
+ H5E_CWG_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CWG_MSG);
+ H5E_LINK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_LINK_MSG);
+ H5E_SLINK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_SLINK_MSG);
+
+ H5E_CANTCONVERT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCONVERT_MSG);
+ H5E_BADSIZE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADSIZE_MSG);
+
+ H5E_CANTCLIP_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCLIP_MSG);
+ H5E_CANTCOUNT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCOUNT_MSG);
+ H5E_CANTSELECT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTSELECT_MSG);
+ H5E_CANTNEXT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTNEXT_MSG);
+ H5E_BADSELECT_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_BADSELECT_MSG);
+ H5E_CANTCOMPARE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCOMPARE_MSG);
+
+ H5E_CANTGET_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTGET_MSG);
+ H5E_CANTSET_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTSET_MSG);
+ H5E_DUPCLASS_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_DUPCLASS_MSG);
+
+ H5E_MPI_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_MPI_MSG);
+ H5E_MPIERRSTR_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_MPIERRSTR_MSG);
+
+ H5E_CANTMAKETREE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTMAKETREE_MSG);
+ H5E_CANTRECV_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTRECV_MSG);
+ H5E_CANTSENDMDATA_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTSENDMDATA_MSG);
+ H5E_CANTCHANGE_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTCHANGE_MSG);
+ H5E_CANTALLOC_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANTALLOC_MSG);
+
+ H5E_NOFILTER_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_NOFILTER_MSG);
+ H5E_CALLBACK_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CALLBACK_MSG);
+ H5E_CANAPPLY_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_CANAPPLY_MSG);
+ H5E_SETLOCAL_g = H5E_create_msg(H5E_ERR_CLS_g, H5E_MINOR, H5E_MIN_SETLOCAL_MSG);
done:
FUNC_LEAVE_NOAPI(ret_value);
@@ -649,10 +438,19 @@ int
H5E_term_interface(void)
{
int ncls, nmsg, nstk, n=0;
+ H5E_t *estack;
FUNC_ENTER_NOINIT(H5E_term_interface);
if (interface_initialize_g) {
+#ifdef H5_HAVE_THREADSAFE
+ /* Free default error stack here? */
+ estack = pthread_getspecific(H5TS_errstk_key_g);
+ if (estack) {
+ H5MM_free(estack);
+ }
+#endif
+
/* Check if there are any open property list classes or lists */
ncls = H5I_nmembers(H5I_ERROR_CLASS);
nmsg = H5I_nmembers(H5I_ERROR_MSG);
@@ -670,6 +468,7 @@ H5E_term_interface(void)
if(H5I_nmembers(H5I_ERROR_CLASS)==0)
H5E_ERR_CLS_g = -1;
}
+
if (nstk>0)
H5I_clear_group(H5I_ERROR_STACK, FALSE);
@@ -688,38 +487,6 @@ H5E_term_interface(void)
FUNC_LEAVE_NOAPI(n);
}
-#else /* NEW_ERR */
-
-/*-------------------------------------------------------------------------
- * Function: H5E_init_interface
- *
- * Purpose: Initialize the H5E interface. `stderr' is an extern or
- * function on some systems so we can't initialize
- * H5E_auto_data_g statically.
- *
- * Return: Success: Non-negative
- *
- * Failure: Negative
- *
- * Programmer: Robb Matzke
- * Friday, June 11, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5E_init_interface (void)
-{
- FUNC_ENTER_NOINIT(H5E_init_interface);
-
- H5E_auto_data_g = stderr;
-
- FUNC_LEAVE_NOAPI(SUCCEED);
-}
-#endif /* NEW_ERR */
-
-#ifndef NEW_ERR
/*-------------------------------------------------------------------------
* Function: H5Eregister_class
@@ -928,7 +695,7 @@ H5E_get_class_name(H5E_cls_t *cls, char *name, size_t size)
FUNC_ENTER_NOAPI(H5E_get_class_name, FAIL);
if(cls->cls_name)
- len = HDstrlen(cls->cls_name);
+ len = (ssize_t)HDstrlen(cls->cls_name);
else
len = 0;
@@ -1189,7 +956,7 @@ done:
#ifdef H5_HAVE_THREADSAFE
/*-------------------------------------------------------------------------
- * Function: H5E_get_stack_new
+ * Function: H5E_get_stack
*
* Purpose: Support function for H5E_get_my_stack() to initialize and
* acquire per-thread error stack.
@@ -1205,22 +972,23 @@ done:
*
*-------------------------------------------------------------------------
*/
-H5E_t_new *
-H5E_get_stack_new(void)
+H5E_t *
+H5E_get_stack(void)
{
- H5E_t_new *estack;
+ H5E_t *estack, *tmp;
H5E_t *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5E_get_stack_new,NULL);
+ FUNC_ENTER_NOAPI(H5E_get_stack,NULL);
- estack = pthread_getspecific(H5TS_errstk_key_g_new);
+ estack = pthread_getspecific(H5TS_errstk_key_g);
if (!estack) {
/* no associated value with current thread - create one */
- estack = (H5E_t_new *)H5MM_calloc(sizeof(H5E_t_new));
- estack->func = H5Eprint_new;
+ /* Where is it freed? */
+ estack = (H5E_t *)H5MM_calloc(sizeof(H5E_t));
+ estack->func = H5Eprint;
estack->auto_data = stderr;
- pthread_setspecific(H5TS_errstk_key_g_new, (void *)estack);
+ pthread_setspecific(H5TS_errstk_key_g, (void *)estack);
}
/* Set return value */
@@ -1281,9 +1049,9 @@ hid_t
H5E_get_current_stack(void)
{
hid_t ret_value; /* Return value */
- H5E_t_new *current_stack = H5E_get_my_stack_new ();
- H5E_t_new *estack_copy = H5MM_malloc(sizeof(H5E_t_new));
- H5E_error_t_new *current_error, *new_error;
+ H5E_t *current_stack = H5E_get_my_stack ();
+ H5E_t *estack_copy = H5MM_malloc(sizeof(H5E_t));
+ H5E_error_t *current_error, *new_error;
int i;
FUNC_ENTER_NOAPI(H5E_get_current_stack, FAIL);
@@ -1314,7 +1082,7 @@ H5E_get_current_stack(void)
if(current_error->desc)
H5MM_xfree((void*)current_error->desc);
}
- HDmemset(current_stack->slot, 0, sizeof(H5E_error_t_new)*current_stack->nused);
+ HDmemset(current_stack->slot, 0, sizeof(H5E_error_t)*current_stack->nused);
current_stack->nused = 0;
/* Register the error stack to get an ID for it */
@@ -1344,7 +1112,7 @@ herr_t
H5Eset_current_stack(hid_t err_stack_id)
{
herr_t ret_value = SUCCEED; /* Return value */
- H5E_t_new *estack;
+ H5E_t *estack;
FUNC_ENTER_API(H5Eset_current_stack, FAIL);
H5TRACE1("e","i",err_stack_id);
@@ -1378,11 +1146,11 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_set_current_stack(H5E_t_new *estack)
+H5E_set_current_stack(H5E_t *estack)
{
herr_t ret_value = SUCCEED; /* Return value */
- H5E_t_new *current_stack = H5E_get_my_stack_new();
- H5E_error_t_new *current_error, *new_error;
+ H5E_t *current_stack = H5E_get_my_stack();
+ H5E_error_t *current_error, *new_error;
int i;
FUNC_ENTER_NOAPI(H5E_get_current_stack, FAIL);
@@ -1397,7 +1165,7 @@ H5E_set_current_stack(H5E_t_new *estack)
if(current_error->desc)
H5MM_xfree((void*)current_error->desc);
}
- HDmemset(current_stack->slot, 0, sizeof(H5E_error_t_new)*current_stack->nused);
+ HDmemset(current_stack->slot, 0, sizeof(H5E_error_t)*current_stack->nused);
current_stack->nused = 0;
/* Copy new stack to current error stack */
@@ -1439,11 +1207,11 @@ herr_t
H5Eclose_stack(hid_t stack_id)
{
herr_t ret_value = SUCCEED; /* Return value */
- H5E_t_new *err_stack;
+ H5E_t *err_stack;
FUNC_ENTER_API(H5Eclose_stack, FAIL);
H5TRACE1("e","i",stack_id);
-
+/*HDfprintf(stderr, "H5Eclose_stack is called\n");*/
/* Add HGOTO_ERROR later */
if(H5E_DEFAULT == stack_id)
;
@@ -1478,13 +1246,14 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_close_stack(H5E_t_new *err_stack)
+H5E_close_stack(H5E_t *err_stack)
{
herr_t ret_value = SUCCEED; /* Return value */
- H5E_error_t_new *error;
+ H5E_error_t *error;
int i;
FUNC_ENTER_NOAPI(H5E_close_stack, FAIL);
+/*HDfprintf(stderr, "H5E_close_stack is called\n");*/
if(err_stack) {
for(i=0; i<err_stack->nused; i++) {
@@ -1523,14 +1292,14 @@ int
H5Eget_num(hid_t error_stack_id)
{
int ret_value; /* Return value */
- H5E_t_new *estack;
+ H5E_t *estack;
FUNC_ENTER_API(H5Eget_num, FAIL);
H5TRACE1("Is","i",error_stack_id);
/* Need to check for errors */
if(error_stack_id == H5E_DEFAULT)
- estack = H5E_get_my_stack_new();
+ estack = H5E_get_my_stack();
else
estack = H5I_object_verify(error_stack_id, H5I_ERROR_STACK);
@@ -1557,12 +1326,13 @@ done:
*-------------------------------------------------------------------------
*/
int
-H5E_get_num(H5E_t_new *err_stack)
+H5E_get_num(H5E_t *err_stack)
{
int ret_value; /* Return value */
FUNC_ENTER_NOAPI(H5E_get_num, FAIL);
-
+
+ assert(err_stack);
ret_value = err_stack->nused;
done:
@@ -1588,14 +1358,14 @@ herr_t
H5Epop(hid_t err_stack, size_t count)
{
herr_t ret_value = SUCCEED; /* Return value */
- H5E_t_new *estack;
+ H5E_t *estack;
FUNC_ENTER_API(H5Epop, FAIL);
H5TRACE2("e","iz",err_stack,count);
/* Need to check for errors */
if(err_stack == H5E_DEFAULT)
- estack = H5E_get_my_stack_new();
+ estack = H5E_get_my_stack();
else
estack = H5I_object_verify(err_stack, H5I_ERROR_STACK);
@@ -1626,10 +1396,10 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_pop(H5E_t_new *err_stack, size_t count)
+H5E_pop(H5E_t *err_stack, size_t count)
{
herr_t ret_value = SUCCEED; /* Return value */
- H5E_error_t_new *old_head, *new_head, *delete_head;
+ H5E_error_t *old_head, *new_head, *delete_head;
size_t delete_count;
int i;
@@ -1644,7 +1414,7 @@ H5E_pop(H5E_t_new *err_stack, size_t count)
/* Free memory for the errors to be deleted */
for(i=0; i<count; i++) {
- H5E_error_t_new *error = &(err_stack->slot[i]);
+ H5E_error_t *error = &(err_stack->slot[i]);
if(error->func_name)
H5MM_xfree((void*)error->func_name);
if(error->file_name)
@@ -1656,16 +1426,16 @@ H5E_pop(H5E_t_new *err_stack, size_t count)
/* Move the rest errors to the top of stack. Watch out: func_name, file_name, desc in new slot
* each points to the same location as the old slot. Do not free them when deleting the old
* slot. */
- HDmemmove(old_head, new_head, (err_stack->nused-count)*sizeof(H5E_error_t_new));
+ HDmemmove(old_head, new_head, (err_stack->nused-count)*sizeof(H5E_error_t));
/* Point to the beginning of errors to be removed, delete the old moved slots. */
delete_head = &(err_stack->slot[err_stack->nused-count]);
delete_count = count;
- HDmemset(delete_head, 0, delete_count*sizeof(H5E_error_t_new));
+ HDmemset(delete_head, 0, delete_count*sizeof(H5E_error_t));
err_stack->nused = err_stack->nused - count;
} else {
- H5E_clear_new(err_stack);
+ H5E_clear(err_stack);
}
done:
@@ -1674,7 +1444,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5Epush_new
+ * Function: H5Epush
*
* Purpose: Pushes a new error record onto error stack for the current
* thread. The error has major and minor IDs MAJ_ID and
@@ -1702,22 +1472,22 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5Epush_new(hid_t err_stack, const char *file, const char *func, unsigned line,
+H5Epush(hid_t err_stack, const char *file, const char *func, unsigned line,
hid_t maj_id, hid_t min_id, const char *fmt, ...)
{
herr_t ret_value;
- H5E_t_new *estack_ptr;
+ H5E_t *estack_ptr;
H5E_msg_t *maj_ptr, *min_ptr;
va_list ap;
hid_t cls_id;
char tmp[128]; /* What's the maximal length? */
- FUNC_ENTER_API(H5Epush_new, FAIL);
+ FUNC_ENTER_API(H5Epush, FAIL);
H5TRACE7("e","issIuiis",err_stack,file,func,line,maj_id,min_id,fmt);
/* Need to check for errors */
if(err_stack == H5E_DEFAULT)
- estack_ptr = H5E_get_my_stack_new();
+ estack_ptr = H5E_get_my_stack();
else
estack_ptr = H5I_object_verify(err_stack, H5I_ERROR_STACK);
@@ -1729,11 +1499,11 @@ H5Epush_new(hid_t err_stack, const char *file, const char *func, unsigned line,
cls_id = H5I_register(H5I_ERROR_CLASS, maj_ptr->cls);
va_start(ap, fmt);
- vsnprintf(tmp, 128, fmt, ap);
+ HDvsnprintf(tmp, H5E_LEN, fmt, ap);
va_end(ap);
/* Should we make copies of maj_idm and min_id? */
- ret_value = H5E_push_new(estack_ptr, file, func, line, cls_id, maj_id, min_id, tmp);
+ ret_value = H5E_push(estack_ptr, file, func, line, cls_id, maj_id, min_id, tmp);
done:
FUNC_LEAVE_API(ret_value);
@@ -1741,7 +1511,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5E_push_new
+ * Function: H5E_push
*
* Purpose: Pushes a new error record onto error stack for the current
* thread. The error has major and minor IDs MAJ_ID and
@@ -1769,7 +1539,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_push_new(H5E_t_new *estack, const char *file, const char *func, unsigned line,
+H5E_push(H5E_t *estack, const char *file, const char *func, unsigned line,
hid_t cls_id, hid_t maj_id, hid_t min_id, const char *desc)
{
/*
@@ -1779,7 +1549,7 @@ H5E_push_new(H5E_t_new *estack, const char *file, const char *func, unsigned lin
* HERROR(). HERROR() is called by HRETURN_ERROR() which could
* be called by FUNC_ENTER().
*/
- FUNC_ENTER_NOINIT(H5E_push_new);
+ FUNC_ENTER_NOINIT(H5E_push);
/*
* Don't fail if arguments are bad. Instead, substitute some default
@@ -1793,6 +1563,7 @@ H5E_push_new(H5E_t_new *estack, const char *file, const char *func, unsigned lin
* Push the error if there's room. Otherwise just forget it.
*/
assert (estack);
+
if (estack->nused<H5E_NSLOTS) {
estack->slot[estack->nused].cls_id = cls_id;
estack->slot[estack->nused].maj_id = maj_id;
@@ -1803,13 +1574,13 @@ H5E_push_new(H5E_t_new *estack, const char *file, const char *func, unsigned lin
estack->slot[estack->nused].desc = HDstrdup(desc);
estack->nused++;
}
-
+
FUNC_LEAVE_NOAPI(SUCCEED);
}
/*-------------------------------------------------------------------------
- * Function: H5Eclear_new
+ * Function: H5Eclear
*
* Purpose: Clears the error stack for the specified error stack.
*
@@ -1823,22 +1594,22 @@ H5E_push_new(H5E_t_new *estack, const char *file, const char *func, unsigned lin
*-------------------------------------------------------------------------
*/
herr_t
-H5Eclear_new(hid_t err_stack)
+H5Eclear(hid_t err_stack)
{
herr_t ret_value=SUCCEED; /* Return value */
- H5E_t_new *estack_ptr;
+ H5E_t *estack_ptr;
- FUNC_ENTER_API(H5Eclear_new, FAIL);
+ FUNC_ENTER_API(H5Eclear, FAIL);
H5TRACE1("e","i",err_stack);
/* FUNC_ENTER() does all the work */
/* Need to check for errors */
if(err_stack == H5E_DEFAULT)
- estack_ptr = H5E_get_my_stack_new();
+ estack_ptr = H5E_get_my_stack();
else
estack_ptr = H5I_object_verify(err_stack, H5I_ERROR_STACK);
- ret_value = H5E_clear_new(estack_ptr);
+ ret_value = H5E_clear(estack_ptr);
done:
FUNC_LEAVE_API(ret_value);
@@ -1846,7 +1617,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5E_clear_new
+ * Function: H5E_clear
*
* Purpose: Private function to clear the error stack for the
* specified error stack.
@@ -1861,13 +1632,13 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_clear_new(H5E_t_new *estack)
+H5E_clear(H5E_t *estack)
{
herr_t ret_value=SUCCEED; /* Return value */
- H5E_error_t_new *error;
+ H5E_error_t *error;
int i;
- FUNC_ENTER_NOAPI(H5E_clear_new, FAIL);
+ FUNC_ENTER_NOAPI(H5E_clear, FAIL);
/* Empty the error stack */
if (estack) {
@@ -1880,16 +1651,17 @@ H5E_clear_new(H5E_t_new *estack)
if(error->desc)
H5MM_xfree((void*)error->desc);
}
- HDmemset(estack->slot, 0, sizeof(H5E_error_t_new)*estack->nused);
+ HDmemset(estack->slot, 0, sizeof(H5E_error_t)*estack->nused);
+ estack->nused = 0;
}
-
+
done:
FUNC_LEAVE_NOAPI(ret_value);
}
/*-------------------------------------------------------------------------
- * Function: H5E_print_new
+ * Function: H5Eprint
*
* Purpose: Prints the error stack in some default way. This is just a
* convenience function for H5Ewalk() with a function that
@@ -1915,22 +1687,22 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5Eprint_new(hid_t err_stack, FILE *stream)
+H5Eprint(hid_t err_stack, FILE *stream)
{
herr_t ret_value=SUCCEED; /* Return value */
- H5E_t_new *estack_ptr;
+ H5E_t *estack_ptr;
/* Don't clear the error stack! :-) */
- FUNC_ENTER_API_NOCLEAR(H5Eprint_new, FAIL);
+ FUNC_ENTER_API_NOCLEAR(H5Eprint, FAIL);
/*NO TRACE*/
/* Need to check for errors */
if(err_stack == H5E_DEFAULT)
- estack_ptr = H5E_get_my_stack_new();
+ estack_ptr = H5E_get_my_stack();
else
estack_ptr = H5I_object_verify(err_stack, H5I_ERROR_STACK);
- ret_value = H5E_print_new(estack_ptr, stream);
+ ret_value = H5E_print(estack_ptr, stream);
done:
FUNC_LEAVE_API(ret_value);
@@ -1938,7 +1710,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5E_print_new
+ * Function: H5E_print
*
* Purpose: Private function to print the error stack in some default
* way. This is just a convenience function for H5Ewalk()
@@ -1964,42 +1736,35 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_print_new(H5E_t_new *estack, FILE *stream)
+H5E_print(H5E_t *estack, FILE *stream)
{
herr_t ret_value = SUCCEED;
H5E_print_t eprint;
H5E_cls_t origin_cls={"Unknown class", "Unknown library", "Unknown library version"};
/* Don't clear the error stack! :-) */
- FUNC_ENTER_API_NOCLEAR(H5Eprint, FAIL);
+ FUNC_ENTER_NOAPI(H5E_print, FAIL);
/*NO TRACE*/
-
+
+ assert(estack);
if (!stream)
eprint.stream = stderr;
else
eprint.stream = stream;
- eprint.cls.cls_name = HDstrdup(origin_cls.cls_name);
- eprint.cls.lib_name = HDstrdup(origin_cls.lib_name);
- eprint.cls.lib_vers = HDstrdup(origin_cls.lib_vers);
+ eprint.cls.cls_name = origin_cls.cls_name;
+ eprint.cls.lib_name = origin_cls.lib_name;
+ eprint.cls.lib_vers = origin_cls.lib_vers;
- ret_value = H5E_walk_new (estack, H5E_WALK_DOWNWARD, H5E_walk_cb_new, (void*)&eprint);
-
- /* Free memory */
- if(eprint.cls.cls_name)
- H5MM_free(eprint.cls.cls_name);
- if(eprint.cls.lib_name)
- H5MM_free(eprint.cls.lib_name);
- if(eprint.cls.lib_vers)
- H5MM_free(eprint.cls.lib_vers);
+ ret_value = H5E_walk (estack, H5E_WALK_DOWNWARD, H5E_walk_cb, (void*)&eprint);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value);
}
/*-------------------------------------------------------------------------
- * Function: H5Ewalk_new
+ * Function: H5Ewalk
*
* Purpose: Walks the error stack for the current thread and calls some
* function for each error along the way.
@@ -2018,22 +1783,22 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5Ewalk_new(hid_t err_stack, H5E_direction_t direction, H5E_walk_t_new func, void *client_data)
+H5Ewalk(hid_t err_stack, H5E_direction_t direction, H5E_walk_t func, void *client_data)
{
- H5E_t_new *estack_ptr;
+ H5E_t *estack_ptr;
herr_t ret_value;
/* Don't clear the error stack! :-) */
- FUNC_ENTER_API_NOCLEAR(H5Ewalk_new, FAIL);
+ FUNC_ENTER_API_NOCLEAR(H5Ewalk, FAIL);
H5TRACE4("e","iEdxx",err_stack,direction,func,client_data);
/* Need to check for errors */
if(err_stack == H5E_DEFAULT)
- estack_ptr = H5E_get_my_stack_new();
+ estack_ptr = H5E_get_my_stack();
else
estack_ptr = H5I_object_verify(err_stack, H5I_ERROR_STACK);
- ret_value = H5E_walk_new (estack_ptr, direction, func, client_data);
+ ret_value = H5E_walk (estack_ptr, direction, func, client_data);
done:
FUNC_LEAVE_API(ret_value);
@@ -2041,9 +1806,9 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5E_walk_new
+ * Function: H5E_walk
*
- * Purpose: Private function for H5Ewalk_new.
+ * Purpose: Private function for H5Ewalk.
* Walks the error stack, calling the specified function for
* each error on the stack. The DIRECTION argument determines
* whether the stack is walked from the inside out or the
@@ -2072,13 +1837,13 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_walk_new (H5E_t_new *estack, H5E_direction_t direction, H5E_walk_t_new func, void *client_data)
+H5E_walk (H5E_t *estack, H5E_direction_t direction, H5E_walk_t func, void *client_data)
{
int i;
herr_t status;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5E_walk_new, FAIL);
+ FUNC_ENTER_NOAPI(H5E_walk, FAIL);
/* check args, but rather than failing use some default value */
if (direction!=H5E_WALK_UPWARD && direction!=H5E_WALK_DOWNWARD) {
@@ -2087,6 +1852,11 @@ H5E_walk_new (H5E_t_new *estack, H5E_direction_t direction, H5E_walk_t_new func,
/* walk the stack */
assert (estack);
+
+/*for(i=0; i<estack->nused; i++)
+ HDfprintf(stderr, "%s %d: i=%d, maj_id=%d, min_id=%d, nused=%d\n", FUNC, __LINE__, i, estack->slot[i].maj_id,
+ estack->slot[i].min_id, estack->nused);
+*/
if (func && H5E_WALK_UPWARD==direction) {
for (i=0, status=SUCCEED; i<estack->nused && status>=0; i++) {
@@ -2104,7 +1874,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5E_walk_cb_new
+ * Function: H5E_walk_cb
*
* Purpose: This is a default error stack traversal callback function
* that prints error messages to the specified output stream.
@@ -2137,7 +1907,7 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5E_walk_cb_new(int n, H5E_error_t_new *err_desc, void *client_data)
+H5E_walk_cb(int n, H5E_error_t *err_desc, void *client_data)
{
H5E_print_t *eprint = (H5E_print_t *)client_data;
FILE *stream = NULL;
@@ -2149,7 +1919,7 @@ H5E_walk_cb_new(int n, H5E_error_t_new *err_desc, void *client_data)
const char *cls_str = NULL;
const int indent = 2;
- FUNC_ENTER_NOINIT(H5E_walk_cb_new);
+ FUNC_ENTER_NOINIT(H5E_walk_cb);
/*NO TRACE*/
/* Check arguments */
@@ -2161,8 +1931,11 @@ H5E_walk_cb_new(int n, H5E_error_t_new *err_desc, void *client_data)
/* Need to check for errors */
maj_ptr = H5I_object_verify(err_desc->maj_id, H5I_ERROR_MSG);
min_ptr = H5I_object_verify(err_desc->min_id, H5I_ERROR_MSG);
- maj_str = maj_ptr->msg;
- min_str = min_ptr->msg;
+ assert(maj_ptr && min_ptr);
+ if(maj_ptr->msg)
+ maj_str = maj_ptr->msg;
+ if(min_ptr)
+ min_str = min_ptr->msg;
/* Get error class info */
/* add error checking later */
@@ -2173,14 +1946,10 @@ H5E_walk_cb_new(int n, H5E_error_t_new *err_desc, void *client_data)
/* Print error message */
if(HDstrcmp(cls_ptr->lib_name, eprint->cls.lib_name)) {
- /* store the new class information, free the old one. */
- if(eprint->cls.cls_name) H5MM_free(eprint->cls.cls_name);
- if(eprint->cls.lib_name) H5MM_free(eprint->cls.lib_name);
- if(eprint->cls.lib_vers) H5MM_free(eprint->cls.lib_vers);
-
- if(cls_ptr->cls_name) eprint->cls.cls_name = HDstrdup(cls_ptr->cls_name);
- if(cls_ptr->lib_name) eprint->cls.lib_name = HDstrdup(cls_ptr->lib_name);
- if(cls_ptr->lib_vers) eprint->cls.lib_vers = HDstrdup(cls_ptr->lib_vers);
+ /* update to the new class information */
+ if(cls_ptr->cls_name) eprint->cls.cls_name = cls_ptr->cls_name;
+ if(cls_ptr->lib_name) eprint->cls.lib_name = cls_ptr->lib_name;
+ if(cls_ptr->lib_vers) eprint->cls.lib_vers = cls_ptr->lib_vers;
fprintf (stream, "%s-DIAG: Error detected in %s ", cls_ptr->lib_name, cls_ptr->lib_vers);
@@ -2216,7 +1985,7 @@ H5E_walk_cb_new(int n, H5E_error_t_new *err_desc, void *client_data)
/*-------------------------------------------------------------------------
- * Function: H5Eget_auto_new
+ * Function: H5Eget_auto
*
* Purpose: Returns the current settings for the automatic error stack
* traversal function and its data for specific error stack.
@@ -2237,20 +2006,20 @@ H5E_walk_cb_new(int n, H5E_error_t_new *err_desc, void *client_data)
*-------------------------------------------------------------------------
*/
herr_t
-H5Eget_auto_new(hid_t estack_id, H5E_auto_t *func, void **client_data)
+H5Eget_auto(hid_t estack_id, H5E_auto_t *func, void **client_data)
{
herr_t ret_value=SUCCEED; /* Return value */
- H5E_t_new *estack_ptr = NULL;
+ H5E_t *estack_ptr = NULL;
- FUNC_ENTER_API(H5Eget_auto_new, FAIL);
+ FUNC_ENTER_API(H5Eget_auto, FAIL);
H5TRACE3("e","i*x*x",estack_id,func,client_data);
if(estack_id == H5E_DEFAULT)
- estack_ptr = H5E_get_my_stack_new();
+ estack_ptr = H5E_get_my_stack();
else
estack_ptr = H5I_object_verify(estack_id, H5I_ERROR_STACK);
- ret_value = H5E_get_auto_new(estack_ptr, func, client_data);
+ ret_value = H5E_get_auto(estack_ptr, func, client_data);
done:
FUNC_LEAVE_API(ret_value);
@@ -2258,7 +2027,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5E_get_auto_new
+ * Function: H5E_get_auto
*
* Purpose: Private function to return the current settings for the
* automatic error stack traversal function and its data
@@ -2275,11 +2044,11 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_get_auto_new(H5E_t_new *estack, H5E_auto_t *func, void **client_data)
+H5E_get_auto(H5E_t *estack, H5E_auto_t *func, void **client_data)
{
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5E_get_auto_new, FAIL);
+ FUNC_ENTER_NOAPI(H5E_get_auto, FAIL);
assert (estack);
@@ -2292,7 +2061,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5Eset_auto_new
+ * Function: H5Eset_auto
*
* Purpose: Turns on or off automatic printing of errors for certain
* error stack. When turned on (non-null FUNC pointer) any
@@ -2318,20 +2087,20 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5Eset_auto_new(hid_t estack_id, H5E_auto_t func, void *client_data)
+H5Eset_auto(hid_t estack_id, H5E_auto_t func, void *client_data)
{
herr_t ret_value=SUCCEED; /* Return value */
- H5E_t_new *estack_ptr = NULL;
+ H5E_t *estack_ptr = NULL;
- FUNC_ENTER_API(H5Eset_auto_new, FAIL);
+ FUNC_ENTER_API(H5Eset_auto, FAIL);
H5TRACE3("e","ixx",estack_id,func,client_data);
if(estack_id == H5E_DEFAULT)
- estack_ptr = H5E_get_my_stack_new();
+ estack_ptr = H5E_get_my_stack();
else
estack_ptr = H5I_object_verify(estack_id, H5I_ERROR_STACK);
- ret_value = H5E_set_auto_new(estack_ptr, func, client_data);
+ ret_value = H5E_set_auto(estack_ptr, func, client_data);
done:
FUNC_LEAVE_API(ret_value);
@@ -2339,7 +2108,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5E_set_auto_new
+ * Function: H5E_set_auto
*
* Purpose: Private function to turn on or off automatic printing of
* errors for certain error stack. When turned on (non-null
@@ -2366,11 +2135,12 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5E_set_auto_new(H5E_t_new *estack, H5E_auto_t func, void *client_data)
+H5E_set_auto(H5E_t *estack, H5E_auto_t func, void *client_data)
{
herr_t ret_value=SUCCEED; /* Return value */
+ H5E_t *tmp;
- FUNC_ENTER_NOAPI(H5E_set_auto_new, FAIL);
+ FUNC_ENTER_NOAPI(H5E_set_auto, FAIL);
assert(estack);
@@ -2380,534 +2150,3 @@ H5E_set_auto_new(H5E_t_new *estack, H5E_auto_t func, void *client_data)
done:
FUNC_LEAVE_NOAPI(ret_value);
}
-
-#endif /* NEW_ERR */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Eset_auto
- *
- * Purpose: Turns on or off automatic printing of errors. When turned on
- * (non-null FUNC pointer) any API function which returns an
- * error indication will first call FUNC passing it CLIENT_DATA
- * as an argument.
- *
- * The default values before this function is called are
- * H5Eprint() with client data being the standard error stream,
- * stderr.
- *
- * Automatic stack traversal is always in the H5E_WALK_DOWNWARD
- * direction.
- *
- * See Also: H5Ewalk()
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, February 27, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Eset_auto(H5E_auto_t func, void *client_data)
-{
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_API(H5Eset_auto, FAIL);
- H5TRACE2("e","xx",func,client_data);
-
- H5E_auto_g = func;
- H5E_auto_data_g = client_data;
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Eget_auto
- *
- * Purpose: Returns the current settings for the automatic error stack
- * traversal function and its data. Either (or both) arguments
- * may be null in which case the value is not returned.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Saturday, February 28, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Eget_auto(H5E_auto_t *func, void **client_data)
-{
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_API(H5Eget_auto, FAIL);
- H5TRACE2("e","*x*x",func,client_data);
-
- if (func) *func = H5E_auto_g;
- if (client_data) *client_data = H5E_auto_data_g;
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Eclear
- *
- * Purpose: Clears the error stack for the current thread.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, February 27, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Eclear(void)
-{
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_API(H5Eclear, FAIL);
- H5TRACE0("e","");
- /* FUNC_ENTER() does all the work */
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Eprint
- *
- * Purpose: Prints the error stack in some default way. This is just a
- * convenience function for H5Ewalk() with a function that
- * prints error messages. Users are encouraged to write there
- * own more specific error handlers.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, February 27, 1998
- *
- * Modifications:
- * Albert Cheng, 2000/12/02
- * Show MPI process rank id if applicable.
- * Albert Cheng, 2001/07/14
- * Show HDF5 library version information string too.
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Eprint(FILE *stream)
-{
- H5E_t *estack = H5E_get_my_stack ();
- herr_t ret_value = FAIL;
-
- /* Don't clear the error stack! :-) */
- FUNC_ENTER_API_NOCLEAR(H5Eprint, FAIL);
- /*NO TRACE*/
-
- if (!stream) stream = stderr;
- fprintf (stream, "HDF5-DIAG: Error detected in %s ", H5_lib_vers_info_g);
- /* try show the process or thread id in multiple processes cases*/
-#ifdef H5_HAVE_PARALLEL
- { int mpi_rank, mpi_initialized;
- MPI_Initialized(&mpi_initialized);
- if (mpi_initialized){
- MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank);
- fprintf (stream, "MPI-process %d.", mpi_rank);
- }else
- fprintf (stream, "thread 0.");
- }
-#elif defined(H5_HAVE_THREADSAFE)
- fprintf (stream, "thread %d.", (int)pthread_self());
-#else
- fprintf (stream, "thread 0.");
-#endif
- if (estack && estack->nused>0) fprintf (stream, " Back trace follows.");
- HDfputc ('\n', stream);
-
- ret_value = H5E_walk (H5E_WALK_DOWNWARD, H5E_walk_cb, (void*)stream);
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Ewalk
- *
- * Purpose: Walks the error stack for the current thread and calls some
- * function for each error along the way.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, February 27, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Ewalk(H5E_direction_t direction, H5E_walk_t func, void *client_data)
-{
- herr_t ret_value;
-
- /* Don't clear the error stack! :-) */
- FUNC_ENTER_API_NOCLEAR(H5Ewalk, FAIL);
- H5TRACE3("e","Edxx",direction,func,client_data);
-
- ret_value = H5E_walk (direction, func, client_data);
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5E_walk_cb
- *
- * Purpose: This is a default error stack traversal callback function
- * that prints error messages to the specified output stream.
- * It is not meant to be called directly but rather as an
- * argument to the H5Ewalk() function. This function is called
- * also by H5Eprint(). Application writers are encouraged to
- * use this function as a model for their own error stack
- * walking functions.
- *
- * N is a counter for how many times this function has been
- * called for this particular traversal of the stack. It always
- * begins at zero for the first error on the stack (either the
- * top or bottom error, or even both, depending on the traversal
- * direction and the size of the stack).
- *
- * ERR_DESC is an error description. It contains all the
- * information about a particular error.
- *
- * CLIENT_DATA is the same pointer that was passed as the
- * CLIENT_DATA argument of H5Ewalk(). It is expected to be a
- * file pointer (or stderr if null).
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, December 12, 1997
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5E_walk_cb(int n, H5E_error_t *err_desc, void *client_data)
-{
- FILE *stream = (FILE *)client_data;
- const char *maj_str = NULL;
- const char *min_str = NULL;
- const int indent = 2;
-
- FUNC_ENTER_NOINIT(H5E_walk_cb);
- /*NO TRACE*/
-
- /* Check arguments */
- assert (err_desc);
- if (!client_data) client_data = stderr;
-
- /* Get descriptions for the major and minor error numbers */
- maj_str = H5Eget_major (err_desc->maj_num);
- min_str = H5Eget_minor (err_desc->min_num);
-
- /* Print error message */
- fprintf (stream, "%*s#%03d: %s line %u in %s(): %s\n",
- indent, "", n, err_desc->file_name, err_desc->line,
- err_desc->func_name, err_desc->desc);
- fprintf (stream, "%*smajor(%02d): %s\n",
- indent*2, "", err_desc->maj_num, maj_str);
- fprintf (stream, "%*sminor(%02d): %s\n",
- indent*2, "", err_desc->min_num, min_str);
-
- FUNC_LEAVE_NOAPI(SUCCEED);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Eget_major
- *
- * Purpose: Given a major error number return a constant character string
- * that describes the error.
- *
- * Return: Success: Ptr to a character string.
- *
- * Failure: Ptr to "Invalid major error number"
- *
- * Programmer: Robb Matzke
- * Friday, February 27, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-const char *
-H5Eget_major (H5E_major_t n)
-{
- unsigned i;
- const char *ret_value="Invalid major error number";
-
- /*
- * WARNING: Do not call the FUNC_ENTER() or FUNC_LEAVE() macros since
- * they might interact badly with the error stack. We are
- * probably calling this function during an error stack
- * traversal and adding/removing entries as the result of an
- * error would most likely mess things up.
- */
- FUNC_ENTER_API_NOINIT(H5Eget_major);
-
- for (i=0; i<NELMTS (H5E_major_mesg_g); i++) {
- if (H5E_major_mesg_g[i].error_code==n)
- HGOTO_DONE(H5E_major_mesg_g[i].str);
- }
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Eget_minor
- *
- * Purpose: Given a minor error number return a constant character string
- * that describes the error.
- *
- * Return: Success: Ptr to a character string.
- *
- * Failure: Ptr to "Invalid minor error number"
- *
- * Programmer: Robb Matzke
- * Friday, February 27, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-const char *
-H5Eget_minor (H5E_minor_t n)
-{
- unsigned i;
- const char *ret_value="Invalid minor error number";
-
- /*
- * WARNING: Do not call the FUNC_ENTER() or FUNC_LEAVE() macros since
- * they might interact badly with the error stack. We are
- * probably calling this function during an error stack
- * traversal and adding/removing entries as the result of an
- * error would most likely mess things up.
- */
- FUNC_ENTER_API_NOINIT(H5Eget_minor);
-
- for (i=0; i<NELMTS (H5E_minor_mesg_g); i++) {
- if (H5E_minor_mesg_g[i].error_code==n)
- HGOTO_DONE(H5E_minor_mesg_g[i].str);
- }
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5E_push
- *
- * Purpose: Pushes a new error record onto error stack for the current
- * thread. The error has major and minor numbers MAJ_NUM and
- * MIN_NUM, the name of a function where the error was detected,
- * the name of the file where the error was detected, the
- * line within that file, and an error description string. The
- * function name, file name, and error description strings must
- * be statically allocated (the FUNC_ENTER() macro takes care of
- * the function name and file name automatically, but the
- * programmer is responsible for the description string).
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, December 12, 1997
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5E_push(H5E_major_t maj_num, H5E_minor_t min_num, const char *function_name,
- const char *file_name, unsigned line, const char *desc)
-{
- H5E_t *estack = H5E_get_my_stack ();
-
- /*
- * WARNING: We cannot call HERROR() from within this function or else we
- * could enter infinite recursion. Furthermore, we also cannot
- * call any other HDF5 macro or function which might call
- * HERROR(). HERROR() is called by HRETURN_ERROR() which could
- * be called by FUNC_ENTER().
- */
- FUNC_ENTER_NOINIT(H5E_push);
-
- /*
- * Don't fail if arguments are bad. Instead, substitute some default
- * value.
- */
- if (!function_name) function_name = "Unknown_Function";
- if (!file_name) file_name = "Unknown_File";
- if (!desc) desc = "No description given";
-
- /*
- * Push the error if there's room. Otherwise just forget it.
- */
- assert (estack);
- if (estack->nused<H5E_NSLOTS) {
- estack->slot[estack->nused].maj_num = maj_num;
- estack->slot[estack->nused].min_num = min_num;
- estack->slot[estack->nused].func_name = function_name;
- estack->slot[estack->nused].file_name = file_name;
- estack->slot[estack->nused].line = line;
- estack->slot[estack->nused].desc = desc;
- estack->nused++;
- }
-
- FUNC_LEAVE_NOAPI(SUCCEED);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Epush
- *
- * Purpose: Pushes a new error record onto error stack for the current
- * thread. The error has major and minor numbers MAJ_NUM and
- * MIN_NUM, the name of a function where the error was detected,
- * the name of the file where the error was detected, the
- * line within that file, and an error description string. The
- * function name, file name, and error description strings must
- * be statically allocated.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Quincey Koziol
- * Monday, October 18, 1999
- *
- * Notes: Basically a public API wrapper around the H5E_push function.
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Epush(const char *file, const char *func, unsigned line, H5E_major_t maj,
- H5E_minor_t min, const char *str)
-{
- herr_t ret_value;
-
- FUNC_ENTER_API(H5Epush, FAIL);
- H5TRACE6("e","ssIuEjEns",file,func,line,maj,min,str);
-
- ret_value = H5E_push(maj, min, func, file, line, str);
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5E_clear
- *
- * Purpose: Clears the error stack for the current thread.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, February 27, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5E_clear(void)
-{
- H5E_t *estack = H5E_get_my_stack ();
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5E_clear, FAIL);
-
- if (estack) estack->nused = 0;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5E_walk
- *
- * Purpose: Walks the error stack, calling the specified function for
- * each error on the stack. The DIRECTION argument determines
- * whether the stack is walked from the inside out or the
- * outside in. The value H5E_WALK_UPWARD means begin with the
- * most specific error and end at the API; H5E_WALK_DOWNWARD
- * means to start at the API and end at the inner-most function
- * where the error was first detected.
- *
- * The function pointed to by FUNC will be called for each error
- * in the error stack. It's arguments will include an index
- * number (beginning at zero regardless of stack traversal
- * direction), an error stack entry, and the CLIENT_DATA pointer
- * passed to H5E_print.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, December 12, 1997
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5E_walk (H5E_direction_t direction, H5E_walk_t func, void *client_data)
-{
- H5E_t *estack = H5E_get_my_stack ();
- int i;
- herr_t status;
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5E_walk, FAIL);
-
- /* check args, but rather than failing use some default value */
- if (direction!=H5E_WALK_UPWARD && direction!=H5E_WALK_DOWNWARD) {
- direction = H5E_WALK_UPWARD;
- }
-
- /* walk the stack */
- assert (estack);
- if (func && H5E_WALK_UPWARD==direction) {
- for (i=0, status=SUCCEED; i<estack->nused && status>=0; i++) {
- status = (func)(i, estack->slot+i, client_data);
- }
- } else if (func && H5E_WALK_DOWNWARD==direction) {
- for (i=estack->nused-1, status=SUCCEED; i>=0 && status>=0; --i) {
- status = (func)(estack->nused-(i+1), estack->slot+i, client_data);
- }
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
diff --git a/src/H5Eprivate.h b/src/H5Eprivate.h
index 7582364..5f37998 100644
--- a/src/H5Eprivate.h
+++ b/src/H5Eprivate.h
@@ -24,225 +24,222 @@
#include "H5private.h"
#define H5E_NSLOTS 32 /*number of slots in an error stack */
-
-#ifndef NEW_ERR
-
#define H5E_RESERVED_ATOMS 0
+/* Error class */
typedef struct H5E_cls_t {
char *cls_name;
char *lib_name;
char *lib_vers;
} H5E_cls_t;
+/* Major or minor message */
typedef struct H5E_msg_t {
char *msg;
H5E_type_t type;
H5E_cls_t *cls;
} H5E_msg_t;
+/* Error stack */
+typedef struct H5E_t {
+ int nused; /*num slots currently used in stack */
+ H5E_error_t slot[32]; /*array of error records */
+ H5E_auto_t func;
+ void *auto_data;
+} H5E_t;
+
/* Printing information */
typedef struct H5E_print_t {
FILE *stream;
H5E_cls_t cls;
} H5E_print_t;
-/*H5_DLLVAR herr_t (*H5E_auto_g_new)(hid_t estack, void *client_data);
-H5_DLLVAR void *H5E_auto_data_g_new;
-*/
-
-/* An error stack */
-typedef struct H5E_t_new {
- int nused; /*num slots currently used in stack */
- H5E_error_t_new slot[H5E_NSLOTS]; /*array of error records */
- H5E_auto_t func;
- void *auto_data;
-} H5E_t_new;
-
/* HDF5 error class */
#define H5E_CLS_NAME "HDF5"
#define H5E_CLS_LIB_NAME "HDF5"
#define H5E_CLS_LIB_VERS "" /* How to find out version number? */
/* HDF5 error class: major errors */
-#define H5E_NONE_MAJOR_MSG_new "No error"
-#define H5E_MAJ_ARGS_MSG_new "Function arguments"
-#define H5E_MAJ_RESOURCE_MSG_new "Resource unavailable"
-#define H5E_MAJ_INTERNAL_MSG_new "Internal HDF5 error"
-#define H5E_MAJ_FILE_MSG_new "File interface"
-#define H5E_MAJ_IO_MSG_new "Low-level I/O layer"
-#define H5E_MAJ_FUNC_MSG_new "Function entry/exit"
-#define H5E_MAJ_ATOM_MSG_new "Atom layer"
-#define H5E_MAJ_CACHE_MSG_new "Meta data cache layer"
-#define H5E_MAJ_BTREE_MSG_new "B-tree layer"
-#define H5E_MAJ_SYM_MSG_new "Symbol table layer"
-#define H5E_MAJ_HEAP_MSG_new "Heap layer"
-#define H5E_MAJ_OHDR_MSG_new "Object header layer"
-#define H5E_MAJ_DATATYPE_MSG_new "Datatype interface"
-#define H5E_MAJ_DATASPACE_MSG_new "Dataspace interface"
-#define H5E_MAJ_DATASET_MSG_new "Dataset interface"
-#define H5E_MAJ_STORAGE_MSG_new "Data storage layer"
-#define H5E_MAJ_PLIST_MSG_new "Property list interface"
-#define H5E_MAJ_ATTR_MSG_new "Attribute layer"
-#define H5E_MAJ_PLINE_MSG_new "Data filters layer"
-#define H5E_MAJ_EFL_MSG_new "External file list"
-#define H5E_MAJ_REFERENCE_MSG_new "References layer"
-#define H5E_MAJ_VFL_MSG_new "Virtual File Layer"
-#define H5E_MAJ_TBBT_MSG_new "Threaded, Balanced, Binary Trees"
-#define H5E_MAJ_FPHDF5_MSG_new "Flexible Parallel HDF5"
-#define H5E_MAJ_TST_MSG_new "Ternary Search Trees"
-#define H5E_MAJ_RS_MSG_new "Reference Counted Strings"
-#define H5E_MAJ_ERROR_MSG_new "Error API"
+#define H5E_NONE_MAJOR_MSG "No error"
+#define H5E_MAJ_ARGS_MSG "Function arguments"
+#define H5E_MAJ_RESOURCE_MSG "Resource unavailable"
+#define H5E_MAJ_INTERNAL_MSG "Internal HDF5 error"
+#define H5E_MAJ_FILE_MSG "File interface"
+#define H5E_MAJ_IO_MSG "Low-level I/O layer"
+#define H5E_MAJ_FUNC_MSG "Function entry/exit"
+#define H5E_MAJ_ATOM_MSG "Atom layer"
+#define H5E_MAJ_CACHE_MSG "Meta data cache layer"
+#define H5E_MAJ_BTREE_MSG "B-tree layer"
+#define H5E_MAJ_SYM_MSG "Symbol table layer"
+#define H5E_MAJ_HEAP_MSG "Heap layer"
+#define H5E_MAJ_OHDR_MSG "Object header layer"
+#define H5E_MAJ_DATATYPE_MSG "Datatype interface"
+#define H5E_MAJ_DATASPACE_MSG "Dataspace interface"
+#define H5E_MAJ_DATASET_MSG "Dataset interface"
+#define H5E_MAJ_STORAGE_MSG "Data storage layer"
+#define H5E_MAJ_PLIST_MSG "Property list interface"
+#define H5E_MAJ_ATTR_MSG "Attribute layer"
+#define H5E_MAJ_PLINE_MSG "Data filters layer"
+#define H5E_MAJ_EFL_MSG "External file list"
+#define H5E_MAJ_REFERENCE_MSG "References layer"
+#define H5E_MAJ_VFL_MSG "Virtual File Layer"
+#define H5E_MAJ_TBBT_MSG "Threaded, Balanced, Binary Trees"
+#define H5E_MAJ_FPHDF5_MSG "Flexible Parallel HDF5"
+#define H5E_MAJ_TST_MSG "Ternary Search Trees"
+#define H5E_MAJ_RS_MSG "Reference Counted Strings"
+#define H5E_MAJ_ERROR_MSG "Error API"
/* HDF5 error class: minor errors */
/* Argument errors */
-#define H5E_NONE_MINOR_MSG_new "No error"
-#define H5E_MIN_UNINITIALIZED_MSG_new "Information is uninitialized"
-#define H5E_MIN_UNSUPPORTED_MSG_new "Feature is unsupported"
-#define H5E_MIN_BADTYPE_MSG_new "Inappropriate type"
-#define H5E_MIN_BADRANGE_MSG_new "Out of range"
-#define H5E_MIN_BADVALUE_MSG_new "Bad value"
+#define H5E_NONE_MINOR_MSG "No error"
+#define H5E_MIN_UNINITIALIZED_MSG "Information is uninitialized"
+#define H5E_MIN_UNSUPPORTED_MSG "Feature is unsupported"
+#define H5E_MIN_BADTYPE_MSG "Inappropriate type"
+#define H5E_MIN_BADRANGE_MSG "Out of range"
+#define H5E_MIN_BADVALUE_MSG "Bad value"
/* Resource errors */
-#define H5E_MIN_NOSPACE_MSG_new "No space available for allocation"
-#define H5E_MIN_CANTCOPY_MSG_new "Unable to copy object"
-#define H5E_MIN_CANTFREE_MSG_new "Unable to free object"
-#define H5E_MIN_ALREADYEXISTS_MSG_new "Object already exists"
-#define H5E_MIN_CANTLOCK_MSG_new "Unable to lock object"
-#define H5E_MIN_CANTUNLOCK_MSG_new "Unable to unlock object"
-#define H5E_MIN_CANTGC_MSG_new "Unable to garbage collect"
+#define H5E_MIN_NOSPACE_MSG "No space available for allocation"
+#define H5E_MIN_CANTCOPY_MSG "Unable to copy object"
+#define H5E_MIN_CANTFREE_MSG "Unable to free object"
+#define H5E_MIN_ALREADYEXISTS_MSG "Object already exists"
+#define H5E_MIN_CANTLOCK_MSG "Unable to lock object"
+#define H5E_MIN_CANTUNLOCK_MSG "Unable to unlock object"
+#define H5E_MIN_CANTGC_MSG "Unable to garbage collect"
/* File accessability errors */
-#define H5E_MIN_FILEEXISTS_MSG_new "File already exists"
-#define H5E_MIN_FILEOPEN_MSG_new "File already open"
-#define H5E_MIN_CANTCREATE_MSG_new "Unable to create file"
-#define H5E_MIN_CANTOPENFILE_MSG_new "Unable to open file"
-#define H5E_MIN_CANTCLOSEFILE_MSG_new "Unable to close file"
-#define H5E_MIN_NOTHDF5_MSG_new "Not an HDF5 file"
-#define H5E_MIN_BADFILE_MSG_new "Bad file ID accessed"
-#define H5E_MIN_TRUNCATED_MSG_new "File has been truncated"
-#define H5E_MIN_MOUNT_MSG_new "File mount error"
+#define H5E_MIN_FILEEXISTS_MSG "File already exists"
+#define H5E_MIN_FILEOPEN_MSG "File already open"
+#define H5E_MIN_CANTCREATE_MSG "Unable to create file"
+#define H5E_MIN_CANTOPENFILE_MSG "Unable to open file"
+#define H5E_MIN_CANTCLOSEFILE_MSG "Unable to close file"
+#define H5E_MIN_NOTHDF5_MSG "Not an HDF5 file"
+#define H5E_MIN_BADFILE_MSG "Bad file ID accessed"
+#define H5E_MIN_TRUNCATED_MSG "File has been truncated"
+#define H5E_MIN_MOUNT_MSG "File mount error"
/* Generic low-level file I/O errors */
-#define H5E_MIN_SEEKERROR_MSG_new "Seek failed"
-#define H5E_MIN_READERROR_MSG_new "Read failed"
-#define H5E_MIN_WRITEERROR_MSG_new "Write failed"
-#define H5E_MIN_CLOSEERROR_MSG_new "Close failed"
-#define H5E_MIN_OVERFLOW_MSG_new "Address overflowed"
-#define H5E_MIN_FCNTL_MSG_new "File control (fcntl) failed"
+#define H5E_MIN_SEEKERROR_MSG "Seek failed"
+#define H5E_MIN_READERROR_MSG "Read failed"
+#define H5E_MIN_WRITEERROR_MSG "Write failed"
+#define H5E_MIN_CLOSEERROR_MSG "Close failed"
+#define H5E_MIN_OVERFLOW_MSG "Address overflowed"
+#define H5E_MIN_FCNTL_MSG "File control (fcntl) failed"
/* Function entry/exit interface errors */
-#define H5E_MIN_CANTINIT_MSG_new "Unable to initialize object"
-#define H5E_MIN_ALREADYINIT_MSG_new "Object already initialized"
-#define H5E_MIN_CANTRELEASE_MSG_new "Unable to release object"
+#define H5E_MIN_CANTINIT_MSG "Unable to initialize object"
+#define H5E_MIN_ALREADYINIT_MSG "Object already initialized"
+#define H5E_MIN_CANTRELEASE_MSG "Unable to release object"
/* Object atom related errors */
-#define H5E_MIN_BADATOM_MSG_new "Unable to find atom information (already closed?)"
-#define H5E_MIN_BADGROUP_MSG_new "Unable to find ID group information"
-#define H5E_MIN_CANTREGISTER_MSG_new "Unable to register new atom"
-#define H5E_MIN_CANTINC_MSG_new "Unable to increment reference count"
-#define H5E_MIN_CANTDEC_MSG_new "Unable to decrement reference count"
-#define H5E_MIN_NOIDS_MSG_new "Out of IDs for group"
+#define H5E_MIN_BADATOM_MSG "Unable to find atom information (already closed?)"
+#define H5E_MIN_BADGROUP_MSG "Unable to find ID group information"
+#define H5E_MIN_CANTREGISTER_MSG "Unable to register new atom"
+#define H5E_MIN_CANTINC_MSG "Unable to increment reference count"
+#define H5E_MIN_CANTDEC_MSG "Unable to decrement reference count"
+#define H5E_MIN_NOIDS_MSG "Out of IDs for group"
/* Cache related errors */
-#define H5E_MIN_CANTFLUSH_MSG_new "Unable to flush data from cache"
-#define H5E_MIN_CANTLOAD_MSG_new "Unable to load meta data into cache"
-#define H5E_MIN_PROTECT_MSG_new "Protected meta data error"
-#define H5E_MIN_NOTCACHED_MSG_new "Meta data not currently cached"
+#define H5E_MIN_CANTFLUSH_MSG "Unable to flush data from cache"
+#define H5E_MIN_CANTLOAD_MSG "Unable to load meta data into cache"
+#define H5E_MIN_PROTECT_MSG "Protected meta data error"
+#define H5E_MIN_NOTCACHED_MSG "Meta data not currently cached"
/* B-tree related errors */
-#define H5E_MIN_NOTFOUND_MSG_new "Object not found"
-#define H5E_MIN_EXISTS_MSG_new "Object already exists"
-#define H5E_MIN_CANTENCODE_MSG_new "Unable to encode value"
-#define H5E_MIN_CANTDECODE_MSG_new "Unable to decode value"
-#define H5E_MIN_CANTSPLIT_MSG_new "Unable to split node"
-#define H5E_MIN_CANTINSERT_MSG_new "Unable to insert object"
-#define H5E_MIN_CANTLIST_MSG_new "Unable to list node"
+#define H5E_MIN_NOTFOUND_MSG "Object not found"
+#define H5E_MIN_EXISTS_MSG "Object already exists"
+#define H5E_MIN_CANTENCODE_MSG "Unable to encode value"
+#define H5E_MIN_CANTDECODE_MSG "Unable to decode value"
+#define H5E_MIN_CANTSPLIT_MSG "Unable to split node"
+#define H5E_MIN_CANTINSERT_MSG "Unable to insert object"
+#define H5E_MIN_CANTLIST_MSG "Unable to list node"
/* Object header related errors */
-#define H5E_MIN_LINKCOUNT_MSG_new "Bad object header link count"
-#define H5E_MIN_VERSION_MSG_new "Wrong version number"
-#define H5E_MIN_ALIGNMENT_MSG_new "Alignment error"
-#define H5E_MIN_BADMESG_MSG_new "Unrecognized message"
-#define H5E_MIN_CANTDELETE_MSG_new "Can't delete message"
+#define H5E_MIN_LINKCOUNT_MSG "Bad object header link count"
+#define H5E_MIN_VERSION_MSG "Wrong version number"
+#define H5E_MIN_ALIGNMENT_MSG "Alignment error"
+#define H5E_MIN_BADMESG_MSG "Unrecognized message"
+#define H5E_MIN_CANTDELETE_MSG "Can't delete message"
/* Group related errors */
-#define H5E_MIN_CANTOPENOBJ_MSG_new "Can't open object"
-#define H5E_MIN_COMPLEN_MSG_new "Name component is too long"
-#define H5E_MIN_CWG_MSG_new "Problem with current working group"
-#define H5E_MIN_LINK_MSG_new "Link count failure"
-#define H5E_MIN_SLINK_MSG_new "Symbolic link error"
+#define H5E_MIN_CANTOPENOBJ_MSG "Can't open object"
+#define H5E_MIN_COMPLEN_MSG "Name component is too long"
+#define H5E_MIN_CWG_MSG "Problem with current working group"
+#define H5E_MIN_LINK_MSG "Link count failure"
+#define H5E_MIN_SLINK_MSG "Symbolic link error"
/* Datatype conversion errors */
-#define H5E_MIN_CANTCONVERT_MSG_new "Can't convert datatypes"
-#define H5E_MIN_BADSIZE_MSG_new "Bad size for object"
+#define H5E_MIN_CANTCONVERT_MSG "Can't convert datatypes"
+#define H5E_MIN_BADSIZE_MSG "Bad size for object"
/* Dataspace errors */
-#define H5E_MIN_CANTCLIP_MSG_new "Can't clip hyperslab region"
-#define H5E_MIN_CANTCOUNT_MSG_new "Can't count elements"
-#define H5E_MIN_CANTSELECT_MSG_new "Can't select hyperslab"
-#define H5E_MIN_CANTNEXT_MSG_new "Can't move to next iterator location"
-#define H5E_MIN_BADSELECT_MSG_new "Invalid selection"
-#define H5E_MIN_CANTCOMPARE_MSG_new "Can't compare objects"
+#define H5E_MIN_CANTCLIP_MSG "Can't clip hyperslab region"
+#define H5E_MIN_CANTCOUNT_MSG "Can't count elements"
+#define H5E_MIN_CANTSELECT_MSG "Can't select hyperslab"
+#define H5E_MIN_CANTNEXT_MSG "Can't move to next iterator location"
+#define H5E_MIN_BADSELECT_MSG "Invalid selection"
+#define H5E_MIN_CANTCOMPARE_MSG "Can't compare objects"
/* Property list errors */
-#define H5E_MIN_CANTGET_MSG_new "Can't get value"
-#define H5E_MIN_CANTSET_MSG_new "Can't set value"
-#define H5E_MIN_DUPCLASS_MSG_new "Duplicate class name in parent class"
+#define H5E_MIN_CANTGET_MSG "Can't get value"
+#define H5E_MIN_CANTSET_MSG "Can't set value"
+#define H5E_MIN_DUPCLASS_MSG "Duplicate class name in parent class"
/* Parallel MPI errors */
-#define H5E_MIN_MPI_MSG_new "Some MPI function failed"
-#define H5E_MIN_MPIERRSTR_MSG_new "MPI Error String"
+#define H5E_MIN_MPI_MSG "Some MPI function failed"
+#define H5E_MIN_MPIERRSTR_MSG "MPI Error String"
/* FPHDF5 errors */
-#define H5E_MIN_CANTMAKETREE_MSG_new "Can't create a binary tree node"
-#define H5E_MIN_CANTRECV_MSG_new "Can't receive messages from processes"
-#define H5E_MIN_CANTSENDMDATA_MSG_new "Can't send metadata message"
-#define H5E_MIN_CANTCHANGE_MSG_new "Can't register change with server"
-#define H5E_MIN_CANTALLOC_MSG_new "Can't allocate from file"
+#define H5E_MIN_CANTMAKETREE_MSG "Can't create a binary tree node"
+#define H5E_MIN_CANTRECV_MSG "Can't receive messages from processes"
+#define H5E_MIN_CANTSENDMDATA_MSG "Can't send metadata message"
+#define H5E_MIN_CANTCHANGE_MSG "Can't register change with server"
+#define H5E_MIN_CANTALLOC_MSG "Can't allocate from file"
/* I/O pipeline errors */
-#define H5E_MIN_NOFILTER_MSG_new "Requested filter is not available"
-#define H5E_MIN_CALLBACK_MSG_new "Callback failed"
-#define H5E_MIN_CANAPPLY_MSG_new "Error from filter \"can apply\" callback"
-#define H5E_MIN_SETLOCAL_MSG_new "Error from filter \"set local\" callback"
-#endif /* NEW_ERR */
+#define H5E_MIN_NOFILTER_MSG "Requested filter is not available"
+#define H5E_MIN_CALLBACK_MSG "Callback failed"
+#define H5E_MIN_CANAPPLY_MSG "Error from filter \"can apply\" callback"
+#define H5E_MIN_SETLOCAL_MSG "Error from filter \"set local\" callback"
+
+#ifdef H5_HAVE_THREADSAFE
+/*
+ * The per-thread error stack. pthread_once() initializes a special
+ * key that will be used by all threads to create a stack specific to
+ * each thread individually. The association of stacks to threads will
+ * be handled by the pthread library.
+ *
+ * In order for this macro to work, H5E_get_my_stack() must be preceeded
+ * by "H5E_t *estack =".
+ */
+H5E_t * H5E_get_stack(void);
+#define H5E_get_my_stack() H5E_get_stack()
+#else /* H5_HAVE_THREADSAFE */
+/*
+ * The current error stack. Eventually we'll have some sort of global table
+ * so each thread has it's own stack. The stacks will be created on demand
+ * when the thread first calls H5E_push(). */
+H5_DLLVAR H5E_t H5E_stack_g[1];
+#define H5E_get_my_stack() (H5E_stack_g+0)
+#endif /* H5_HAVE_THREADSAFE */
/*
* HERROR macro, used to facilitate error reporting between a FUNC_ENTER()
* and a FUNC_LEAVE() within a function body. The arguments are the major
* error number, the minor error number, and a description of the error.
*/
-#ifdef NEW_ERR
-#define HERROR(maj_id, min_id, str) { \
- H5E_msg_t *maj_ptr, *min_ptr; \
- hid_t cls_id; \
- maj_ptr = H5I_object_verify(maj_id, H5I_ERROR_MSG); \
- min_ptr = H5I_object_verify(min_id, H5I_ERROR_MSG); \
- /*check error: cls of maj and min should be same*/ \
- cls_id = H5I_register(H5I_ERROR_CLASS, maj_ptr->cls); \
- H5E_push_new(H5E_DEFAULT, __FILE__, FUNC, __LINE__, cls_id, maj_id, min_id, str); \
-}
-#else
-#define HERROR(maj, min, str) H5E_push(maj, min, FUNC, __FILE__, __LINE__, str)
-#endif /* NEW_ERR */
+#define HERROR(maj_id, min_id, str) H5E_push(H5E_get_my_stack(), __FILE__, FUNC, __LINE__, H5E_ERR_CLS_g, maj_id, min_id, str)
/*
* HCOMMON_ERROR macro, used by HDONE_ERROR and HGOTO_ERROR
* (Shouldn't need to be used outside this header file)
*/
-#ifdef NEW_ERR
#define HCOMMON_ERROR(maj, min, str) \
- H5E_t_new *estack = H5E_get_my_stack_new(); \
- HERROR (maj, min, str); \
- if (H5_IS_API(FUNC) && estack->auto_data) \
+ H5E_t *estack = H5E_get_my_stack(); \
+ HERROR(maj, min, str); \
+ /*fprintf(stderr, "HCOMMON_ERROR: estack->func=%p\n", estack->func);*/ \
+ if (H5_IS_API(FUNC) && estack->auto_data) \
(void)((estack->func)(H5E_DEFAULT, estack->auto_data))
-#else
-#define HCOMMON_ERROR(maj, min, str) \
- HERROR (maj, min, str); \
- if (H5_IS_API(FUNC) && H5E_auto_g) \
- (void)((H5E_auto_g)(H5E_auto_data_g))
-#endif /* NEW_ERR */
/*
* HDONE_ERROR macro, used to facilitate error reporting between a
@@ -276,63 +273,26 @@ typedef struct H5E_t_new {
*/
#define HGOTO_DONE(ret_val) {ret_value = ret_val; goto done;}
-/*
- * The list of error messages in the system is kept as an array of
- * error_code/message pairs, one for major error numbers and another for
- * minor error numbers.
- */
-typedef struct H5E_major_mesg_t {
- H5E_major_t error_code;
- const char *str;
-} H5E_major_mesg_t;
-
-typedef struct H5E_minor_mesg_t {
- H5E_minor_t error_code;
- const char *str;
-} H5E_minor_mesg_t;
-
-/* An error stack */
-typedef struct H5E_t {
- int nused; /*num slots currently used in stack */
- H5E_error_t slot[H5E_NSLOTS]; /*array of error records */
-} H5E_t;
-
-H5_DLLVAR const hbool_t H5E_clearable_g;/*safe to call H5E_clear() on enter?*/
-H5_DLLVAR herr_t (*H5E_auto_g)(void *client_data);
-H5_DLLVAR void *H5E_auto_data_g;
-
-H5_DLL herr_t H5E_push (H5E_major_t maj_num, H5E_minor_t min_num,
- const char *func_name, const char *file_name,
- unsigned line, const char *desc);
-H5_DLL herr_t H5E_clear (void);
-H5_DLL herr_t H5E_walk (H5E_direction_t dir, H5E_walk_t func,
- void *client_data);
-
-#ifndef NEW_ERR
-/* New error API */
-H5E_t_new * H5E_get_stack_new(void);
H5_DLL hid_t H5E_register_class(const char *cls_name, const char *lib_name,
const char *version);
H5_DLL herr_t H5E_unregister_class(H5E_cls_t *cls);
H5_DLL herr_t H5E_close_msg(H5E_msg_t *err);
H5_DLL hid_t H5E_create_msg(hid_t cls_id, H5E_type_t msg_type, const char *msg);
H5_DLL hid_t H5E_get_current_stack(void);
-H5_DLL herr_t H5E_close_stack(H5E_t_new *err_stack);
+H5_DLL herr_t H5E_close_stack(H5E_t *err_stack);
H5_DLL ssize_t H5E_get_class_name(H5E_cls_t *cls, char *name, size_t size);
H5_DLL ssize_t H5E_get_msg(H5E_msg_t *msg_ptr, H5E_type_t *type, char *msg, size_t size);
-H5_DLL int H5E_get_num(H5E_t_new *err_stack);
-H5_DLL herr_t H5E_set_current_stack(H5E_t_new *estack);
-H5_DLL herr_t H5E_push_new(H5E_t_new *estack, const char *file, const char *func, unsigned line,
+H5_DLL int H5E_get_num(H5E_t *err_stack);
+H5_DLL herr_t H5E_set_current_stack(H5E_t *estack);
+H5_DLL herr_t H5E_push(H5E_t *estack, const char *file, const char *func, unsigned line,
hid_t cls_id, hid_t maj_id, hid_t min_id, const char *desc);
-H5_DLL herr_t H5E_pop(H5E_t_new *err_stack, size_t count);
-H5_DLL herr_t H5E_clear_new(H5E_t_new *estack);
-H5_DLL herr_t H5E_print_new(H5E_t_new *estack, FILE *stream);
-H5_DLL herr_t H5E_walk_new (H5E_t_new *estack, H5E_direction_t direction, H5E_walk_t_new func,
+H5_DLL herr_t H5E_pop(H5E_t *err_stack, size_t count);
+H5_DLL herr_t H5E_clear(H5E_t *estack);
+H5_DLL herr_t H5E_print(H5E_t *estack, FILE *stream);
+H5_DLL herr_t H5E_walk (H5E_t *estack, H5E_direction_t direction, H5E_walk_t func,
void *client_data);
-H5_DLL herr_t H5E_get_auto_new(H5E_t_new *estack, H5E_auto_t *func, void **client_data);
-H5_DLL herr_t H5E_set_auto_new(H5E_t_new *estack, H5E_auto_t func, void *client_data);
-
-#endif /* NEW_ERR */
+H5_DLL herr_t H5E_get_auto(H5E_t *estack, H5E_auto_t *func, void **client_data);
+H5_DLL herr_t H5E_set_auto(H5E_t *estack, H5E_auto_t func, void *client_data);
#ifdef H5_HAVE_PARALLEL
/*
diff --git a/src/H5Epublic.h b/src/H5Epublic.h
index 1eee9bc..f777921 100644
--- a/src/H5Epublic.h
+++ b/src/H5Epublic.h
@@ -24,20 +24,19 @@
#include "H5public.h"
#include "H5Ipublic.h"
-#ifndef NEW_ERR
-
#define H5E_DEFAULT 0
+#define H5E_LEN 128
/* Take out _new later */
typedef enum H5E_type_t {
- H5E_LLIMIT_new =-1,
- H5E_MAJOR_new,
- H5E_MINOR_new,
- H5E_ULIMIT_new
+ H5E_LLIMIT =-1,
+ H5E_MAJOR,
+ H5E_MINOR,
+ H5E_ULIMIT
} H5E_type_t;
/* Information about an error; element of error stack */
-typedef struct H5E_error_t_new {
+typedef struct H5E_error_t {
hid_t cls_id; /*class ID */
hid_t maj_id; /*major error ID */
hid_t min_id; /*minor error number */
@@ -45,7 +44,7 @@ typedef struct H5E_error_t_new {
const char *file_name; /*file in which error occurred */
unsigned line; /*line in file where error occurs */
const char *desc; /*optional supplied description */
-} H5E_error_t_new;
+} H5E_error_t;
/* When this header is included from H5Eprivate.h, don't make calls to H5open() */
#undef H5OPEN
@@ -60,34 +59,34 @@ typedef struct H5E_error_t_new {
H5_DLLVAR hid_t H5E_ERR_CLS_g;
/* HDF5 error class: major errors. */
-#define H5E_NONE_MAJOR_new (H5OPEN H5E_NONE_MAJOR_g)
-#define H5E_ARGS_new (H5OPEN H5E_ARGS_g)
-#define H5E_RESOURCE_new (H5OPEN H5E_RESOURCE_g)
-#define H5E_INTERNAL_new (H5OPEN H5E_INTERNAL_g)
-#define H5E_FILE_new (H5OPEN H5E_FILE_g)
-#define H5E_IO_new (H5OPEN H5E_IO_g)
-#define H5E_FUNC_new (H5OPEN H5E_FUNC_g)
-#define H5E_ATOM_new (H5OPEN H5E_ATOM_g)
-#define H5E_CACHE_new (H5OPEN H5E_CACHE_g)
-#define H5E_BTREE_new (H5OPEN H5E_BTREE_g)
-#define H5E_SYM_new (H5OPEN H5E_SYM_g)
-#define H5E_HEAP_new (H5OPEN H5E_HEAP_g)
-#define H5E_OHDR_new (H5OPEN H5E_OHDR_g)
-#define H5E_DATATYPE_new (H5OPEN H5E_DATATYPE_g)
-#define H5E_DATASPACE_new (H5OPEN H5E_DATASPACE_g)
-#define H5E_DATASET_new (H5OPEN H5E_DATASET_g)
-#define H5E_STORAGE_new (H5OPEN H5E_STORAGE_g)
-#define H5E_PLIST_new (H5OPEN H5E_PLIST_g)
-#define H5E_ATTR_new (H5OPEN H5E_ATTR_g)
-#define H5E_PLINE_new (H5OPEN H5E_PLINE_g)
-#define H5E_EFL_new (H5OPEN H5E_EFL_g)
-#define H5E_REFERENCE_new (H5OPEN H5E_REFERENCE_g)
-#define H5E_VFL_new (H5OPEN H5E_VFL_g)
-#define H5E_TBBT_new (H5OPEN H5E_TBBT_g)
-#define H5E_FPHDF5_new (H5OPEN H5E_FPHDF5_g)
-#define H5E_TST_new (H5OPEN H5E_TST_g)
-#define H5E_RS_new (H5OPEN H5E_RS_g)
-#define H5E_ERROR_new (H5OPEN H5E_ERROR_g)
+#define H5E_NONE_MAJOR (H5OPEN H5E_NONE_MAJOR_g)
+#define H5E_ARGS (H5OPEN H5E_ARGS_g)
+#define H5E_RESOURCE (H5OPEN H5E_RESOURCE_g)
+#define H5E_INTERNAL (H5OPEN H5E_INTERNAL_g)
+#define H5E_FILE (H5OPEN H5E_FILE_g)
+#define H5E_IO (H5OPEN H5E_IO_g)
+#define H5E_FUNC (H5OPEN H5E_FUNC_g)
+#define H5E_ATOM (H5OPEN H5E_ATOM_g)
+#define H5E_CACHE (H5OPEN H5E_CACHE_g)
+#define H5E_BTREE (H5OPEN H5E_BTREE_g)
+#define H5E_SYM (H5OPEN H5E_SYM_g)
+#define H5E_HEAP (H5OPEN H5E_HEAP_g)
+#define H5E_OHDR (H5OPEN H5E_OHDR_g)
+#define H5E_DATATYPE (H5OPEN H5E_DATATYPE_g)
+#define H5E_DATASPACE (H5OPEN H5E_DATASPACE_g)
+#define H5E_DATASET (H5OPEN H5E_DATASET_g)
+#define H5E_STORAGE (H5OPEN H5E_STORAGE_g)
+#define H5E_PLIST (H5OPEN H5E_PLIST_g)
+#define H5E_ATTR (H5OPEN H5E_ATTR_g)
+#define H5E_PLINE (H5OPEN H5E_PLINE_g)
+#define H5E_EFL (H5OPEN H5E_EFL_g)
+#define H5E_REFERENCE (H5OPEN H5E_REFERENCE_g)
+#define H5E_VFL (H5OPEN H5E_VFL_g)
+#define H5E_TBBT (H5OPEN H5E_TBBT_g)
+#define H5E_FPHDF5 (H5OPEN H5E_FPHDF5_g)
+#define H5E_TST (H5OPEN H5E_TST_g)
+#define H5E_RS (H5OPEN H5E_RS_g)
+#define H5E_ERROR (H5OPEN H5E_ERROR_g)
H5_DLLVAR hid_t H5E_NONE_MAJOR_g; /*special zero, no error */
H5_DLLVAR hid_t H5E_ARGS_g; /*invalid arguments to routine */
@@ -118,15 +117,14 @@ H5_DLLVAR hid_t H5E_TST_g; /*Ternary Search Trees
H5_DLLVAR hid_t H5E_RS_g; /*Reference Counted Strings */
H5_DLLVAR hid_t H5E_ERROR_g; /*Error API */
-
/* HDF5 error class: minor errors. */
/* Argument errors */
-#define H5E_NONE_MINOR_new (H5OPEN H5E_NONE_MINOR_g)
-#define H5E_UNINITIALIZED_new (H5OPEN H5E_UNINITIALIZED_g)
-#define H5E_UNSUPPORTED_new (H5OPEN H5E_UNSUPPORTED_g)
-#define H5E_BADTYPE_new (H5OPEN H5E_BADTYPE_g)
-#define H5E_BADRANGE_new (H5OPEN H5E_BADRANGE_g)
-#define H5E_BADVALUE_new (H5OPEN H5E_BADVALUE_g)
+#define H5E_NONE_MINOR (H5OPEN H5E_NONE_MINOR_g)
+#define H5E_UNINITIALIZED (H5OPEN H5E_UNINITIALIZED_g)
+#define H5E_UNSUPPORTED (H5OPEN H5E_UNSUPPORTED_g)
+#define H5E_BADTYPE (H5OPEN H5E_BADTYPE_g)
+#define H5E_BADRANGE (H5OPEN H5E_BADRANGE_g)
+#define H5E_BADVALUE (H5OPEN H5E_BADVALUE_g)
H5_DLLVAR hid_t H5E_NONE_MINOR_g; /*special zero, no error */
H5_DLLVAR hid_t H5E_UNINITIALIZED_g; /*information is unitialized */
@@ -136,13 +134,13 @@ H5_DLLVAR hid_t H5E_BADRANGE_g; /*argument out of range
H5_DLLVAR hid_t H5E_BADVALUE_g; /*bad value for argument */
/* Resource errors */
-#define H5E_NOSPACE_new (H5OPEN H5E_NOSPACE_g)
-#define H5E_CANTCOPY_new (H5OPEN H5E_CANTCOPY_g)
-#define H5E_CANTFREE_new (H5OPEN H5E_CANTFREE_g)
-#define H5E_ALREADYEXISTS_new (H5OPEN H5E_ALREADYEXISTS_g)
-#define H5E_CANTLOCK_new (H5OPEN H5E_CANTLOCK_g)
-#define H5E_CANTUNLOCK_new (H5OPEN H5E_CANTUNLOCK_g)
-#define H5E_CANTGC_new (H5OPEN H5E_CANTGC_g)
+#define H5E_NOSPACE (H5OPEN H5E_NOSPACE_g)
+#define H5E_CANTCOPY (H5OPEN H5E_CANTCOPY_g)
+#define H5E_CANTFREE (H5OPEN H5E_CANTFREE_g)
+#define H5E_ALREADYEXISTS (H5OPEN H5E_ALREADYEXISTS_g)
+#define H5E_CANTLOCK (H5OPEN H5E_CANTLOCK_g)
+#define H5E_CANTUNLOCK (H5OPEN H5E_CANTUNLOCK_g)
+#define H5E_CANTGC (H5OPEN H5E_CANTGC_g)
H5_DLLVAR hid_t H5E_NOSPACE_g; /*no space available for allocation */
H5_DLLVAR hid_t H5E_CANTCOPY_g; /*unable to copy object */
@@ -153,15 +151,15 @@ H5_DLLVAR hid_t H5E_CANTUNLOCK_g; /*Unable to unlock object
H5_DLLVAR hid_t H5E_CANTGC_g; /*Unable to garbage collect */
/* File accessability errors */
-#define H5E_FILEEXISTS_new (H5OPEN H5E_FILEEXISTS_g)
-#define H5E_FILEOPEN_new (H5OPEN H5E_FILEOPEN_g)
-#define H5E_CANTCREATE_new (H5OPEN H5E_CANTCREATE_g)
-#define H5E_CANTOPENFILE_new (H5OPEN H5E_CANTOPENFILE_g)
-#define H5E_CANTCLOSEFILE_new (H5OPEN H5E_CANTCLOSEFILE_g)
-#define H5E_NOTHDF5_new (H5OPEN H5E_NOTHDF5_g)
-#define H5E_BADFILE_new (H5OPEN H5E_BADFILE_g)
-#define H5E_TRUNCATED_new (H5OPEN H5E_TRUNCATED_g)
-#define H5E_MOUNT_new (H5OPEN H5E_MOUNT_g)
+#define H5E_FILEEXISTS (H5OPEN H5E_FILEEXISTS_g)
+#define H5E_FILEOPEN (H5OPEN H5E_FILEOPEN_g)
+#define H5E_CANTCREATE (H5OPEN H5E_CANTCREATE_g)
+#define H5E_CANTOPENFILE (H5OPEN H5E_CANTOPENFILE_g)
+#define H5E_CANTCLOSEFILE (H5OPEN H5E_CANTCLOSEFILE_g)
+#define H5E_NOTHDF5 (H5OPEN H5E_NOTHDF5_g)
+#define H5E_BADFILE (H5OPEN H5E_BADFILE_g)
+#define H5E_TRUNCATED (H5OPEN H5E_TRUNCATED_g)
+#define H5E_MOUNT (H5OPEN H5E_MOUNT_g)
H5_DLLVAR hid_t H5E_FILEEXISTS_g; /*file already exists */
H5_DLLVAR hid_t H5E_FILEOPEN_g; /*file already open */
@@ -174,12 +172,12 @@ H5_DLLVAR hid_t H5E_TRUNCATED_g; /*file has been truncated
H5_DLLVAR hid_t H5E_MOUNT_g; /*file mount error */
/* Generic low-level file I/O errors */
-#define H5E_SEEKERROR_new (H5OPEN H5E_SEEKERROR_g)
-#define H5E_READERROR_new (H5OPEN H5E_READERROR_g)
-#define H5E_WRITEERROR_new (H5OPEN H5E_WRITEERROR_g)
-#define H5E_CLOSEERROR_new (H5OPEN H5E_CLOSEERROR_g)
-#define H5E_OVERFLOW_new (H5OPEN H5E_OVERFLOW_g)
-#define H5E_FCNTL_new (H5OPEN H5E_FCNTL_g)
+#define H5E_SEEKERROR (H5OPEN H5E_SEEKERROR_g)
+#define H5E_READERROR (H5OPEN H5E_READERROR_g)
+#define H5E_WRITEERROR (H5OPEN H5E_WRITEERROR_g)
+#define H5E_CLOSEERROR (H5OPEN H5E_CLOSEERROR_g)
+#define H5E_OVERFLOW (H5OPEN H5E_OVERFLOW_g)
+#define H5E_FCNTL (H5OPEN H5E_FCNTL_g)
H5_DLLVAR hid_t H5E_SEEKERROR_g; /*seek failed */
H5_DLLVAR hid_t H5E_READERROR_g; /*read failed */
@@ -189,21 +187,21 @@ H5_DLLVAR hid_t H5E_OVERFLOW_g; /*address overflowed */
H5_DLLVAR hid_t H5E_FCNTL_g; /*file fcntl failed */
/* Function entry/exit interface errors */
-#define H5E_CANTINIT_new (H5OPEN H5E_CANTINIT_g)
-#define H5E_ALREADYINIT_new (H5OPEN H5E_ALREADYINIT_g)
-#define H5E_CANTRELEASE_new (H5OPEN H5E_CANTRELEASE_g)
+#define H5E_CANTINIT (H5OPEN H5E_CANTINIT_g)
+#define H5E_ALREADYINIT (H5OPEN H5E_ALREADYINIT_g)
+#define H5E_CANTRELEASE (H5OPEN H5E_CANTRELEASE_g)
H5_DLLVAR hid_t H5E_CANTINIT_g; /*Can't initialize object */
H5_DLLVAR hid_t H5E_ALREADYINIT_g; /*object already initialized */
H5_DLLVAR hid_t H5E_CANTRELEASE_g; /*Can't release object */
/* Object atom related errors */
-#define H5E_BADATOM_new (H5OPEN H5E_BADATOM_g)
-#define H5E_BADGROUP_new (H5OPEN H5E_BADGROUP_g)
-#define H5E_CANTREGISTER_new (H5OPEN H5E_CANTREGISTER_g)
-#define H5E_CANTINC_new (H5OPEN H5E_CANTINC_g)
-#define H5E_CANTDEC_new (H5OPEN H5E_CANTDEC_g)
-#define H5E_NOIDS_new (H5OPEN H5E_NOIDS_g)
+#define H5E_BADATOM (H5OPEN H5E_BADATOM_g)
+#define H5E_BADGROUP (H5OPEN H5E_BADGROUP_g)
+#define H5E_CANTREGISTER (H5OPEN H5E_CANTREGISTER_g)
+#define H5E_CANTINC (H5OPEN H5E_CANTINC_g)
+#define H5E_CANTDEC (H5OPEN H5E_CANTDEC_g)
+#define H5E_NOIDS (H5OPEN H5E_NOIDS_g)
H5_DLLVAR hid_t H5E_BADATOM_g; /*Can't find atom information */
H5_DLLVAR hid_t H5E_BADGROUP_g; /*Can't find group information */
@@ -213,10 +211,10 @@ H5_DLLVAR hid_t H5E_CANTDEC_g; /*Can't decrement reference
H5_DLLVAR hid_t H5E_NOIDS_g; /*Out of IDs for group */
/* Cache related errors */
-#define H5E_CANTFLUSH_new (H5OPEN H5E_CANTFLUSH_g)
-#define H5E_CANTLOAD_new (H5OPEN H5E_CANTLOAD_g)
-#define H5E_PROTECT_new (H5OPEN H5E_PROTECT_g)
-#define H5E_NOTCACHED_new (H5OPEN H5E_NOTCACHED_g)
+#define H5E_CANTFLUSH (H5OPEN H5E_CANTFLUSH_g)
+#define H5E_CANTLOAD (H5OPEN H5E_CANTLOAD_g)
+#define H5E_PROTECT (H5OPEN H5E_PROTECT_g)
+#define H5E_NOTCACHED (H5OPEN H5E_NOTCACHED_g)
H5_DLLVAR hid_t H5E_CANTFLUSH_g; /*Can't flush object from cache */
H5_DLLVAR hid_t H5E_CANTLOAD_g; /*Can't load object into cache */
@@ -224,13 +222,13 @@ H5_DLLVAR hid_t H5E_PROTECT_g; /*protected object error
H5_DLLVAR hid_t H5E_NOTCACHED_g; /*object not currently cached */
/* B-tree related errors */
-#define H5E_NOTFOUND_new (H5OPEN H5E_NOTFOUND_g)
-#define H5E_EXISTS_new (H5OPEN H5E_EXISTS_g)
-#define H5E_CANTENCODE_new (H5OPEN H5E_CANTENCODE_g)
-#define H5E_CANTDECODE_new (H5OPEN H5E_CANTDECODE_g)
-#define H5E_CANTSPLIT_new (H5OPEN H5E_CANTSPLIT_g)
-#define H5E_CANTINSERT_new (H5OPEN H5E_CANTINSERT_g)
-#define H5E_CANTLIST_new (H5OPEN H5E_CANTLIST_g)
+#define H5E_NOTFOUND (H5OPEN H5E_NOTFOUND_g)
+#define H5E_EXISTS (H5OPEN H5E_EXISTS_g)
+#define H5E_CANTENCODE (H5OPEN H5E_CANTENCODE_g)
+#define H5E_CANTDECODE (H5OPEN H5E_CANTDECODE_g)
+#define H5E_CANTSPLIT (H5OPEN H5E_CANTSPLIT_g)
+#define H5E_CANTINSERT (H5OPEN H5E_CANTINSERT_g)
+#define H5E_CANTLIST (H5OPEN H5E_CANTLIST_g)
H5_DLLVAR hid_t H5E_NOTFOUND_g; /*object not found */
H5_DLLVAR hid_t H5E_EXISTS_g; /*object already exists */
@@ -241,11 +239,11 @@ H5_DLLVAR hid_t H5E_CANTINSERT_g; /*Can't insert object
H5_DLLVAR hid_t H5E_CANTLIST_g; /*Can't list node */
/* Object header related errors */
-#define H5E_LINKCOUNT_new (H5OPEN H5E_LINKCOUNT_g)
-#define H5E_VERSION_new (H5OPEN H5E_VERSION_g)
-#define H5E_ALIGNMENT_new (H5OPEN H5E_ALIGNMENT_g)
-#define H5E_BADMESG_new (H5OPEN H5E_BADMESG_g)
-#define H5E_CANTDELETE_new (H5OPEN H5E_CANTDELETE_g)
+#define H5E_LINKCOUNT (H5OPEN H5E_LINKCOUNT_g)
+#define H5E_VERSION (H5OPEN H5E_VERSION_g)
+#define H5E_ALIGNMENT (H5OPEN H5E_ALIGNMENT_g)
+#define H5E_BADMESG (H5OPEN H5E_BADMESG_g)
+#define H5E_CANTDELETE (H5OPEN H5E_CANTDELETE_g)
H5_DLLVAR hid_t H5E_LINKCOUNT_g; /*bad object header link count */
H5_DLLVAR hid_t H5E_VERSION_g; /*wrong version number */
@@ -254,11 +252,11 @@ H5_DLLVAR hid_t H5E_BADMESG_g; /*unrecognized message
H5_DLLVAR hid_t H5E_CANTDELETE_g; /* Can't delete message */
/* Group related errors */
-#define H5E_CANTOPENOBJ_new (H5OPEN H5E_CANTOPENOBJ_g)
-#define H5E_COMPLEN_new (H5OPEN H5E_COMPLEN_g)
-#define H5E_CWG_new (H5OPEN H5E_CWG_g)
-#define H5E_LINK_new (H5OPEN H5E_LINK_g)
-#define H5E_SLINK_new (H5OPEN H5E_SLINK_g)
+#define H5E_CANTOPENOBJ (H5OPEN H5E_CANTOPENOBJ_g)
+#define H5E_COMPLEN (H5OPEN H5E_COMPLEN_g)
+#define H5E_CWG (H5OPEN H5E_CWG_g)
+#define H5E_LINK (H5OPEN H5E_LINK_g)
+#define H5E_SLINK (H5OPEN H5E_SLINK_g)
H5_DLLVAR hid_t H5E_CANTOPENOBJ_g; /*Can't open object */
H5_DLLVAR hid_t H5E_COMPLEN_g; /*name component is too long */
@@ -267,19 +265,19 @@ H5_DLLVAR hid_t H5E_LINK_g; /*link count failure
H5_DLLVAR hid_t H5E_SLINK_g; /*symbolic link error */
/* Datatype conversion errors */
-#define H5E_CANTCONVERT_new (H5OPEN H5E_CANTCONVERT_g)
-#define H5E_BADSIZE_new (H5OPEN H5E_BADSIZE_g)
+#define H5E_CANTCONVERT (H5OPEN H5E_CANTCONVERT_g)
+#define H5E_BADSIZE (H5OPEN H5E_BADSIZE_g)
H5_DLLVAR hid_t H5E_CANTCONVERT_g; /*Can't convert datatypes */
H5_DLLVAR hid_t H5E_BADSIZE_g; /*Bad size for object */
/* Dataspace errors */
-#define H5E_CANTCLIP_new (H5OPEN H5E_CANTCLIP_g)
-#define H5E_CANTCOUNT_new (H5OPEN H5E_CANTCOUNT_g)
-#define H5E_CANTSELECT_new (H5OPEN H5E_CANTSELECT_g)
-#define H5E_CANTNEXT_new (H5OPEN H5E_CANTNEXT_g)
-#define H5E_BADSELECT_new (H5OPEN H5E_BADSELECT_g)
-#define H5E_CANTCOMPARE_new (H5OPEN H5E_CANTCOMPARE_g)
+#define H5E_CANTCLIP (H5OPEN H5E_CANTCLIP_g)
+#define H5E_CANTCOUNT (H5OPEN H5E_CANTCOUNT_g)
+#define H5E_CANTSELECT (H5OPEN H5E_CANTSELECT_g)
+#define H5E_CANTNEXT (H5OPEN H5E_CANTNEXT_g)
+#define H5E_BADSELECT (H5OPEN H5E_BADSELECT_g)
+#define H5E_CANTCOMPARE (H5OPEN H5E_CANTCOMPARE_g)
H5_DLLVAR hid_t H5E_CANTCLIP_g; /*Can't clip hyperslab region */
H5_DLLVAR hid_t H5E_CANTCOUNT_g; /*Can't count elements */
@@ -289,27 +287,27 @@ H5_DLLVAR hid_t H5E_BADSELECT_g; /*Invalid selection
H5_DLLVAR hid_t H5E_CANTCOMPARE_g; /*Can't compare objects */
/* Property list errors */
-#define H5E_CANTGET_new (H5OPEN H5E_CANTGET_g)
-#define H5E_CANTSET_new (H5OPEN H5E_CANTSET_g)
-#define H5E_DUPCLASS_new (H5OPEN H5E_DUPCLASS_g)
+#define H5E_CANTGET (H5OPEN H5E_CANTGET_g)
+#define H5E_CANTSET (H5OPEN H5E_CANTSET_g)
+#define H5E_DUPCLASS (H5OPEN H5E_DUPCLASS_g)
H5_DLLVAR hid_t H5E_CANTGET_g; /*Can't get value */
H5_DLLVAR hid_t H5E_CANTSET_g; /*Can't set value */
H5_DLLVAR hid_t H5E_DUPCLASS_g; /*Duplicate class name in parent class */
/* Parallel errors */
-#define H5E_MPI_new (H5OPEN H5E_MPI_g)
-#define H5E_MPIERRSTR_new (H5OPEN H5E_MPIERRSTR_g)
+#define H5E_MPI (H5OPEN H5E_MPI_g)
+#define H5E_MPIERRSTR (H5OPEN H5E_MPIERRSTR_g)
H5_DLLVAR hid_t H5E_MPI_g; /*some MPI function failed */
H5_DLLVAR hid_t H5E_MPIERRSTR_g; /*MPI Error String */
/* FPHDF5 errors */
-#define H5E_CANTMAKETREE_new (H5OPEN H5E_CANTMAKETREE_g)
-#define H5E_CANTRECV_new (H5OPEN H5E_CANTRECV_g)
-#define H5E_CANTSENDMDATA_new (H5OPEN H5E_CANTSENDMDATA_g)
-#define H5E_CANTCHANGE_new (H5OPEN H5E_CANTCHANGE_g)
-#define H5E_CANTALLOC_new (H5OPEN H5E_CANTALLOC_g)
+#define H5E_CANTMAKETREE (H5OPEN H5E_CANTMAKETREE_g)
+#define H5E_CANTRECV (H5OPEN H5E_CANTRECV_g)
+#define H5E_CANTSENDMDATA (H5OPEN H5E_CANTSENDMDATA_g)
+#define H5E_CANTCHANGE (H5OPEN H5E_CANTCHANGE_g)
+#define H5E_CANTALLOC (H5OPEN H5E_CANTALLOC_g)
H5_DLLVAR hid_t H5E_CANTMAKETREE_g; /*can't make a TBBT tree */
H5_DLLVAR hid_t H5E_CANTRECV_g; /*can't receive messages from processes */
@@ -318,18 +316,16 @@ H5_DLLVAR hid_t H5E_CANTCHANGE_g; /*can't register change on s
H5_DLLVAR hid_t H5E_CANTALLOC_g; /*can't allocate from file */
/* I/O pipeline errors */
-#define H5E_NOFILTER_new (H5OPEN H5E_NOFILTER_g)
-#define H5E_CALLBACK_new (H5OPEN H5E_CALLBACK_g)
-#define H5E_CANAPPLY_new (H5OPEN H5E_CANAPPLY_g)
-#define H5E_SETLOCAL_new (H5OPEN H5E_SETLOCAL_g)
+#define H5E_NOFILTER (H5OPEN H5E_NOFILTER_g)
+#define H5E_CALLBACK (H5OPEN H5E_CALLBACK_g)
+#define H5E_CANAPPLY (H5OPEN H5E_CANAPPLY_g)
+#define H5E_SETLOCAL (H5OPEN H5E_SETLOCAL_g)
H5_DLLVAR hid_t H5E_NOFILTER_g; /*requested filter is not available */
H5_DLLVAR hid_t H5E_CALLBACK_g; /*callback failed */
H5_DLLVAR hid_t H5E_CANAPPLY_g; /*error from filter "can apply" callback */
H5_DLLVAR hid_t H5E_SETLOCAL_g; /*error from filter "set local" callback */
-#endif /* NEW_ERR */
-
/*
* One often needs to temporarily disable automatic error reporting when
* trying something that's likely or expected to fail. For instance, to
@@ -347,18 +343,18 @@ H5_DLLVAR hid_t H5E_SETLOCAL_g; /*error from filter "set loc
#define H5E_BEGIN_TRY { \
H5E_auto_t H5E_saved_efunc; \
void *H5E_saved_edata; \
- H5Eget_auto (&H5E_saved_efunc, &H5E_saved_edata); \
- H5Eset_auto (NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &H5E_saved_efunc, &H5E_saved_edata); \
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
#define H5E_END_TRY \
- H5Eset_auto (H5E_saved_efunc, H5E_saved_edata); \
+ H5Eset_auto (H5E_DEFAULT, H5E_saved_efunc, H5E_saved_edata); \
}
/*
* Public API Convenience Macros for Error reporting - Documented
*/
/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */
-#define H5Epush_sim(func,maj,min,str) H5Epush(__FILE__,func,__LINE__,maj,min,str)
+#define H5Epush_sim(func,maj,min,str) H5Epush(H5E_DEFAULT,__FILE__,func,__LINE__,maj,min,str)
/*
* Public API Convenience Macros for Error reporting - Undocumented
@@ -366,180 +362,17 @@ H5_DLLVAR hid_t H5E_SETLOCAL_g; /*error from filter "set loc
/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */
/* And return after pushing error onto stack */
#define H5Epush_ret(func,maj,min,str,ret) { \
- H5Epush(__FILE__,func,__LINE__,maj,min,str); \
+ H5Epush(H5E_DEFAULT,__FILE__,func,__LINE__,maj,min,str); \
return(ret); \
}
/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */
/* And goto a label after pushing error onto stack */
#define H5Epush_goto(func,maj,min,str,label) { \
- H5Epush(__FILE__,func,__LINE__,maj,min,str); \
+ H5Epush(H5E_DEFAULT,__FILE__,func,__LINE__,maj,min,str); \
goto label; \
}
-/*
- * Declare an enumerated type which holds all the valid major HDF error codes.
- */
-typedef enum H5E_major_t {
- H5E_NONE_MAJOR = 0, /*special zero, no error */
- H5E_ARGS, /*invalid arguments to routine */
- H5E_RESOURCE, /*resource unavailable */
- H5E_INTERNAL, /* Internal error (too specific to document
- * in detail)
- */
- H5E_FILE, /*file Accessability */
- H5E_IO, /*Low-level I/O */
- H5E_FUNC, /*function Entry/Exit */
- H5E_ATOM, /*object Atom */
- H5E_CACHE, /*object Cache */
- H5E_BTREE, /*B-Tree Node */
- H5E_SYM, /*symbol Table */
- H5E_HEAP, /*Heap */
- H5E_OHDR, /*object Header */
- H5E_DATATYPE, /*Datatype */
- H5E_DATASPACE, /*Dataspace */
- H5E_DATASET, /*Dataset */
- H5E_STORAGE, /*data storage */
- H5E_PLIST, /*Property lists */
- H5E_ATTR, /*Attribute */
- H5E_PLINE, /*Data filters */
- H5E_EFL, /*External file list */
- H5E_REFERENCE, /*References */
- H5E_VFL, /*Virtual File Layer */
- H5E_TBBT, /*Threaded, Balanced, Binary Trees */
- H5E_FPHDF5, /*Flexible Parallel HDF5 */
- H5E_TST, /*Ternary Search Trees */
- H5E_RS, /*Reference Counted Strings */
- H5E_ERROR /*Error API */
-} H5E_major_t;
-
-/* Declare an enumerated type which holds all the valid minor HDF error codes */
-typedef enum H5E_minor_t {
- H5E_NONE_MINOR = 0, /*special zero, no error */
-
- /* Argument errors */
- H5E_UNINITIALIZED, /*information is unitialized */
- H5E_UNSUPPORTED, /*feature is unsupported */
- H5E_BADTYPE, /*incorrect type found */
- H5E_BADRANGE, /*argument out of range */
- H5E_BADVALUE, /*bad value for argument */
-
- /* Resource errors */
- H5E_NOSPACE, /*no space available for allocation */
- H5E_CANTCOPY, /*unable to copy object */
- H5E_CANTFREE, /*unable to free object */
- H5E_ALREADYEXISTS, /*Object already exists */
- H5E_CANTLOCK, /*Unable to lock object */
- H5E_CANTUNLOCK, /*Unable to unlock object */
- H5E_CANTGC, /*Unable to garbage collect */
-
- /* File accessability errors */
- H5E_FILEEXISTS, /*file already exists */
- H5E_FILEOPEN, /*file already open */
- H5E_CANTCREATE, /*Can't create file */
- H5E_CANTOPENFILE, /*Can't open file */
- H5E_CANTCLOSEFILE, /*Can't close file */
- H5E_NOTHDF5, /*not an HDF5 format file */
- H5E_BADFILE, /*bad file ID accessed */
- H5E_TRUNCATED, /*file has been truncated */
- H5E_MOUNT, /*file mount error */
-
- /* Generic low-level file I/O errors */
- H5E_SEEKERROR, /*seek failed */
- H5E_READERROR, /*read failed */
- H5E_WRITEERROR, /*write failed */
- H5E_CLOSEERROR, /*close failed */
- H5E_OVERFLOW, /*address overflowed */
- H5E_FCNTL, /*file fcntl failed */
-
- /* Function entry/exit interface errors */
- H5E_CANTINIT, /*Can't initialize object */
- H5E_ALREADYINIT, /*object already initialized */
- H5E_CANTRELEASE, /*Can't release object */
-
- /* Object atom related errors */
- H5E_BADATOM, /*Can't find atom information */
- H5E_BADGROUP, /*Can't find group information */
- H5E_CANTREGISTER, /*Can't register new atom */
- H5E_CANTINC, /*Can't increment reference count */
- H5E_CANTDEC, /*Can't decrement reference count */
- H5E_NOIDS, /*Out of IDs for group */
-
- /* Cache related errors */
- H5E_CANTFLUSH, /*Can't flush object from cache */
- H5E_CANTLOAD, /*Can't load object into cache */
- H5E_PROTECT, /*protected object error */
- H5E_NOTCACHED, /*object not currently cached */
-
- /* B-tree related errors */
- H5E_NOTFOUND, /*object not found */
- H5E_EXISTS, /*object already exists */
- H5E_CANTENCODE, /*Can't encode value */
- H5E_CANTDECODE, /*Can't decode value */
- H5E_CANTSPLIT, /*Can't split node */
- H5E_CANTINSERT, /*Can't insert object */
- H5E_CANTLIST, /*Can't list node */
-
- /* Object header related errors */
- H5E_LINKCOUNT, /*bad object header link count */
- H5E_VERSION, /*wrong version number */
- H5E_ALIGNMENT, /*alignment error */
- H5E_BADMESG, /*unrecognized message */
- H5E_CANTDELETE, /* Can't delete message */
-
- /* Group related errors */
- H5E_CANTOPENOBJ, /*Can't open object */
- H5E_COMPLEN, /*name component is too long */
- H5E_CWG, /*problem with current working group */
- H5E_LINK, /*link count failure */
- H5E_SLINK, /*symbolic link error */
-
- /* Datatype conversion errors */
- H5E_CANTCONVERT, /*Can't convert datatypes */
- H5E_BADSIZE, /*Bad size for object */
-
- /* Dataspace errors */
- H5E_CANTCLIP, /*Can't clip hyperslab region */
- H5E_CANTCOUNT, /*Can't count elements */
- H5E_CANTSELECT, /*Can't select hyperslab */
- H5E_CANTNEXT, /*Can't move to next iterator location */
- H5E_BADSELECT, /*Invalid selection */
- H5E_CANTCOMPARE, /*Can't compare objects */
-
- /* Property list errors */
- H5E_CANTGET, /*Can't get value */
- H5E_CANTSET, /*Can't set value */
- H5E_DUPCLASS, /*Duplicate class name in parent class */
-
- /* Parallel errors */
- H5E_MPI, /*some MPI function failed */
- H5E_MPIERRSTR, /*MPI Error String */
-
- /* FPHDF5 errors */
- H5E_CANTMAKETREE, /*can't make a TBBT tree */
- H5E_CANTRECV, /*can't receive messages from processes */
- H5E_CANTSENDMDATA, /*can't send metadata message */
- H5E_CANTCHANGE, /*can't register change on server */
- H5E_CANTALLOC, /*can't allocate from file */
-
- /* I/O pipeline errors */
- H5E_NOFILTER, /*requested filter is not available */
- H5E_CALLBACK, /*callback failed */
- H5E_CANAPPLY, /*error from filter "can apply" callback */
- H5E_SETLOCAL /*error from filter "set local" callback */
-
-} H5E_minor_t;
-
-/* Information about an error */
-typedef struct H5E_error_t {
- H5E_major_t maj_num; /*major error number */
- H5E_minor_t min_num; /*minor error number */
- const char *func_name; /*function in which error occurred */
- const char *file_name; /*file in which error occurred */
- unsigned line; /*line in file where error occurs */
- const char *desc; /*optional supplied description */
-} H5E_error_t;
-
/* Error stack traversal direction */
typedef enum H5E_direction_t {
H5E_WALK_UPWARD = 0, /*begin deep, end at API function */
@@ -551,22 +384,6 @@ typedef enum H5E_direction_t {
extern "C" {
#endif
-/* Error stack traversal callback function */
-typedef herr_t (*H5E_walk_t)(int n, H5E_error_t *err_desc, void *client_data);
-typedef herr_t (*H5E_auto_t)(hid_t estack, void *client_data);
-
-H5_DLL herr_t H5Eset_auto (H5E_auto_t func, void *client_data);
-H5_DLL herr_t H5Eget_auto (H5E_auto_t *func, void **client_data);
-H5_DLL herr_t H5Eclear (void);
-H5_DLL herr_t H5Eprint (FILE *stream);
-H5_DLL herr_t H5Ewalk (H5E_direction_t direction, H5E_walk_t func,
- void *client_data);
-H5_DLL const char *H5Eget_major (H5E_major_t major_number);
-H5_DLL const char *H5Eget_minor (H5E_minor_t minor_number);
-H5_DLL herr_t H5Epush(const char *file, const char *func,
- unsigned line, H5E_major_t maj, H5E_minor_t min, const char *str);
-
-/* New error API */
H5_DLL hid_t H5Eregister_class(const char *cls_name, const char *lib_name, const char *version);
H5_DLL herr_t H5Eunregister_class(hid_t class_id);
H5_DLL herr_t H5Eclose_msg(hid_t err_id);
@@ -577,16 +394,17 @@ H5_DLL ssize_t H5Eget_class_name(hid_t class_id, char *name, size_t size);
H5_DLL ssize_t H5Eget_msg(hid_t msg_id, H5E_type_t *type, char *msg, size_t size);
H5_DLL int H5Eget_num(hid_t error_stack_id);
H5_DLL herr_t H5Eset_current_stack(hid_t err_stack_id);
-H5_DLL herr_t H5Epush_new(hid_t err_stack, const char *file, const char *func, unsigned line,
+H5_DLL herr_t H5Epush(hid_t err_stack, const char *file, const char *func, unsigned line,
hid_t maj_id, hid_t min_id, const char *msg, ...);
H5_DLL herr_t H5Epop(hid_t err_stack, size_t count);
-H5_DLL herr_t H5Eclear_new(hid_t err_stack);
-H5_DLL herr_t H5Eprint_new(hid_t err_stack, FILE *stream);
-typedef herr_t (*H5E_walk_t_new)(int n, H5E_error_t_new *err_desc, void *client_data);
-H5_DLL herr_t H5Ewalk_new(hid_t err_stack, H5E_direction_t direction, H5E_walk_t_new func,
+H5_DLL herr_t H5Eclear(hid_t err_stack);
+H5_DLL herr_t H5Eprint(hid_t err_stack, FILE *stream);
+typedef herr_t (*H5E_walk_t)(int n, H5E_error_t *err_desc, void *client_data);
+typedef herr_t (*H5E_auto_t)(hid_t estack, void *client_data);
+H5_DLL herr_t H5Ewalk(hid_t err_stack, H5E_direction_t direction, H5E_walk_t func,
void *client_data);
-H5_DLL herr_t H5Eget_auto_new(hid_t estack_id, H5E_auto_t *func, void **client_data);
-H5_DLL herr_t H5Eset_auto_new(hid_t estack_id, H5E_auto_t func, void *client_data);
+H5_DLL herr_t H5Eget_auto(hid_t estack_id, H5E_auto_t *func, void **client_data);
+H5_DLL herr_t H5Eset_auto(hid_t estack_id, H5E_auto_t func, void *client_data);
#ifdef __cplusplus
}
diff --git a/src/H5F.c b/src/H5F.c
index 4ec90a9..c20d1ce 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -1859,7 +1859,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t d
if (NULL==(lf=H5FD_open(name, tent_flags, fapl_id, HADDR_UNDEF))) {
if (tent_flags == flags)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file");
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
tent_flags = flags;
if (NULL==(lf=H5FD_open(name, tent_flags, fapl_id, HADDR_UNDEF)))
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file");
diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c
index 0b14304..a157a9c 100644
--- a/src/H5FDfamily.c
+++ b/src/H5FDfamily.c
@@ -593,7 +593,7 @@ H5FD_family_open(const char *name, unsigned flags, hid_t fapl_id,
if (!file->memb[file->nmembs]) {
if (0==file->nmembs)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open member file");
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
break;
}
file->nmembs++;
diff --git a/src/H5FDmulti.c b/src/H5FDmulti.c
index 3f089a6..9492d7c 100644
--- a/src/H5FDmulti.c
+++ b/src/H5FDmulti.c
@@ -225,7 +225,7 @@ hid_t
H5FD_multi_init(void)
{
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
if (H5I_VFL!=H5Iget_type(H5FD_MULTI_g)) {
H5FD_MULTI_g = H5FDregister(&H5FD_multi_g);
@@ -271,7 +271,7 @@ H5Pset_fapl_split(hid_t fapl, const char *meta_ext, hid_t meta_plist_id,
/*NO TRACE*/
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Initialize */
for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
@@ -416,7 +416,7 @@ H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map,
/*NO TRACE*/
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Check arguments and supply default values */
if(H5I_GENPROP_LST != H5Iget_type(fapl_id) ||
@@ -520,7 +520,7 @@ H5Pget_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map/*out*/,
/*NO TRACE*/
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
if(H5I_GENPROP_LST != H5Iget_type(fapl_id) ||
TRUE != H5Pisa_class(fapl_id, H5P_FILE_ACCESS))
@@ -592,7 +592,7 @@ H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl)
/*NO TRACE*/
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Check arguments */
if (TRUE!=H5Pisa_class(dxpl_id, H5P_DATASET_XFER))
@@ -644,7 +644,7 @@ H5Pget_dxpl_multi(hid_t dxpl_id, hid_t *memb_dxpl/*out*/)
/*NO TRACE*/
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
if (TRUE!=H5Pisa_class(dxpl_id, H5P_DATASET_XFER))
H5Epush_ret(func, H5E_PLIST, H5E_BADTYPE, "not a file access property list", -1);
@@ -692,7 +692,7 @@ H5FD_multi_sb_size(H5FD_t *_file)
hsize_t nbytes = 8; /*size of header*/
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* How many unique files? */
UNIQUE_MEMBERS(file->fa.memb_map, mt) {
@@ -750,7 +750,7 @@ H5FD_multi_sb_encode(H5FD_t *_file, char *name/*out*/,
static const char *func="H5FD_multi_sb_encode"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Name and version number */
strcpy(name, "NCSAmulti");
@@ -836,7 +836,7 @@ H5FD_multi_sb_decode(H5FD_t *_file, const char *name, const unsigned char *buf)
static const char *func="H5FD_multi_sb_decode"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Make sure the name/version number is correct */
if (strcmp(name, "NCSAmult"))
@@ -979,7 +979,7 @@ H5FD_multi_fapl_get(H5FD_t *_file)
H5FD_multi_t *file = (H5FD_multi_t*)_file;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
return H5FD_multi_fapl_copy(&(file->fa));
}
@@ -1013,7 +1013,7 @@ H5FD_multi_fapl_copy(const void *_old_fa)
assert(new_fa);
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
memcpy(new_fa, old_fa, sizeof(H5FD_multi_fapl_t));
for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
@@ -1063,7 +1063,7 @@ H5FD_multi_fapl_free(void *_fa)
H5FD_mem_t mt;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
if (fa->memb_fapl[mt]>=0) H5Pclose(fa->memb_fapl[mt]);
@@ -1102,7 +1102,7 @@ H5FD_multi_dxpl_copy(const void *_old_dx)
assert(new_dx);
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
memcpy(new_dx, old_dx, sizeof(H5FD_multi_dxpl_t));
for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
@@ -1145,7 +1145,7 @@ H5FD_multi_dxpl_free(void *_dx)
H5FD_mem_t mt;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1))
if (dx->memb_dxpl[mt]>=0)
@@ -1184,7 +1184,7 @@ H5FD_multi_open(const char *name, unsigned flags, hid_t fapl_id,
static const char *func="H5FD_multi_open"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Check arguments */
if (!name || !*name)
@@ -1278,7 +1278,7 @@ H5FD_multi_close(H5FD_t *_file)
static const char *func="H5FD_multi_close"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Close as many members as possible */
ALL_MEMBERS(mt) {
@@ -1344,7 +1344,7 @@ H5FD_multi_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
int cmp=0;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
if (f1->memb[mt] && f2->memb[mt]) break;
@@ -1418,7 +1418,7 @@ H5FD_multi_get_eoa(H5FD_t *_file)
H5FD_multi_t *file = (H5FD_multi_t*)_file;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
return file->eoa;
}
@@ -1452,7 +1452,7 @@ H5FD_multi_set_eoa(H5FD_t *_file, haddr_t eoa)
static const char *func="H5FD_multi_set_eoa"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Find the subfile in which the new EOA value falls */
for (mt=H5FD_MEM_SUPER; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
@@ -1508,7 +1508,7 @@ H5FD_multi_get_eof(H5FD_t *_file)
static const char *func="H5FD_multi_eof"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
UNIQUE_MEMBERS(file->fa.memb_map, mt) {
if (file->memb[mt]) {
@@ -1630,7 +1630,7 @@ H5FD_multi_free(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsi
H5FD_mem_t mmt;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
mmt = file->fa.memb_map[type];
if (H5FD_MEM_DEFAULT==mmt) mmt = type;
@@ -1670,7 +1670,7 @@ H5FD_multi_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, siz
haddr_t start_addr=0;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Get the data transfer properties */
if (H5P_FILE_ACCESS_DEFAULT!=dxpl_id && H5FD_MULTI==H5Pget_driver(dxpl_id)) {
@@ -1725,7 +1725,7 @@ H5FD_multi_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
haddr_t start_addr=0;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Get the data transfer properties */
if (H5P_FILE_ACCESS_DEFAULT!=dxpl_id && H5FD_MULTI==H5Pget_driver(dxpl_id)) {
@@ -1809,7 +1809,7 @@ H5FD_multi_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing)
#endif
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Flush each file */
for (mt=H5FD_MEM_SUPER; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
@@ -1847,7 +1847,7 @@ static int
compute_next(H5FD_multi_t *file)
{
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
ALL_MEMBERS(mt) {
file->memb_next[mt] = HADDR_UNDEF;
@@ -1894,7 +1894,7 @@ open_members(H5FD_multi_t *file)
static const char *func="(H5FD_multi)open_members"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
UNIQUE_MEMBERS(file->fa.memb_map, mt) {
if (file->memb[mt]) continue; /*already open*/
diff --git a/src/H5FDstdio.c b/src/H5FDstdio.c
index 958ae97..b1062e0 100644
--- a/src/H5FDstdio.c
+++ b/src/H5FDstdio.c
@@ -222,7 +222,7 @@ hid_t
H5FD_stdio_init(void)
{
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
if (H5I_VFL!=H5Iget_type(H5FD_STDIO_g))
H5FD_STDIO_g = H5FDregister(&H5FD_stdio_g);
@@ -255,7 +255,7 @@ H5Pset_fapl_stdio(hid_t fapl_id)
/*NO TRACE*/
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
if(0 == H5Pisa_class(fapl_id, H5P_FILE_ACCESS))
H5Epush_ret(func, H5E_PLIST, H5E_BADTYPE, "not a file access property list", -1);
@@ -313,7 +313,7 @@ H5FD_stdio_open( const char *name, unsigned flags, hid_t fapl_id,
fapl_id=fapl_id;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Check arguments */
if (!name || !*name)
@@ -401,7 +401,7 @@ H5FD_stdio_close(H5FD_t *_file)
static const char *func="H5FD_stdio_close"; /* Function Name for error reporting */
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
if (fclose(file->fp) < 0)
H5Epush_ret(func, H5E_IO, H5E_CLOSEERROR, "fclose failed", -1);
@@ -438,7 +438,7 @@ H5FD_stdio_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_stdio_t *f2 = (const H5FD_stdio_t*)_f2;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
#ifdef WIN32
if (f1->fileindexhi < f2->fileindexhi) return -1;
@@ -528,7 +528,7 @@ H5FD_stdio_get_eoa(H5FD_t *_file)
H5FD_stdio_t *file = (H5FD_stdio_t*)_file;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
return(file->eoa);
}
@@ -559,7 +559,7 @@ H5FD_stdio_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_stdio_t *file = (H5FD_stdio_t*)_file;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
file->eoa = addr;
@@ -594,7 +594,7 @@ H5FD_stdio_get_eof(H5FD_t *_file)
H5FD_stdio_t *file = (H5FD_stdio_t*)_file;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
return(MAX(file->eof, file->eoa));
}
@@ -624,7 +624,7 @@ H5FD_stdio_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle)
fapl=fapl;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
*file_handle = &(file->fp);
if(*file_handle==NULL)
@@ -670,7 +670,7 @@ H5FD_stdio_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, siz
dxpl_id=dxpl_id;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Check for overflow */
if (HADDR_UNDEF==addr)
@@ -782,7 +782,7 @@ H5FD_stdio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
type=type;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
@@ -880,7 +880,7 @@ H5FD_stdio_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing)
dxpl_id=dxpl_id;
/* Clear the error stack */
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
/* Only try to flush the file if we have write access */
if(file->write_access) {
diff --git a/src/H5FS.c b/src/H5FS.c
index 9ec80de..c39d497 100644
--- a/src/H5FS.c
+++ b/src/H5FS.c
@@ -86,7 +86,9 @@ H5FS_get_stack(void)
fstack = pthread_getspecific(H5TS_funcstk_key_g);
if (!fstack) {
/* no associated value with current thread - create one */
- fstack = (H5FS_t *)H5MM_malloc(sizeof(H5FS_t));
+ /* Where is it freed? */
+ fstack = (H5FS_t *)H5MM_calloc(sizeof(H5FS_t));
+ fstack->nused = 0;
pthread_setspecific(H5TS_funcstk_key_g, (void *)fstack);
}
diff --git a/src/H5Fistore.c b/src/H5Fistore.c
index d5c2855..3274440 100644
--- a/src/H5Fistore.c
+++ b/src/H5Fistore.c
@@ -1432,7 +1432,7 @@ H5F_istore_lock(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
udata.mesg = *layout;
udata.addr = HADDR_UNDEF;
status = H5B_find (f, dxpl_id, H5B_ISTORE, layout->addr, &udata);
- H5E_clear ();
+ H5E_clear(H5E_get_my_stack());
if (status>=0 && H5F_addr_defined(udata.addr)) {
size_t chunk_alloc=0; /*allocated chunk size */
@@ -2082,7 +2082,8 @@ H5F_istore_get_addr(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
/* Go get the chunk information */
if (H5B_find (f, dxpl_id, H5B_ISTORE, layout->addr, &udata)<0) {
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
+
HGOTO_ERROR(H5E_BTREE,H5E_NOTFOUND,HADDR_UNDEF,"Can't locate chunk info");
} /* end if */
diff --git a/src/H5G.c b/src/H5G.c
index 8fda486..e491422 100644
--- a/src/H5G.c
+++ b/src/H5G.c
@@ -2157,6 +2157,11 @@ H5G_loc (hid_t loc_id)
case H5I_GENPROP_CLS:
case H5I_GENPROP_LST:
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "unable to get symbol table entry of property list");
+
+ case H5I_ERROR_CLASS:
+ case H5I_ERROR_MSG:
+ case H5I_ERROR_STACK:
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "unable to get symbol table entry of error class, massage or stack");
case H5I_GROUP:
if (NULL==(group=H5I_object (loc_id)))
@@ -2253,7 +2258,7 @@ H5G_link (H5G_entry_t *cur_loc, const char *cur_name, H5G_entry_t *new_loc,
if (H5G_namei(new_loc, new_name, &rest, &grp_ent, NULL,
H5G_TARGET_NORMAL, NULL, H5G_NAMEI_TRAVERSE, NULL, dxpl_id)>=0)
HGOTO_ERROR (H5E_SYM, H5E_EXISTS, FAIL, "already exists");
- H5E_clear (); /*it's okay that we didn't find it*/
+ H5E_clear (H5E_get_my_stack()); /*it's okay that we didn't find it*/
rest = H5G_component (rest, &nchars);
/*
@@ -2439,14 +2444,14 @@ H5G_get_objinfo (H5G_entry_t *loc, const char *name, hbool_t follow_link,
statbuf->nlink = H5O_link (&obj_ent, 0, dxpl_id);
statbuf->type = H5G_LINK;
if (NULL==H5O_read(&obj_ent, H5O_MTIME_ID, 0, &(statbuf->mtime), dxpl_id)) {
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
if (NULL==H5O_read(&obj_ent, H5O_MTIME_NEW_ID, 0, &(statbuf->mtime), dxpl_id)) {
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
statbuf->mtime = 0;
}
}
statbuf->type = H5G_get_type(&obj_ent, dxpl_id);
- H5E_clear(); /*clear errors resulting from checking type*/
+ H5E_clear(H5E_get_my_stack()); /*clear errors resulting from checking type*/
}
/* Common code to retrieve the file's fileno */
@@ -2689,7 +2694,7 @@ H5G_set_comment(H5G_entry_t *loc, const char *name, const char *buf, hid_t dxpl_
/* Remove the previous comment message if any */
if (H5O_remove(&obj_ent, H5O_NAME_ID, 0, dxpl_id)<0)
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
/* Add the new message */
if (buf && *buf) {
@@ -2971,7 +2976,7 @@ H5G_insertion_file(H5G_entry_t *loc, const char *name, hid_t dxpl_id)
H5G_free_ent_name(&grp_ent);
HGOTO_ERROR(H5E_SYM, H5E_EXISTS, NULL, "name already exists");
} /* end if */
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
/* Make sure only the last component wasn't resolved */
rest = H5G_component(rest, &size);
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index 712543b..d30aff3 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -1115,7 +1115,7 @@ H5G_node_remove(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key/*in,out*/,
/* Remove the symbolic link value */
if ((s=H5HL_peek(f, dxpl_id, bt_udata->heap_addr, sn->entry[idx].cache.slink.lval_offset)))
H5HL_remove(f, dxpl_id, bt_udata->heap_addr, sn->entry[idx].cache.slink.lval_offset, HDstrlen(s)+1);
- H5E_clear(); /*no big deal*/
+ H5E_clear(H5E_get_my_stack()); /* no big deal */
} else {
/* Decrement the reference count */
assert(H5F_addr_defined(sn->entry[idx].header));
@@ -1126,7 +1126,7 @@ H5G_node_remove(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_lt_key/*in,out*/,
/* Remove the name from the local heap */
if ((s=H5HL_peek(f, dxpl_id, bt_udata->heap_addr, sn->entry[idx].name_off)))
H5HL_remove(f, dxpl_id, bt_udata->heap_addr, sn->entry[idx].name_off, HDstrlen(s)+1);
- H5E_clear(); /*no big deal*/
+ H5E_clear(H5E_get_my_stack()); /* no big deal */
/* Remove the entry from the symbol table node */
if (1==sn->nsyms) {
@@ -1504,7 +1504,7 @@ H5G_node_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent,
if (NULL == (sn = H5AC_protect(f, dxpl_id, H5AC_SNODE, addr, NULL, NULL))) {
H5G_bt_ud1_t udata; /*data to pass through B-tree */
- H5E_clear(); /*discard that error */
+ H5E_clear(H5E_get_my_stack()); /* discard that error */
udata.heap_addr = heap;
if ( H5B_debug(f, dxpl_id, addr, stream, indent, fwidth, H5B_SNODE, &udata) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTLOAD, FAIL, "unable to debug B-tree node");
diff --git a/src/H5HL.c b/src/H5HL.c
index d9153f1..92a9b38 100644
--- a/src/H5HL.c
+++ b/src/H5HL.c
@@ -433,7 +433,7 @@ H5HL_flush(H5F_t *f, hid_t dxpl_id, hbool_t destroy, haddr_t addr, H5HL_t *heap)
/* Release old space on disk */
H5_CHECK_OVERFLOW(heap->disk_alloc,size_t,hsize_t);
H5MF_xfree(f, H5FD_MEM_LHEAP, dxpl_id, old_addr, (hsize_t)heap->disk_alloc);
- H5E_clear(); /*don't really care if the free failed */
+ H5E_clear(H5E_get_my_stack()); /*don't really care if the free failed */
/* Allocate new space on disk */
H5_CHECK_OVERFLOW(heap->mem_alloc,size_t,hsize_t);
diff --git a/src/H5I.c b/src/H5I.c
index 7f255a3..b23d0ea 100644
--- a/src/H5I.c
+++ b/src/H5I.c
@@ -549,7 +549,7 @@ H5I_destroy_group(H5I_type_t grp)
*/
if (1==grp_ptr->count) {
H5I_clear_group(grp, TRUE);
- H5E_clear(); /*don't care about errors*/
+ H5E_clear(H5E_get_my_stack()); /*don't care about errors*/
H5MM_xfree(grp_ptr->id_list);
HDmemset (grp_ptr, 0, sizeof(*grp_ptr));
} else {
diff --git a/src/H5O.c b/src/H5O.c
index 5144220..7eccf60 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -1518,7 +1518,7 @@ H5O_read_real(H5G_entry_t *ent, const H5O_class_t *type, int sequence, void *mes
ret_value = (H5O_fast_g[cache_type]) (cache, type, mesg);
if (ret_value)
HGOTO_DONE(ret_value);
- H5E_clear(); /*don't care, try reading from header */
+ H5E_clear(H5E_get_my_stack()); /*don't care, try reading from header */
}
/* can we get it from the object header? */
@@ -1829,7 +1829,7 @@ H5O_modify_real(H5G_entry_t *ent, const H5O_class_t *type, int overwrite,
* If the message isn't shared then turn off the shared bit
* and treat it as an unshared message.
*/
- H5E_clear ();
+ H5E_clear (H5E_get_my_stack());
flags &= ~H5O_FLAG_SHARED;
} else if (sh_mesg.in_gh) {
/*
@@ -2101,7 +2101,7 @@ H5O_append_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, const H5O_class_t *type,
* If the message isn't shared then turn off the shared bit
* and treat it as an unshared message.
*/
- H5E_clear ();
+ H5E_clear (H5E_get_my_stack());
flags &= ~H5O_FLAG_SHARED;
} else if (sh_mesg.in_gh) {
/*
@@ -2926,7 +2926,7 @@ H5O_alloc(H5F_t *f, H5O_t *oh, const H5O_class_t *type, size_t size)
if ((idx = H5O_alloc_extend_chunk(oh, chunkno, size)) != UFAIL) {
break;
}
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
}
/*
diff --git a/src/H5T.c b/src/H5T.c
index 01752cc..d49fdf6 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -1915,7 +1915,7 @@ H5T_term_interface(void)
(unsigned long)(path->func), path->name);
}
#endif
- H5E_clear(); /*ignore the error*/
+ H5E_clear(H5E_get_my_stack()); /*ignore the error*/
}
}
@@ -2852,7 +2852,7 @@ H5T_register(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst,
H5I_dec_ref(tmp_sid);
H5I_dec_ref(tmp_did);
tmp_sid = tmp_did = -1;
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
continue;
} /* end if */
@@ -2894,7 +2894,7 @@ H5T_register(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst,
tmp_sid = tmp_did = -1;
/* We don't care about any failures during the freeing process */
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
} /* end for */
} /* end else */
@@ -3049,7 +3049,7 @@ H5T_unregister(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst,
H5T_close(path->src);
H5T_close(path->dst);
H5FL_FREE(H5T_path_t,path);
- H5E_clear(); /*ignore all shutdown errors*/
+ H5E_clear(H5E_get_my_stack()); /*ignore all shutdown errors*/
}
done:
@@ -4556,7 +4556,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
"conversion function (ignored)\n");
}
#endif
- H5E_clear(); /*ignore the error*/
+ H5E_clear(H5E_get_my_stack()); /*ignore the error*/
}
H5T_g.npaths = 1;
}
@@ -4666,7 +4666,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
if ((H5T_g.soft[i].func) (src_id, dst_id, &(path->cdata),
(hsize_t)0, 0, 0, NULL, NULL, dxpl_id)<0) {
HDmemset (&(path->cdata), 0, sizeof(H5T_cdata_t));
- H5E_clear(); /*ignore the error*/
+ H5E_clear(H5E_get_my_stack()); /*ignore the error*/
} else {
HDstrcpy (path->name, H5T_g.soft[i].name);
path->func = H5T_g.soft[i].func;
@@ -4716,7 +4716,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
(unsigned long)(path->func), path->name);
}
#endif
- H5E_clear(); /*ignore the failure*/
+ H5E_clear(H5E_get_my_stack()); /*ignore the failure*/
}
if (table->src) H5T_close(table->src);
if (table->dst) H5T_close(table->dst);
diff --git a/src/H5TS.c b/src/H5TS.c
index e57c5e6..9baec76 100644
--- a/src/H5TS.c
+++ b/src/H5TS.c
@@ -32,9 +32,6 @@ typedef struct H5TS_cancel_struct {
/* Global variable definitions */
pthread_once_t H5TS_first_init_g = PTHREAD_ONCE_INIT;
pthread_key_t H5TS_errstk_key_g;
-#ifndef NEW_ERR
-pthread_key_t H5TS_errstk_key_g_new;
-#endif /* NEW_ERR */
pthread_key_t H5TS_funcstk_key_g;
pthread_key_t H5TS_cancel_key_g;
hbool_t H5TS_allow_concurrent_g = FALSE; /* concurrent APIs override this */
@@ -108,17 +105,12 @@ H5TS_first_thread_init(void)
pthread_cond_init(&H5_g.init_lock.cond_var, NULL);
H5_g.init_lock.lock_count = 0;
- /* initialize key for thread-specific error stacks */
- pthread_key_create(&H5TS_errstk_key_g, H5TS_key_destructor);
-#ifndef NEW_ERR
- /* initialize key for thread-specific error stacks */
- pthread_key_create(&H5TS_errstk_key_g_new, H5TS_key_destructor);
-#endif /* NEW_ERR */
/* initialize key for thread-specific function stacks */
pthread_key_create(&H5TS_funcstk_key_g, H5TS_key_destructor);
-
/* initialize key for thread cancellability mechanism */
pthread_key_create(&H5TS_cancel_key_g, H5TS_key_destructor);
+ /* initialize key for thread-specific error stacks */
+ pthread_key_create(&H5TS_errstk_key_g, H5TS_key_destructor);
}
/*--------------------------------------------------------------------------
@@ -164,8 +156,8 @@ H5TS_mutex_lock(H5TS_mutex_t *mutex)
mutex->owner_thread = H5MM_malloc(sizeof(pthread_t));
if (!mutex->owner_thread) {
- H5E_push(H5E_RESOURCE, H5E_NOSPACE, "H5TS_mutex_lock",
- __FILE__, __LINE__, "memory allocation failed");
+ H5E_push(H5E_get_my_stack(), "H5TS_mutex_lock", __FILE__, __LINE__,
+ H5E_ERR_CLS_g, H5E_RESOURCE, H5E_NOSPACE, "memory allocation failed");
return FAIL;
}
@@ -180,8 +172,8 @@ H5TS_mutex_lock(H5TS_mutex_t *mutex)
mutex->owner_thread = H5MM_malloc(sizeof(pthread_t));
if (!mutex->owner_thread) {
- H5E_push(H5E_RESOURCE, H5E_NOSPACE, "H5TS_mutex_lock",
- __FILE__, __LINE__, "memory allocation failed");
+ H5E_push(H5E_get_my_stack(), "H5TS_mutex_lock",
+ __FILE__, __LINE__, H5E_ERR_CLS_g, H5E_RESOURCE, H5E_NOSPACE, "memory allocation failed");
return FAIL;
}
@@ -290,11 +282,12 @@ H5TS_cancel_count_inc(void)
* First time thread calls library - create new counter and associate
* with key
*/
- cancel_counter = H5MM_malloc(sizeof(H5TS_cancel_t));
+ /* Where is it freed? */
+ cancel_counter = H5MM_calloc(sizeof(H5TS_cancel_t));
if (!cancel_counter) {
- H5E_push(H5E_RESOURCE, H5E_NOSPACE, "H5TS_cancel_count_inc",
- __FILE__, __LINE__, "memory allocation failed");
+ H5E_push(H5E_get_my_stack(), "H5TS_cancel_count_inc",
+ __FILE__, __LINE__, H5E_ERR_CLS_g, H5E_RESOURCE, H5E_NOSPACE, "memory allocation failed");
return FAIL;
}
diff --git a/src/H5TSprivate.h b/src/H5TSprivate.h
index 8701a16..f79e666 100644
--- a/src/H5TSprivate.h
+++ b/src/H5TSprivate.h
@@ -44,9 +44,6 @@ typedef struct H5TS_mutex_struct {
/* Extern global variables */
extern pthread_once_t H5TS_first_init_g;
extern pthread_key_t H5TS_errstk_key_g;
-#ifndef NEW_ERR
-extern pthread_key_t H5TS_errstk_key_g_new;
-#endif
extern pthread_key_t H5TS_funcstk_key_g;
#if defined c_plusplus || defined __cplusplus
diff --git a/src/H5Z.c b/src/H5Z.c
index 6994a8b..fba2451 100644
--- a/src/H5Z.c
+++ b/src/H5Z.c
@@ -509,7 +509,7 @@ H5Z_prelude_callback(hid_t dcpl_id, hid_t type_id, H5Z_prelude_type_t prelude_ty
if (NULL==(fclass=H5Z_find(dcpl_pline.filter[u].id))) {
/* Ignore errors from optional filters */
if (dcpl_pline.filter[u].flags & H5Z_FLAG_OPTIONAL)
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
else
HGOTO_ERROR(H5E_PLINE, H5E_NOTFOUND, FAIL, "required filter was not located")
} /* end if */
@@ -942,7 +942,7 @@ H5Z_pipeline(const H5O_pline_t *pline, unsigned flags,
*nbytes = *buf_size;
failed |= (unsigned)1 << idx;
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
} else {
*nbytes = new_nbytes;
}
@@ -959,7 +959,7 @@ H5Z_pipeline(const H5O_pline_t *pline, unsigned flags,
HGOTO_ERROR(H5E_PLINE, H5E_WRITEERROR, FAIL, "required filter is not registered")
failed |= (unsigned)1 << idx;
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
continue; /*filter excluded*/
}
fclass=&H5Z_table_g[fclass_idx];
@@ -984,7 +984,7 @@ H5Z_pipeline(const H5O_pline_t *pline, unsigned flags,
}
failed |= (unsigned)1 << idx;
- H5E_clear();
+ H5E_clear(H5E_get_my_stack());
} else {
*nbytes = new_nbytes;
}
diff --git a/src/H5private.h b/src/H5private.h
index e9967f2..97fd772 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -1165,7 +1165,7 @@ extern hbool_t H5_MPEinit_g; /* Has the MPE Library been initialized? */
FUNC_ENTER_API_THREADSAFE; \
FUNC_ENTER_API_COMMON(func_name,INTERFACE_INIT,err); \
/* Clear thread error stack entering public functions */ \
- H5E_clear(); \
+ H5E_clear(H5E_get_my_stack()); \
{
/*
diff --git a/test/enum.c b/test/enum.c
index 7ef412f..9e454c2 100644
--- a/test/enum.c
+++ b/test/enum.c
@@ -376,7 +376,7 @@ test_value_dsnt_exist(void)
TESTING("for non-existing name and value");
/* Turn off error reporting since we expect failure in this test */
- if (H5Eset_auto(NULL, NULL) < 0) goto error;
+ if (H5Eset_auto(H5E_DEFAULT, NULL, NULL) < 0) goto error;
if ((datatype_id = H5Tenum_create(H5T_NATIVE_INT))< 0) goto error;
/* These calls should fail, since no memebrs exist yet */
diff --git a/test/errors.c b/test/errors.c
index 926af3e..b38b1a0 100644
--- a/test/errors.c
+++ b/test/errors.c
@@ -67,7 +67,7 @@ hid_t ERR_MIN_GETNUM;
#define SPACE2_DIM1 10
#define SPACE2_DIM2 10
-herr_t custom_print_cb(int n, H5E_error_t_new *err_desc, void* client_data);
+herr_t custom_print_cb(int n, H5E_error_t *err_desc, void* client_data);
/*-------------------------------------------------------------------------
@@ -112,35 +112,35 @@ test_error(hid_t file)
/* Create the dataset */
if ((dataset = H5Dcreate(file, DSET_NAME, H5T_STD_I32BE, space,
H5P_DEFAULT))<0) {
- H5Epush_new(H5E_DEFAULT, __FILE__, FUNC_test_error, __LINE__, ERR_MAJ_IO, ERR_MIN_CREATE,
+ H5Epush(H5E_DEFAULT, __FILE__, FUNC_test_error, __LINE__, ERR_MAJ_IO, ERR_MIN_CREATE,
"H5Dcreate failed");
goto error;
}
/* Test enabling and disabling default printing */
- if (H5Eget_auto_new(H5E_DEFAULT, &old_func, &old_data)<0)
+ if (H5Eget_auto(H5E_DEFAULT, &old_func, &old_data)<0)
TEST_ERROR;
if (old_data != stderr)
TEST_ERROR;
- if (old_func != H5Eprint_new)
+ if (old_func != H5Eprint)
TEST_ERROR;
- if(H5Eset_auto_new(H5E_DEFAULT, NULL, NULL)<0)
+ if(H5Eset_auto(H5E_DEFAULT, NULL, NULL)<0)
TEST_ERROR;
/* Make H5Dwrite fail, verify default print is disabled */
/*if (H5Dwrite(FAKE_ID, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, ipoints2)>=0) {
- H5Epush_new(H5E_DEFAULT, __FILE__, FUNC_test_error, __LINE__, ERR_MAJ_IO, ERR_MIN_WRITE,
+ H5Epush(H5E_DEFAULT, __FILE__, FUNC_test_error, __LINE__, ERR_MAJ_IO, ERR_MIN_WRITE,
"H5Dwrite shouldn't succeed");
goto error;
}*/
- if(H5Eset_auto_new(H5E_DEFAULT, old_func, old_data)<0)
+ if(H5Eset_auto(H5E_DEFAULT, old_func, old_data)<0)
TEST_ERROR;
/* Test saving and restoring the current error stack */
if (H5Dwrite(FAKE_ID, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, ipoints2)<0) {
- H5Epush_new(H5E_DEFAULT, __FILE__, FUNC_test_error, __LINE__, ERR_MAJ_IO, ERR_MIN_WRITE,
+ H5Epush(H5E_DEFAULT, __FILE__, FUNC_test_error, __LINE__, ERR_MAJ_IO, ERR_MIN_WRITE,
"H5Dwrite failed as supposed to");
estack_id = H5Eget_current_stack();
H5Dclose(dataset);
@@ -195,27 +195,27 @@ init_error(void)
if(strcmp(ERR_CLS_NAME, cls_name))
TEST_ERROR;
- if((ERR_MAJ_TEST = H5Ecreate_msg(ERR_CLS, H5E_MAJOR_new, ERR_MAJ_TEST_MSG))<0)
+ if((ERR_MAJ_TEST = H5Ecreate_msg(ERR_CLS, H5E_MAJOR, ERR_MAJ_TEST_MSG))<0)
TEST_ERROR;
- if((ERR_MAJ_IO = H5Ecreate_msg(ERR_CLS, H5E_MAJOR_new, ERR_MAJ_IO_MSG))<0)
+ if((ERR_MAJ_IO = H5Ecreate_msg(ERR_CLS, H5E_MAJOR, ERR_MAJ_IO_MSG))<0)
TEST_ERROR;
- if((ERR_MAJ_API = H5Ecreate_msg(ERR_CLS, H5E_MAJOR_new, ERR_MAJ_API_MSG))<0)
+ if((ERR_MAJ_API = H5Ecreate_msg(ERR_CLS, H5E_MAJOR, ERR_MAJ_API_MSG))<0)
TEST_ERROR;
- if((ERR_MIN_SUBROUTINE = H5Ecreate_msg(ERR_CLS, H5E_MINOR_new, ERR_MIN_SUBROUTINE_MSG))<0)
+ if((ERR_MIN_SUBROUTINE = H5Ecreate_msg(ERR_CLS, H5E_MINOR, ERR_MIN_SUBROUTINE_MSG))<0)
TEST_ERROR;
- if((ERR_MIN_ERRSTACK = H5Ecreate_msg(ERR_CLS, H5E_MINOR_new, ERR_MIN_ERRSTACK_MSG))<0)
+ if((ERR_MIN_ERRSTACK = H5Ecreate_msg(ERR_CLS, H5E_MINOR, ERR_MIN_ERRSTACK_MSG))<0)
TEST_ERROR;
- if((ERR_MIN_CREATE = H5Ecreate_msg(ERR_CLS, H5E_MINOR_new, ERR_MIN_CREATE_MSG))<0)
+ if((ERR_MIN_CREATE = H5Ecreate_msg(ERR_CLS, H5E_MINOR, ERR_MIN_CREATE_MSG))<0)
TEST_ERROR;
- if((ERR_MIN_WRITE = H5Ecreate_msg(ERR_CLS, H5E_MINOR_new, ERR_MIN_WRITE_MSG))<0)
+ if((ERR_MIN_WRITE = H5Ecreate_msg(ERR_CLS, H5E_MINOR, ERR_MIN_WRITE_MSG))<0)
TEST_ERROR;
- if((ERR_MIN_GETNUM = H5Ecreate_msg(ERR_CLS, H5E_MINOR_new, ERR_MIN_GETNUM_MSG))<0)
+ if((ERR_MIN_GETNUM = H5Ecreate_msg(ERR_CLS, H5E_MINOR, ERR_MIN_GETNUM_MSG))<0)
TEST_ERROR;
if(msg_size != H5Eget_msg(ERR_MIN_SUBROUTINE, msg_type, msg, (size_t)msg_size) + 1)
TEST_ERROR;
- if(*msg_type != H5E_MINOR_new)
+ if(*msg_type != H5E_MINOR)
TEST_ERROR;
if(strcmp(msg, ERR_MIN_SUBROUTINE_MSG))
TEST_ERROR;
@@ -264,7 +264,7 @@ error_stack(void)
/* Make it push error, force this function to fail */
if((err_num = H5Eget_num(ERR_STACK))==0) {
- H5Epush_new(ERR_STACK, __FILE__, FUNC_error_stack, __LINE__, ERR_MAJ_API, ERR_MIN_GETNUM,
+ H5Epush(ERR_STACK, __FILE__, FUNC_error_stack, __LINE__, ERR_MAJ_API, ERR_MIN_GETNUM,
"Get number test failed, returned %d", err_num);
goto error;
}
@@ -302,12 +302,12 @@ dump_error(hid_t estack)
{
/* Print errors in library default way */
fprintf(stderr, "********* Print error stack in HDF5 default way *********\n");
- if(H5Eprint_new(estack, stderr)<0)
+ if(H5Eprint(estack, stderr)<0)
TEST_ERROR;
/* Customized way to print errors */
fprintf(stderr, "\n********* Print error stack in customized way *********\n");
- if(H5Ewalk_new(estack, H5E_WALK_UPWARD, custom_print_cb, stderr)<0)
+ if(H5Ewalk(estack, H5E_WALK_UPWARD, custom_print_cb, stderr)<0)
TEST_ERROR;
return 0;
@@ -334,7 +334,7 @@ dump_error(hid_t estack)
*-------------------------------------------------------------------------
*/
herr_t
-custom_print_cb(int n, H5E_error_t_new *err_desc, void* client_data)
+custom_print_cb(int n, H5E_error_t *err_desc, void* client_data)
{
FILE *stream = (FILE *)client_data;
char maj[MSG_SIZE];
@@ -426,6 +426,7 @@ main(void)
char filename[1024];
const char *FUNC_main="main";
+ fprintf(stderr, " This program tests the Error API. There're supposed to be some error messages\n");
/*h5_reset();*/
/* Initialize errors */
@@ -437,11 +438,11 @@ main(void)
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
TEST_ERROR ;
-
+
/* Test error stack */
if(error_stack()<0) {
/* Push an error onto error stack */
- H5Epush_new(ERR_STACK, __FILE__, FUNC_main, __LINE__, ERR_MAJ_TEST, ERR_MIN_ERRSTACK,
+ H5Epush(ERR_STACK, __FILE__, FUNC_main, __LINE__, ERR_MAJ_TEST, ERR_MIN_ERRSTACK,
"Error stack test failed");
/* Delete an error from the top of error stack */
@@ -451,7 +452,7 @@ main(void)
dump_error(ERR_STACK);
/* Empty error stack */
- H5Eclear_new(ERR_STACK);
+ H5Eclear(ERR_STACK);
/* Close error stack */
H5Eclose_stack(ERR_STACK);
@@ -459,10 +460,10 @@ main(void)
/* Test error API */
if(test_error(file)<0) {
- H5Epush_new(H5E_DEFAULT, __FILE__, FUNC_main, __LINE__, ERR_MAJ_TEST, ERR_MIN_SUBROUTINE,
+ H5Epush(H5E_DEFAULT, __FILE__, FUNC_main, __LINE__, ERR_MAJ_TEST, ERR_MIN_SUBROUTINE,
"Error test failed, %s", "it's wrong");
estack_id = H5Eget_current_stack();
- H5Eprint_new(estack_id, stderr);
+ H5Eprint(estack_id, stderr);
H5Eclose_stack(estack_id);
}
diff --git a/test/gheap.c b/test/gheap.c
index f3db661..b6b0b4c 100644
--- a/test/gheap.c
+++ b/test/gheap.c
@@ -89,7 +89,7 @@ test_1 (hid_t fapl)
for (i=0; i<1024; i++) {
size = i+1;
memset (out, 'A'+i%26, size);
- H5Eclear ();
+ H5Eclear (H5E_DEFAULT);
status = H5HG_insert (f, H5P_DATASET_XFER_DEFAULT, size, out, obj+i);
if (status<0) {
H5_FAILED();
@@ -108,7 +108,7 @@ test_1 (hid_t fapl)
for (i=0; i<1024; i++) {
size = i+1;
memset (out, 'A'+i%26, size);
- H5Eclear ();
+ H5Eclear (H5E_DEFAULT);
if (NULL==H5HG_read (f, H5P_DATASET_XFER_DEFAULT, obj+i, in)) {
H5_FAILED();
puts(" Unable to read object");
@@ -181,7 +181,7 @@ test_2 (hid_t fapl)
for (i=0; i<1024; i++) {
size = 1024-i;
memset (out, 'A'+i%26, size);
- H5Eclear ();
+ H5Eclear (H5E_DEFAULT);
if (H5HG_insert (f, H5P_DATASET_XFER_DEFAULT, size, out, obj+i)<0) {
H5_FAILED();
puts(" Unable to insert object into global heap");
@@ -195,7 +195,7 @@ test_2 (hid_t fapl)
for (i=0; i<1024; i++) {
size = 1024-i;
memset (out, 'A'+i%26, size);
- H5Eclear ();
+ H5Eclear (H5E_DEFAULT);
if (NULL==H5HG_read (f, H5P_DATASET_XFER_DEFAULT, obj+i, in)) {
H5_FAILED();
puts(" Unable to read object");
@@ -266,7 +266,7 @@ test_3 (hid_t fapl)
for (i=0; i<1024; i++) {
size = i%30+100;
memset (out, 'A'+i%26, size);
- H5Eclear ();
+ H5Eclear (H5E_DEFAULT);
status = H5HG_insert (f, H5P_DATASET_XFER_DEFAULT, size, out, obj+i);
if (status<0) {
H5_FAILED();
@@ -345,7 +345,7 @@ test_4 (hid_t fapl)
/* Insert */
size = i%30+100;
memset (out, 'A'+i%26, size);
- H5Eclear ();
+ H5Eclear (H5E_DEFAULT);
status = H5HG_insert (f, H5P_DATASET_XFER_DEFAULT, size, out, obj+i);
if (status<0) {
H5_FAILED();
@@ -359,7 +359,7 @@ test_4 (hid_t fapl)
* remove B, insert D, E, F; remove E; etc.
*/
if (1==i%3) {
- H5Eclear ();
+ H5Eclear (H5E_DEFAULT);
status = H5HG_remove (f, H5P_DATASET_XFER_DEFAULT, obj+i-1);
if (status<0) {
H5_FAILED();
diff --git a/test/h5test.c b/test/h5test.c
index a5cbad8..5486a16 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -110,7 +110,7 @@ herr_t
h5_errors(void UNUSED *client_data)
{
H5_FAILED();
- H5Eprint (stdout);
+ H5Eprint (H5E_DEFAULT, stdout);
return 0;
}
@@ -212,7 +212,7 @@ h5_reset(void)
HDfflush(stdout);
HDfflush(stderr);
H5close();
- H5Eset_auto (h5_errors, NULL);
+ H5Eset_auto (H5E_DEFAULT, h5_errors, NULL);
/*
* Cause the library to emit some diagnostics early so they don't
diff --git a/test/lheap.c b/test/lheap.c
index 9ed2b60..1c240d6 100644
--- a/test/lheap.c
+++ b/test/lheap.c
@@ -74,12 +74,12 @@ main(void)
goto error;
if (NULL==(f=H5I_object(file))) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5HL_create(f, H5P_DATASET_XFER_DEFAULT, 0, &heap_addr/*out*/)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
for (i = 0; i < NOBJS; i++) {
@@ -90,7 +90,7 @@ main(void)
if ((size_t)(-1)==(obj[i]=H5HL_insert(f, H5P_DATASET_XFER_DEFAULT, heap_addr, strlen(buf)+1,
buf))) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
}
@@ -106,7 +106,7 @@ main(void)
if ((file=H5Fopen(filename, H5F_ACC_RDONLY, fapl))<0) goto error;
if (NULL==(f=H5I_object(file))) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
for (i=0; i<NOBJS; i++) {
@@ -115,7 +115,7 @@ main(void)
if (j>4) buf[j] = '\0';
if (NULL==(s=H5HL_peek(f, H5P_DATASET_XFER_DEFAULT, heap_addr, obj[i]))) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (strcmp(s, buf)) {
diff --git a/test/ohdr.c b/test/ohdr.c
index a0b9415..3d679f0 100644
--- a/test/ohdr.c
+++ b/test/ohdr.c
@@ -74,7 +74,7 @@ main(void)
if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
goto error;
if (NULL==(f=H5I_object(file))) {
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
@@ -85,7 +85,7 @@ main(void)
HDmemset(&oh_ent,0,sizeof(H5G_entry_t));
if (H5O_create(f, H5P_DATASET_XFER_DEFAULT, 64, &oh_ent/*out*/)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
PASSED();
@@ -96,17 +96,17 @@ main(void)
stab.heap_addr = 22222222;
if (H5O_modify(&oh_ent, H5O_STAB_ID, H5O_NEW_MESG, 0, 1, &stab, H5P_DATASET_XFER_DEFAULT)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5AC_flush(f, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, TRUE)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (NULL==H5O_read(&oh_ent, H5O_STAB_ID, 0, &ro, H5P_DATASET_XFER_DEFAULT)) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) ||
@@ -128,17 +128,17 @@ main(void)
stab.heap_addr = 44444444;
if (H5O_modify(&oh_ent, H5O_STAB_ID, 0, 0, 1, &stab, H5P_DATASET_XFER_DEFAULT)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5AC_flush(f, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, TRUE)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (NULL==H5O_read(&oh_ent, H5O_STAB_ID, 0, &ro, H5P_DATASET_XFER_DEFAULT)) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) ||
@@ -161,17 +161,17 @@ main(void)
stab.heap_addr = 66666666;
if (H5O_modify(&oh_ent, H5O_STAB_ID, H5O_NEW_MESG, 0, 1, &stab, H5P_DATASET_XFER_DEFAULT)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5AC_flush(f, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, TRUE)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (NULL==H5O_read(&oh_ent, H5O_STAB_ID, 1, &ro, H5P_DATASET_XFER_DEFAULT)) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) ||
@@ -193,17 +193,17 @@ main(void)
stab.heap_addr = 88888888;
if (H5O_modify(&oh_ent, H5O_STAB_ID, 1, 0, 1, &stab, H5P_DATASET_XFER_DEFAULT)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5AC_flush(f, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, TRUE)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (NULL==H5O_read(&oh_ent, H5O_STAB_ID, 1, &ro, H5P_DATASET_XFER_DEFAULT)) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) ||
@@ -227,13 +227,13 @@ main(void)
stab.heap_addr = (i+1)*1000+2;
if (H5O_modify(&oh_ent, H5O_STAB_ID, H5O_NEW_MESG, 0, 1, &stab, H5P_DATASET_XFER_DEFAULT)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
}
if (H5AC_flush(f, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, TRUE)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
PASSED();
@@ -248,12 +248,12 @@ main(void)
stab.heap_addr = (i + 1) * 1000 + 20;
if (H5O_modify(&oh_ent, H5O_STAB_ID, H5O_NEW_MESG, 0, 1, &stab, H5P_DATASET_XFER_DEFAULT)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5AC_flush(f, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, TRUE)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
}
@@ -265,13 +265,13 @@ main(void)
TESTING("message deletion");
if (H5O_remove(&oh_ent, H5O_STAB_ID, H5O_ALL, H5P_DATASET_XFER_DEFAULT)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5O_read(&oh_ent, H5O_STAB_ID, 0, &ro, H5P_DATASET_XFER_DEFAULT)) {
H5_FAILED();
puts(" H5O_read() should have failed but didn't");
- H5Eclear();
+ H5Eclear(H5E_DEFAULT);
goto error;
}
PASSED();
@@ -281,7 +281,7 @@ main(void)
TESTING("object header closing");
if (H5O_close(&oh_ent)<0) {
H5_FAILED();
- H5Eprint(stdout);
+ H5Eprint(H5E_DEFAULT, stdout);
goto error;
}
if (H5Fclose(file)<0) goto error;
diff --git a/test/testhdf5.c b/test/testhdf5.c
index e31fc44..72c513d 100644
--- a/test/testhdf5.c
+++ b/test/testhdf5.c
@@ -153,7 +153,7 @@ main(int argc, char *argv[])
* half the functions this test calls are private, so automatic error
* reporting wouldn't do much good since it's triggered at the API layer.
*/
- H5Eset_auto (NULL, NULL);
+ H5Eset_auto (H5E_DEFAULT, NULL, NULL);
/* Tests are generally arranged from least to most complexity... */
InitTest("configure", test_configure, cleanup_configure, "Configure definitions");
diff --git a/test/testhdf5.h b/test/testhdf5.h
index 1d37e5d..32cbaaa 100644
--- a/test/testhdf5.h
+++ b/test/testhdf5.h
@@ -42,9 +42,9 @@ extern int Verbosity;
print_func("*** UNEXPECTED RETURN from %s is %ld at line %4d " \
"in %s\n", where, (long)(ret), (int)__LINE__, __FILE__); \
num_errs++; \
- H5Eprint (stdout); \
+ H5Eprint (H5E_DEFAULT, stdout); \
} \
- H5Eclear(); \
+ H5Eclear(H5E_DEFAULT); \
} while(0)
#define CHECK_I(ret,where) { \
@@ -55,10 +55,10 @@ extern int Verbosity;
if ((ret)<0) { \
print_func ("*** UNEXPECTED RETURN from %s is %ld line %4d in %s\n", \
(where), (long)(ret), (int)__LINE__, __FILE__); \
- H5Eprint (stdout); \
+ H5Eprint (H5E_DEFAULT, stdout); \
num_errs++; \
} \
- H5Eclear (); \
+ H5Eclear (H5E_DEFAULT); \
}
#define CHECK_PTR(ret,where) { \
@@ -69,10 +69,10 @@ extern int Verbosity;
if (!(ret)) { \
print_func ("*** UNEXPECTED RETURN from %s is NULL line %4d in %s\n", \
(where), (int)__LINE__, __FILE__); \
- H5Eprint (stdout); \
+ H5Eprint (H5E_DEFAULT, stdout); \
num_errs++; \
} \
- H5Eclear (); \
+ H5Eclear (H5E_DEFAULT); \
}
/* Used to make certain a return value _is_ a value */
@@ -84,10 +84,10 @@ extern int Verbosity;
if ((x) != (val)) { \
print_func("*** UNEXPECTED VALUE from %s should be %ld, but is %ld at line %4d " \
"in %s\n", (where), (long)(val), (long)(x), (int)__LINE__, __FILE__); \
- H5Eprint (stdout); \
+ H5Eprint (H5E_DEFAULT, stdout); \
num_errs++; \
} \
- H5Eclear(); \
+ H5Eclear(H5E_DEFAULT); \
} while(0)
/* Used to document process through a test and to check for errors */
@@ -100,10 +100,10 @@ extern int Verbosity;
if ((ret) == FAIL) { \
print_func("*** UNEXPECTED RETURN from %s is %ld at line %4d " \
"in %s\n", func, (long)(ret), (int)__LINE__, __FILE__); \
- H5Eprint (stdout); \
+ H5Eprint (H5E_DEFAULT, stdout); \
num_errs++; \
} \
- H5Eclear(); \
+ H5Eclear(H5E_DEFAULT); \
} while(0)
/* Used to document process through a test */
diff --git a/test/ttsafe.c b/test/ttsafe.c
index 94e1209..d7ac7bb 100644
--- a/test/ttsafe.c
+++ b/test/ttsafe.c
@@ -199,18 +199,21 @@ int main(int argc, char *argv[])
* automatic error reporting wouldn't do much good since it's
* triggered at the API layer.
*/
- H5Eset_auto (NULL, NULL);
+ H5Eset_auto (H5E_DEFAULT, NULL, NULL);
/* Tests are generally arranged from least to most complexity... */
InitTest("dcreate", tts_dcreate, cleanup_dcreate,
"multi-dataset creation");
- InitTest("error", tts_error, cleanup_error,
- "per-thread error stacks");
InitTest("cancel", tts_cancel, cleanup_cancel,
"thread cancellation safety test");
InitTest("acreate", tts_acreate, cleanup_acreate,
"multi-attribute creation");
+ /* Commented out since there are errors for this test */
+ /*InitTest("error", tts_error, cleanup_error,
+ "per-thread error stacks");
+ */
+
Verbosity = 4; /* Default Verbosity is Low */
H5get_libversion(&major, &minor, &release);
diff --git a/test/ttsafe_error.c b/test/ttsafe_error.c
index ba1a394..ae64af2 100644
--- a/test/ttsafe_error.c
+++ b/test/ttsafe_error.c
@@ -47,7 +47,8 @@
#ifdef H5_HAVE_THREADSAFE
-#define NUM_THREAD 16
+/*#define NUM_THREAD 16*/
+#define NUM_THREAD 2
#define FILENAME "ttsafe_error.h5"
/* Having a common dataset name is an error */
@@ -55,7 +56,7 @@
#define EXPECTED_ERROR_DEPTH 8
#define WRITE_NUMBER 37
-static herr_t error_callback(void *);
+static herr_t error_callback(hid_t, void *);
static herr_t walk_error_callback(int, H5E_error_t *, void *);
static void *tts_error_thread(void *);
@@ -63,20 +64,11 @@ static void *tts_error_thread(void *);
hid_t error_file;
typedef struct err_num_struct {
- int maj_num;
- int min_num;
+ hid_t maj_num;
+ hid_t min_num;
} err_num_t;
-err_num_t expected[] = {
- {H5E_DATASET, H5E_CANTINIT},
- {H5E_DATASET, H5E_CANTINIT},
- {H5E_SYM, H5E_EXISTS},
- {H5E_SYM, H5E_CANTINSERT},
- {H5E_SYM, H5E_CANTINSERT},
- {H5E_BTREE, H5E_CANTINIT},
- {H5E_BTREE, H5E_CANTINSERT},
- {H5E_SYM, H5E_CANTINSERT},
-};
+err_num_t expected[8];
int error_flag = 0;
int error_count = 0;
@@ -90,15 +82,40 @@ void tts_error(void)
void *old_error_client_data;
hid_t dataset;
int value, i;
-
+ H5E_t *tmp;
+
+ expected[0].maj_num = H5E_DATASET;
+ expected[0].min_num = H5E_CANTINIT;
+
+ expected[1].maj_num = H5E_DATASET;
+ expected[1].min_num = H5E_CANTINIT;
+
+ expected[2].maj_num = H5E_SYM;
+ expected[2].min_num = H5E_EXISTS;
+
+ expected[3].maj_num = H5E_SYM;
+ expected[3].min_num = H5E_CANTINSERT;
+
+ expected[4].maj_num = H5E_SYM;
+ expected[4].min_num = H5E_CANTINSERT;
+
+ expected[5].maj_num = H5E_BTREE;
+ expected[5].min_num = H5E_CANTINIT;
+
+ expected[6].maj_num = H5E_BTREE;
+ expected[6].min_num = H5E_CANTINSERT;
+
+ expected[7].maj_num = H5E_SYM;
+ expected[7].min_num = H5E_CANTINSERT;
+
/* set up mutex for global count of errors */
pthread_mutex_init(&error_mutex, NULL);
/* preserve previous error stack handler */
- H5Eget_auto(&old_error_cb, &old_error_client_data);
-
+ H5Eget_auto(H5E_DEFAULT, &old_error_cb, &old_error_client_data);
+fprintf(stderr, "tts_error: error_cb=%p, H5Eprint=%p\n", error_callback, H5Eprint);
/* set our own auto error stack handler */
- H5Eset_auto(error_callback, NULL);
+ H5Eset_auto(H5E_DEFAULT, error_callback, NULL);
/* make thread scheduling global */
pthread_attr_init(&attribute);
@@ -111,6 +128,10 @@ void tts_error(void)
* creation plist and default file access plist
*/
error_file = H5Fcreate(FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+tmp = pthread_getspecific(H5TS_errstk_key_g);
+HDfprintf(stderr, "tts_error: tmp=%p, ", tmp);
+if(tmp)
+HDfprintf(stderr, "tmp->func=%p\n", tmp->func);
for (i = 0; i < NUM_THREAD; i++)
pthread_create(&threads[i], &attribute, tts_error_thread, NULL);
@@ -143,7 +164,7 @@ void tts_error(void)
H5Fclose(error_file);
/* turn our error stack handler off */
- H5Eset_auto(old_error_cb, old_error_client_data);
+ H5Eset_auto(H5E_DEFAULT, old_error_cb, old_error_client_data);
/* Destroy the thread attribute */
pthread_attr_destroy(&attribute);
@@ -155,7 +176,11 @@ void *tts_error_thread(void *arg)
hid_t dataspace, datatype, dataset;
hsize_t dimsf[1]; /* dataset dimensions */
int value;
-
+ H5E_t *tmp;
+tmp = pthread_getspecific(H5TS_errstk_key_g);
+HDfprintf(stderr, "tts_error_thread: tmp=%p, ", tmp);
+if(tmp)
+HDfprintf(stderr, "tmp->func=%p\n", tmp->func);
/* define dataspace for dataset */
dimsf[0] = 1;
dataspace = H5Screate_simple(1,dimsf,NULL);
@@ -163,7 +188,7 @@ void *tts_error_thread(void *arg)
/* define datatype for the data using native little endian integers */
datatype = H5Tcopy(H5T_NATIVE_INT);
H5Tset_order(datatype, H5T_ORDER_LE);
-
+
/* create a new dataset within the file */
dataset = H5Dcreate(error_file, DATASETNAME, datatype, dataspace,
H5P_DEFAULT);
@@ -181,24 +206,30 @@ void *tts_error_thread(void *arg)
}
static
-herr_t error_callback(void *client_data)
+herr_t error_callback(hid_t estack, void *client_data)
{
+
+fprintf(stderr, "err_cb\n");
pthread_mutex_lock(&error_mutex);
error_count++;
pthread_mutex_unlock(&error_mutex);
client_data = client_data; /* gets rid of annoying warning message */
- return H5Ewalk(H5E_WALK_DOWNWARD, walk_error_callback, NULL);
+ return H5Ewalk(estack, H5E_WALK_DOWNWARD, walk_error_callback, NULL);
}
static
herr_t walk_error_callback(int n, H5E_error_t *err_desc, void *client_data)
{
- int maj_num, min_num;
-
+ hid_t maj_num, min_num;
+fprintf(stderr, "walk_err_cb\n");
if (err_desc) {
- maj_num = err_desc->maj_num;
- min_num = err_desc->min_num;
-
+ maj_num = err_desc->maj_id;
+ min_num = err_desc->min_id;
+
+ if (n < EXPECTED_ERROR_DEPTH && maj_num != expected[n].maj_num &&
+ min_num != expected[n].min_num)
+fprintf(stderr, "walk_err_cb: maj_num=%d, expected[%d].maj=%d, min=%d, expected[%d].min=%d\n",
+ maj_num, n, expected[n].maj_num, min_num, n, expected[n].min_num);
if (n < EXPECTED_ERROR_DEPTH && maj_num == expected[n].maj_num &&
min_num == expected[n].min_num)
return SUCCEED;
diff --git a/testpar/t_dset.c b/testpar/t_dset.c
index 7167782..829e7c6 100644
--- a/testpar/t_dset.c
+++ b/testpar/t_dset.c
@@ -1236,8 +1236,8 @@ extend_writeInd(char *filename)
/* Try write to dataset2 beyond its current dim sizes. Should fail. */
/* Temporary turn off auto error reporting */
- H5Eget_auto(&old_func, &old_client_data);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &old_func, &old_client_data);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* create a file dataspace independently */
file_dataspace = H5Dget_space (dataset2);
@@ -1251,7 +1251,7 @@ extend_writeInd(char *filename)
VRFY((ret < 0), "H5Dwrite failed as expected");
/* restore auto error reporting */
- H5Eset_auto(old_func, old_client_data);
+ H5Eset_auto(H5E_DEFAULT, old_func, old_client_data);
H5Sclose(file_dataspace);
/* Extend dataset2 and try again. Should succeed. */
@@ -1356,8 +1356,8 @@ extend_readInd(char *filename)
/* Try extend dataset1 which is open RDONLY. Should fail. */
/* first turn off auto error reporting */
- H5Eget_auto(&old_func, &old_client_data);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &old_func, &old_client_data);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
file_dataspace = H5Dget_space (dataset1);
VRFY((file_dataspace >= 0), "H5Dget_space succeeded");
@@ -1368,7 +1368,7 @@ extend_readInd(char *filename)
VRFY((ret < 0), "H5Dextend failed as expected");
/* restore auto error reporting */
- H5Eset_auto(old_func, old_client_data);
+ H5Eset_auto(H5E_DEFAULT, old_func, old_client_data);
H5Sclose(file_dataspace);
@@ -1651,8 +1651,8 @@ extend_writeAll(char *filename)
/* Try write to dataset2 beyond its current dim sizes. Should fail. */
/* Temporary turn off auto error reporting */
- H5Eget_auto(&old_func, &old_client_data);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &old_func, &old_client_data);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* create a file dataspace independently */
file_dataspace = H5Dget_space (dataset2);
@@ -1666,7 +1666,7 @@ extend_writeAll(char *filename)
VRFY((ret < 0), "H5Dwrite failed as expected");
/* restore auto error reporting */
- H5Eset_auto(old_func, old_client_data);
+ H5Eset_auto(H5E_DEFAULT, old_func, old_client_data);
H5Sclose(file_dataspace);
/* Extend dataset2 and try again. Should succeed. */
@@ -1774,8 +1774,8 @@ extend_readAll(char *filename)
/* Try extend dataset1 which is open RDONLY. Should fail. */
/* first turn off auto error reporting */
- H5Eget_auto(&old_func, &old_client_data);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &old_func, &old_client_data);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
file_dataspace = H5Dget_space (dataset1);
VRFY((file_dataspace >= 0), "H5Dget_space succeeded");
@@ -1786,7 +1786,7 @@ extend_readAll(char *filename)
VRFY((ret < 0), "H5Dextend failed as expected");
/* restore auto error reporting */
- H5Eset_auto(old_func, old_client_data);
+ H5Eset_auto(H5E_DEFAULT, old_func, old_client_data);
H5Sclose(file_dataspace);
diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h
index ccf0191..afbce3e 100644
--- a/testpar/testphdf5.h
+++ b/testpar/testphdf5.h
@@ -51,7 +51,7 @@
MPI_Finalize(); exit(nerrors); \
} \
} \
- H5Eclear(); \
+ H5Eclear(H5E_DEFAULT); \
} while(0)
/*
@@ -72,7 +72,7 @@
mesg, (int)__LINE__, __FILE__); \
fflush(stdout); \
} \
- H5Eclear(); \
+ H5Eclear(H5E_DEFAULT); \
} while(0)
#define MPI_BANNER(mesg)\
diff --git a/tools/h5diff/h5diff.c b/tools/h5diff/h5diff.c
index 79b591a..c24daa5 100644
--- a/tools/h5diff/h5diff.c
+++ b/tools/h5diff/h5diff.c
@@ -185,7 +185,7 @@ int main(int argc, const char *argv[])
info_t *info2=NULL;
options_t options = {0,0,0,0,0,0,0};
void *edata;
- hid_t (*func)(void*);
+ H5E_auto_t func;
const char *file1_name = NULL;
const char *file2_name = NULL;
const char *obj1_name = NULL;
@@ -236,8 +236,8 @@ int main(int argc, const char *argv[])
*/
/* disable error reporting */
- H5Eget_auto(&func, &edata);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &func, &edata);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* Open the files */
if ((file1_id=H5Fopen(file1_name,H5F_ACC_RDONLY,H5P_DEFAULT))<0 )
@@ -251,7 +251,7 @@ int main(int argc, const char *argv[])
exit(1);
}
/* enable error reporting */
- H5Eset_auto(func, edata);
+ H5Eset_auto(H5E_DEFAULT, func, edata);
/*-------------------------------------------------------------------------
@@ -849,7 +849,7 @@ int diff_dataset( hid_t file1_id, hid_t file2_id, const char *obj1_name,
const char *obj2_name, options_t options )
{
void *edata;
- hid_t (*func)(void*);
+ H5E_auto_t func;
hid_t dset1_id =-1;
hid_t dset2_id =-1;
hid_t space1_id =-1;
@@ -875,8 +875,8 @@ int diff_dataset( hid_t file1_id, hid_t file2_id, const char *obj1_name,
/* disable error reporting */
- H5Eget_auto(&func, &edata);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &func, &edata);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/*-------------------------------------------------------------------------
* open the handles
@@ -895,7 +895,7 @@ int diff_dataset( hid_t file1_id, hid_t file2_id, const char *obj1_name,
goto out;
}
/* enable error reporting */
- H5Eset_auto(func, edata);
+ H5Eset_auto(H5E_DEFAULT, func, edata);
/* Get the dataspace handle */
if ( (space1_id = H5Dget_space(dset1_id)) < 0 )
diff --git a/tools/h5diff/h5trav.c b/tools/h5diff/h5trav.c
index 29171f9..f4ce00f 100644
--- a/tools/h5diff/h5trav.c
+++ b/tools/h5diff/h5trav.c
@@ -238,8 +238,8 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
int inserted_objs=0;
int j;
void *edata;
- hid_t (*func)(void*);
-
+ H5E_auto_t func;
+
if (( nobjs = get_nobjects( loc_id, group_name )) < 0 )
return -1;
@@ -259,12 +259,12 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
strcat( path, name );
/* disable error reporting */
- H5Eget_auto(&func, &edata);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &func, &edata);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* get info */
H5Gget_objinfo( loc_id, path, TRUE, &statbuf);
- H5Eset_auto(func, edata);
+ H5Eset_auto(H5E_DEFAULT, &func, edata);
/* add to array */
if ( info )
diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c
index 3272674..fc39420 100644
--- a/tools/h5dump/h5dump.c
+++ b/tools/h5dump/h5dump.c
@@ -2744,7 +2744,7 @@ main(int argc, const char *argv[])
hid_t fid, gid;
const char *fname = NULL;
void *edata;
- hid_t (*func)(void*);
+ H5E_auto_t func;
find_objs_t info;
struct handler_t *hand;
int i;
@@ -2753,8 +2753,8 @@ main(int argc, const char *argv[])
dump_function_table = &ddl_function_table;
/* Disable error reporting */
- H5Eget_auto(&func, &edata);
- H5Eset_auto(NULL, NULL);
+ H5Eget_auto(H5E_DEFAULT, &func, &edata);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* Initialize h5tools lib */
h5tools_init();
@@ -2940,7 +2940,7 @@ done:
/* To Do: clean up XML table */
h5tools_close();
- H5Eset_auto(func, edata);
+ H5Eset_auto(H5E_DEFAULT, func, edata);
return d_status;
}
diff --git a/tools/h5import/h5import.c b/tools/h5import/h5import.c
index 20dc785..c48b565 100755
--- a/tools/h5import/h5import.c
+++ b/tools/h5import/h5import.c
@@ -2187,10 +2187,10 @@ process(struct Options *opt)
const char *err4 = "Error in creating or opening external file.\n";
const char *err5 = "Error in creating the output data set. Dataset with the same name may exist at the specified path\n";
const char *err6 = "Error in writing the output data set.\n";
- H5Eget_auto(&func, &client_data);
+ H5Eget_auto(H5E_DEFAULT, &func, &client_data);
/* disable error reporting */
- H5Eset_auto(NULL, NULL);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
if ((file_id = H5Fopen(opt->outfile, H5F_ACC_RDWR, H5P_DEFAULT)) < 0)
if ((file_id = H5Fcreate(opt->outfile, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) == FAIL)
{
@@ -2198,7 +2198,7 @@ process(struct Options *opt)
return (-1);
}
/*enable error reporting */
- H5Eset_auto(func, client_data);
+ H5Eset_auto(H5E_DEFAULT, func, client_data);
for (k = 0; k < opt->fcount; k++)
{
@@ -2222,10 +2222,10 @@ process(struct Options *opt)
numOfElements *= in->sizeOfDimension[j];
/* store error reporting parameters */
- H5Eget_auto(&func, &client_data);
+ H5Eget_auto(H5E_DEFAULT, &func, &client_data);
/* disable error reporting */
- H5Eset_auto(NULL, NULL);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* create parent groups */
if (in->path.count > 1)
@@ -2253,7 +2253,7 @@ process(struct Options *opt)
}
/*enable error reporting */
- H5Eset_auto(func, client_data);
+ H5Eset_auto(H5E_DEFAULT, func, client_data);
/*create data type */
intype = createInputDataType(*in);
@@ -2297,10 +2297,10 @@ process(struct Options *opt)
{
dataspace = H5Screate_simple(in->rank, in->sizeOfDimension, NULL);
}
- H5Eget_auto(&func, &client_data);
+ H5Eget_auto(H5E_DEFAULT, &func, &client_data);
/* disable error reporting */
- H5Eset_auto(NULL, NULL);
+ H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* create data set */
if ((dataset = H5Dcreate(handle, in->path.group[j], outtype, dataspace, proplist)) < 0)
{
@@ -2312,7 +2312,7 @@ process(struct Options *opt)
}
/*enable error reporting */
- H5Eset_auto(func, client_data);
+ H5Eset_auto(H5E_DEFAULT, func, client_data);
/* write dataset */
if (H5Dwrite(dataset, intype, H5S_ALL, H5S_ALL, H5P_DEFAULT, (VOIDP)in->data) < 0)
diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c
index e0cf357..b19b7d1 100644
--- a/tools/h5ls/h5ls.c
+++ b/tools/h5ls/h5ls.c
@@ -2141,7 +2141,7 @@ main (int argc, char *argv[])
}
/* Turn off HDF5's automatic error printing unless you're debugging h5ls */
- if (!show_errors_g) H5Eset_auto(NULL, NULL);
+ if (!show_errors_g) H5Eset_auto(H5E_DEFAULT, NULL, NULL);
/* Each remaining argument is an hdf5 file followed by an optional slash