err.h File Reference

Implementation of logging routines. More...

`#include <stdarg.h>`
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <errno.h>`
`#include <sphinxbase/sphinxbase_export.h>`

Go to the source code of this file.

## Macros

#define | E_SYSCALL(stmt, ...)
#define | FILELINE __FILE__ , __LINE__
#define | E_FATAL(...)
| Exit with non-zero status after error message.
#define | E_FATAL_SYSTEM(...)
| Print error text; Call perror(""); exit(errno);.
#define | E_ERROR_SYSTEM(...)
| Print error text; Call perror("");.
#define | E_ERROR(...)
| Print error message to error log.
#define | E_WARN(...)
| Print warning message to error log.
#define | E_INFO(...)
| Print logging information to standard error stream.
#define | E_INFOCONT(...)
| Continue printing the information to standard error stream.
#define | E_INFO_NOFN(...)
| Print logging information without filename.
#define | E_DEBUG(level, x)
| Print debugging information to standard error stream.
#define | E_DEBUGCONT(level, x)

## Typedefs

typedef enum err_e | err_lvl_t
typedef void(* | err_cb_f) (void *user_data, err_lvl_t, const char *,...)

## Enumerations

enum | err_e { ERR_DEBUG , ERR_INFO , ERR_INFOCONT , ERR_WARN , ERR_ERROR , ERR_FATAL , ERR_MAX }

## Functions

SPHINXBASE_EXPORT void | err_msg (err_lvl_t lvl, const char *path, long ln, const char *fmt,...)
SPHINXBASE_EXPORT void | err_msg_system (err_lvl_t lvl, const char *path, long ln, const char *fmt,...)
SPHINXBASE_EXPORT void | err_logfp_cb (void *user_data, err_lvl_t level, const char *fmt,...)
SPHINXBASE_EXPORT void | err_set_callback (err_cb_f callback, void *user_data)
| Sets function to output error messages.
SPHINXBASE_EXPORT void | err_set_logfp (FILE *stream)
| Direct all logging to a given filehandle if default logfp callback is set.
SPHINXBASE_EXPORT FILE * | err_get_logfp (void)
| Get the current logging filehandle.
SPHINXBASE_EXPORT int | err_set_logfile (const char *path)
| Append all log messages to a given file.
SPHINXBASE_EXPORT int | err_set_debug_level (int level)
| Set debugging verbosity level.
SPHINXBASE_EXPORT int | err_get_debug_level (void)
| Get debugging verbosity level.

## Detailed Description

Implementation of logging routines.

Logging, warning, debug and error message output funtionality is provided in this file. Sphinxbase defines several level of logging messages - INFO, WARNING, ERROR, FATAL. By default output goes to standard error output.

Logging is implemented through macros. They take same arguments as printf: format string and values. By default source file name and source line are prepended to the message. Log output could be redirected to any file using err_set_logfp() and err_set_logfile() functions. To disable logging in your application, call err_set_logfp(NULL).

It's possible to log multiline info messages, to do that you need to start message with E_INFO and output other lines with E_INFOCONT.

Definition in file err.h.

## Macro Definition Documentation

## E_DEBUG

#define E_DEBUG | ( |  | level,
|  |  | x )

Print debugging information to standard error stream.

This will only print a message if:

1. Debugging is enabled at compile time
2. The debug level is greater than or equal to level

Note that for portability reasons the format and arguments must be enclosed in an extra set of parentheses.

Definition at line 144 of file err.h.

## E_DEBUGCONT

#define E_DEBUGCONT | ( |  | level,
|  |  | x )

Definition at line 145 of file err.h.

## E_ERROR

#define E_ERROR | ( |  | ... | ) |

Value:
err_msg(ERR_ERROR, FILELINE, __VA_ARGS__)

Print error message to error log.

Definition at line 104 of file err.h.

Referenced by bio_readhdr(), bio_writehdr(), cmd_ln_access_r(), cmd_ln_init(), cmd_ln_parse(), cmd_ln_parse_file_r(), cmd_ln_parse_r(), cmd_ln_set_float_r(), cmd_ln_set_int_r(), cmd_ln_set_str_r(), feat_init(), feat_read_lda(), feat_s2mfc2feat(), feat_set_subvecs(), fopen_comp(), jsgf_parse_file(), jsgf_parse_string(), jsgf_read_file(), jsgf_read_string(), listelem_alloc_init(), listelem_get_item(), logmath_init(), logmath_read(), logmath_write(), ngram_model_add_class(), ngram_model_add_class_word(), ngram_model_read(), ngram_model_set_init(), ngram_model_set_interp(), ngram_model_set_read(), ngram_model_write(), sbevent_init(), sbthread_start(), and sbthread_wait().

## E_ERROR_SYSTEM

#define E_ERROR_SYSTEM | ( |  | ... | ) |

Value:
err_msg_system(ERR_ERROR, FILELINE, __VA_ARGS__)

Print error text; Call perror("");.

Definition at line 99 of file err.h.

Referenced by bio_fread_2d(), bio_fread_3d(), bio_fwrite_1d(), bio_fwrite_3d(), bio_read_wavfile(), build_directory(), feat_read_lda(), fopen_comp(), fread_retry(), jsgf_parse_file(), logmath_read(), logmath_write(), mmio_file_read(), mmio_file_unmap(), ngram_model_set_read(), sbevent_init(), and stat_retry().

## E_FATAL

#define E_FATAL | ( |  | ... | ) |

Value:
do { \
err_msg(ERR_FATAL, FILELINE, __VA_ARGS__); \
exit(EXIT_FAILURE); \
} while (0)

Exit with non-zero status after error message.

Definition at line 81 of file err.h.

Referenced by __ckd_calloc_4d__(), agc_type_from_str(), bio_fread_1d(), bio_verify_chksum(), cmn_live(), cmn_type_from_str(), determinant(), feat_init(), feat_read_lda(), fopen_comp(), invert(), parse_subvecs(), and solve().

## E_FATAL_SYSTEM

#define E_FATAL_SYSTEM | ( |  | ... | ) |

Value:
do { \
err_msg_system(ERR_FATAL, FILELINE, __VA_ARGS__); \
exit(EXIT_FAILURE); \
} while (0)

Print error text; Call perror(""); exit(errno);.

Definition at line 90 of file err.h.

Referenced by bio_read_wavfile().

## E_INFO

#define E_INFO | ( |  | ... | ) |

Value:
err_msg(ERR_INFO, FILELINE, __VA_ARGS__)

Print logging information to standard error stream.

Definition at line 114 of file err.h.

Referenced by agc_emax_set(), agc_emax_update(), agc_max(), agc_noise(), cmd_ln_appl_enter(), cmn(), cmn_live_set(), cmn_live_update(), feat_init(), feat_s2mfc2feat(), listelem_stats(), logmath_read(), logmath_write(), and ngram_model_set_read().

## E_INFO_NOFN

#define E_INFO_NOFN | ( |  | ... | ) |

Value:
err_msg(ERR_INFO, NULL, 0, __VA_ARGS__)

Print logging information without filename.

Definition at line 124 of file err.h.

Referenced by feat_report().

## E_INFOCONT

#define E_INFOCONT | ( |  | ... | ) |

Value:
err_msg(ERR_INFOCONT, NULL, 0, __VA_ARGS__)

Continue printing the information to standard error stream.

Definition at line 119 of file err.h.

Referenced by cmd_ln_appl_enter(), cmn(), cmn_live_set(), cmn_live_update(), and feat_report().

## E_SYSCALL

#define E_SYSCALL | ( |  | stmt,
|  |  | ... )

Value:
if (stmt) E_FATAL_SYSTEM(__VA_ARGS__);
E_FATAL_SYSTEM
#define E_FATAL_SYSTEM(...)
Print error text; Call perror(""); exit(errno);.
Definition err.h:90

Definition at line 74 of file err.h.

## E_WARN

#define E_WARN | ( |  | ... | ) |

Value:
err_msg(ERR_WARN, FILELINE, __VA_ARGS__)

Print warning message to error log.

Definition at line 109 of file err.h.

Referenced by cmd_ln_parse_file_r(), feat_read_lda(), fopen_compchk(), listelem_alloc_init(), logmath_read(), ngram_model_add_word(), and ngram_model_casefold().

## FILELINE

#define FILELINE __FILE__ , __LINE__

Definition at line 76 of file err.h.

## Typedef Documentation

## err_cb_f

typedef void(* err_cb_f) (void *user_data, err_lvl_t, const char *,...)

Definition at line 167 of file err.h.

## Enumeration Type Documentation

## err_e

enum err_e

Definition at line 148 of file err.h.

## Function Documentation

## err_get_debug_level()

SPHINXBASE_EXPORT int err_get_debug_level | ( | void |  | ) |

Get debugging verbosity level.

Note that debugging messages are only enabled when compiled with -DDEBUG.

Definition at line 287 of file err.c.

## err_get_logfp()

SPHINXBASE_EXPORT FILE * err_get_logfp | ( | void |  | ) |

Get the current logging filehandle.

Returns
  Current logging filehandle, NULL if logging is disabled. Initially it returns stderr

Definition at line 268 of file err.c.

Referenced by cmd_ln_parse_r(), and err_set_logfile().

## err_logfp_cb()

SPHINXBASE_EXPORT void err_logfp_cb | ( | void * | user_data,
|  | err_lvl_t | level,
|  | const char * | fmt,
|  |  | ... )

Definition at line 226 of file err.c.

## err_msg()

SPHINXBASE_EXPORT void err_msg | ( | err_lvl_t | lvl,
|  | const char * | path,
|  | long | ln,
|  | const char * | fmt,
|  |  | ... )

Definition at line 83 of file err.c.

## err_msg_system()

SPHINXBASE_EXPORT void err_msg_system | ( | err_lvl_t | lvl,
|  | const char * | path,
|  | long | ln,
|  | const char * | fmt,
|  |  | ... )

Definition at line 160 of file err.c.

## err_set_callback()

SPHINXBASE_EXPORT void err_set_callback | ( | err_cb_f | callback,
|  | void * | user_data )

Sets function to output error messages.

Use it to redirect the logging to your application. By default the handler which dumps messages to stderr is set.

Parameters

  callback | callback to pass messages too
  user_data | data to pass to callback

Definition at line 293 of file err.c.

## err_set_debug_level()

SPHINXBASE_EXPORT int err_set_debug_level | ( | int | level | ) |

Set debugging verbosity level.

Note that debugging messages are only enabled when compiled with -DDEBUG.

Parameters

  level | Verbosity level to set, or 0 to disable debug messages.

Definition at line 279 of file err.c.

## err_set_logfile()

SPHINXBASE_EXPORT int err_set_logfile | ( | const char * | path | ) |

Append all log messages to a given file.

Previous logging filehandle is closed (unless it was stdout or stderr).

Parameters

  path | File path to send log messages to

Returns
  0 for success, <0 for failure (e.g. if file does not exist)

Definition at line 241 of file err.c.

References err_get_logfp(), and err_set_logfp().

## err_set_logfp()

SPHINXBASE_EXPORT void err_set_logfp | ( | FILE * | stream | ) |

Direct all logging to a given filehandle if default logfp callback is set.

Parameters

  stream | Filehandle to send log messages to, or NULL to disable logging.

Definition at line 255 of file err.c.

Referenced by err_set_logfile().