2010-06-07 19:25:58 +08:00
|
|
|
/* Copyright 2010, University Corporation for Atmospheric Research. See
|
2018-05-13 20:10:06 +08:00
|
|
|
COPYRIGHT file for copying and redistribution conditions. */
|
|
|
|
/**
|
|
|
|
* @file @internal This file is part of netcdf-4, a netCDF-like
|
|
|
|
* interface for HDF5, or a HDF5 backend for netCDF, depending on your
|
|
|
|
* point of view.
|
|
|
|
*
|
|
|
|
* This file contains macros and prototyes relating to logging.
|
|
|
|
*
|
|
|
|
* @author Ed Hartnett
|
2010-06-07 19:25:58 +08:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _NCLOGGING_
|
|
|
|
#define _NCLOGGING_
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <assert.h>
|
|
|
|
|
|
|
|
#ifdef LOGGING
|
|
|
|
|
|
|
|
/* To log something... */
|
|
|
|
void nc_log(int severity, const char *fmt, ...);
|
|
|
|
void nc_log_hdf5(void);
|
|
|
|
|
|
|
|
#define LOG(e) nc_log e
|
|
|
|
|
|
|
|
/* To log based on error code, and set retval. */
|
Corrected "BAIL" macros to avoid infinite loop when logging is disabled and an
error occurs after an "exit:" label.
Corrected a dozen Coverity errors (mainly allocation issues, along with a few
other things):
711711, 711802, 711803, 711905, 970825, 996123, 996124, 1025787,
1047274, 1130013, 1130014, 1139538
Refactored internal fill-value code to correctly handle string types, and
especially to allow NULL pointers and null strings (ie. "") to be
distinguished. The code now avoids partially aliasing the two together
(which only happened on the 'write' side of things and wasn't reflected on
the 'read' side, adding to the previous confusion).
Probably still weak on handling fill-values of variable-length and compound
datatypes.
Refactored the recursive metadata reads a bit more, to process HDF5 named
datatypes and datasets immediately, avoiding chewing up memory for those
types of objects, etc.
Finished uncommenting and updating the nc_test4/tst_fills2.c code (as I'm
proceeding alphabetically through the nc_test4 code files).
2013-12-29 15:12:43 +08:00
|
|
|
#define BAIL2(e) \
|
|
|
|
do { \
|
|
|
|
retval = e; \
|
|
|
|
LOG((0, "file %s, line %d.\n%s", __FILE__, __LINE__, nc_strerror(e))); \
|
|
|
|
nc_log_hdf5(); \
|
|
|
|
} while (0)
|
2010-06-07 19:25:58 +08:00
|
|
|
|
|
|
|
/* To set retval and jump to exit, without logging error message. */
|
Corrected "BAIL" macros to avoid infinite loop when logging is disabled and an
error occurs after an "exit:" label.
Corrected a dozen Coverity errors (mainly allocation issues, along with a few
other things):
711711, 711802, 711803, 711905, 970825, 996123, 996124, 1025787,
1047274, 1130013, 1130014, 1139538
Refactored internal fill-value code to correctly handle string types, and
especially to allow NULL pointers and null strings (ie. "") to be
distinguished. The code now avoids partially aliasing the two together
(which only happened on the 'write' side of things and wasn't reflected on
the 'read' side, adding to the previous confusion).
Probably still weak on handling fill-values of variable-length and compound
datatypes.
Refactored the recursive metadata reads a bit more, to process HDF5 named
datatypes and datasets immediately, avoiding chewing up memory for those
types of objects, etc.
Finished uncommenting and updating the nc_test4/tst_fills2.c code (as I'm
proceeding alphabetically through the nc_test4 code files).
2013-12-29 15:12:43 +08:00
|
|
|
#define BAIL_QUIET(e) \
|
|
|
|
do { \
|
|
|
|
retval = e; \
|
|
|
|
goto exit; \
|
|
|
|
} while (0)
|
2010-06-07 19:25:58 +08:00
|
|
|
|
Corrected "BAIL" macros to avoid infinite loop when logging is disabled and an
error occurs after an "exit:" label.
Corrected a dozen Coverity errors (mainly allocation issues, along with a few
other things):
711711, 711802, 711803, 711905, 970825, 996123, 996124, 1025787,
1047274, 1130013, 1130014, 1139538
Refactored internal fill-value code to correctly handle string types, and
especially to allow NULL pointers and null strings (ie. "") to be
distinguished. The code now avoids partially aliasing the two together
(which only happened on the 'write' side of things and wasn't reflected on
the 'read' side, adding to the previous confusion).
Probably still weak on handling fill-values of variable-length and compound
datatypes.
Refactored the recursive metadata reads a bit more, to process HDF5 named
datatypes and datasets immediately, avoiding chewing up memory for those
types of objects, etc.
Finished uncommenting and updating the nc_test4/tst_fills2.c code (as I'm
proceeding alphabetically through the nc_test4 code files).
2013-12-29 15:12:43 +08:00
|
|
|
#else /* LOGGING */
|
2010-06-07 19:25:58 +08:00
|
|
|
|
|
|
|
/* These definitions will be used unless LOGGING is defined. */
|
|
|
|
#define LOG(e)
|
Corrected "BAIL" macros to avoid infinite loop when logging is disabled and an
error occurs after an "exit:" label.
Corrected a dozen Coverity errors (mainly allocation issues, along with a few
other things):
711711, 711802, 711803, 711905, 970825, 996123, 996124, 1025787,
1047274, 1130013, 1130014, 1139538
Refactored internal fill-value code to correctly handle string types, and
especially to allow NULL pointers and null strings (ie. "") to be
distinguished. The code now avoids partially aliasing the two together
(which only happened on the 'write' side of things and wasn't reflected on
the 'read' side, adding to the previous confusion).
Probably still weak on handling fill-values of variable-length and compound
datatypes.
Refactored the recursive metadata reads a bit more, to process HDF5 named
datatypes and datasets immediately, avoiding chewing up memory for those
types of objects, etc.
Finished uncommenting and updating the nc_test4/tst_fills2.c code (as I'm
proceeding alphabetically through the nc_test4 code files).
2013-12-29 15:12:43 +08:00
|
|
|
|
|
|
|
#define BAIL2(e) \
|
|
|
|
do { \
|
|
|
|
retval = e; \
|
|
|
|
} while (0)
|
|
|
|
|
2010-06-07 19:25:58 +08:00
|
|
|
#define BAIL_QUIET BAIL
|
Corrected "BAIL" macros to avoid infinite loop when logging is disabled and an
error occurs after an "exit:" label.
Corrected a dozen Coverity errors (mainly allocation issues, along with a few
other things):
711711, 711802, 711803, 711905, 970825, 996123, 996124, 1025787,
1047274, 1130013, 1130014, 1139538
Refactored internal fill-value code to correctly handle string types, and
especially to allow NULL pointers and null strings (ie. "") to be
distinguished. The code now avoids partially aliasing the two together
(which only happened on the 'write' side of things and wasn't reflected on
the 'read' side, adding to the previous confusion).
Probably still weak on handling fill-values of variable-length and compound
datatypes.
Refactored the recursive metadata reads a bit more, to process HDF5 named
datatypes and datasets immediately, avoiding chewing up memory for those
types of objects, etc.
Finished uncommenting and updating the nc_test4/tst_fills2.c code (as I'm
proceeding alphabetically through the nc_test4 code files).
2013-12-29 15:12:43 +08:00
|
|
|
|
2018-07-17 03:47:18 +08:00
|
|
|
#ifdef USE_NETCDF_4
|
2018-07-17 03:36:03 +08:00
|
|
|
#ifndef ENABLE_SET_LOG_LEVEL
|
|
|
|
/* Define away any calls to nc_set_log_level(), if its not enabled. */
|
|
|
|
#define nc_set_log_level(e)
|
|
|
|
#endif /* ENABLE_SET_LOG_LEVEL */
|
2018-07-17 03:47:18 +08:00
|
|
|
#endif
|
2018-07-17 03:36:03 +08:00
|
|
|
|
2018-07-17 01:52:03 +08:00
|
|
|
#endif /* LOGGING */
|
|
|
|
|
Corrected "BAIL" macros to avoid infinite loop when logging is disabled and an
error occurs after an "exit:" label.
Corrected a dozen Coverity errors (mainly allocation issues, along with a few
other things):
711711, 711802, 711803, 711905, 970825, 996123, 996124, 1025787,
1047274, 1130013, 1130014, 1139538
Refactored internal fill-value code to correctly handle string types, and
especially to allow NULL pointers and null strings (ie. "") to be
distinguished. The code now avoids partially aliasing the two together
(which only happened on the 'write' side of things and wasn't reflected on
the 'read' side, adding to the previous confusion).
Probably still weak on handling fill-values of variable-length and compound
datatypes.
Refactored the recursive metadata reads a bit more, to process HDF5 named
datatypes and datasets immediately, avoiding chewing up memory for those
types of objects, etc.
Finished uncommenting and updating the nc_test4/tst_fills2.c code (as I'm
proceeding alphabetically through the nc_test4 code files).
2013-12-29 15:12:43 +08:00
|
|
|
/* To log an error message (if 'LOGGING' is defined), set retval, and jump to exit. */
|
|
|
|
#define BAIL(e) \
|
|
|
|
do { \
|
|
|
|
BAIL2(e); \
|
|
|
|
goto exit; \
|
|
|
|
} while (0)
|
2010-06-07 19:25:58 +08:00
|
|
|
|
Corrected "BAIL" macros to avoid infinite loop when logging is disabled and an
error occurs after an "exit:" label.
Corrected a dozen Coverity errors (mainly allocation issues, along with a few
other things):
711711, 711802, 711803, 711905, 970825, 996123, 996124, 1025787,
1047274, 1130013, 1130014, 1139538
Refactored internal fill-value code to correctly handle string types, and
especially to allow NULL pointers and null strings (ie. "") to be
distinguished. The code now avoids partially aliasing the two together
(which only happened on the 'write' side of things and wasn't reflected on
the 'read' side, adding to the previous confusion).
Probably still weak on handling fill-values of variable-length and compound
datatypes.
Refactored the recursive metadata reads a bit more, to process HDF5 named
datatypes and datasets immediately, avoiding chewing up memory for those
types of objects, etc.
Finished uncommenting and updating the nc_test4/tst_fills2.c code (as I'm
proceeding alphabetically through the nc_test4 code files).
2013-12-29 15:12:43 +08:00
|
|
|
#endif /* _NCLOGGING_ */
|
2010-06-07 19:25:58 +08:00
|
|
|
|