PocketSphinx  5.0.0
A small speech recognizer
Macros | Typedefs | Enumerations | Functions
err.h File Reference

Implementation of logging routines. More...

#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <pocketsphinx/export.h>

Go to the source code of this file.

Macros

#define E_SYSCALL(stmt, ...)   if (stmt) E_FATAL_SYSTEM(__VA_ARGS__);
 
#define FILELINE   __FILE__ , __LINE__
 
#define E_FATAL(...)
 
#define E_FATAL_SYSTEM(...)
 
#define E_ERROR_SYSTEM(...)   err_msg_system(ERR_ERROR, FILELINE, __VA_ARGS__)
 
#define E_ERROR(...)   err_msg(ERR_ERROR, FILELINE, __VA_ARGS__)
 
#define E_WARN(...)   err_msg(ERR_WARN, FILELINE, __VA_ARGS__)
 
#define E_INFO(...)   err_msg(ERR_INFO, FILELINE, __VA_ARGS__)
 
#define E_INFOCONT(...)   err_msg(ERR_INFO, NULL, 0, __VA_ARGS__)
 
#define E_INFO_NOFN(...)   err_msg(ERR_INFO, NULL, 0, __VA_ARGS__)
 
#define E_DEBUG(...)
 

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_WARN, ERR_ERROR,
  ERR_FATAL, ERR_MAX
}
 

Functions

POCKETSPHINX_EXPORT void err_msg (err_lvl_t lvl, const char *path, long ln, const char *fmt,...)
 
POCKETSPHINX_EXPORT void err_msg_system (err_lvl_t lvl, const char *path, long ln, const char *fmt,...)
 
POCKETSPHINX_EXPORT void err_logfp_cb (void *user_data, err_lvl_t level, const char *fmt,...)
 
POCKETSPHINX_EXPORT int err_set_loglevel (err_lvl_t lvl)
 
const POCKETSPHINX_EXPORT char * err_set_loglevel_str (const char *lvl)
 
POCKETSPHINX_EXPORT void err_set_callback (err_cb_f callback, void *user_data)
 
POCKETSPHINX_EXPORT void err_set_logfp (FILE *stream)
 
POCKETSPHINX_EXPORT FILE * err_get_logfp (void)
 
POCKETSPHINX_EXPORT int err_set_logfile (const char *path)
 

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.

Macro Definition Documentation

◆ 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

Examples
live.c, and simple.c.

◆ 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);

Examples
live.c, and simple.c.

◆ E_ERROR_SYSTEM

#define E_ERROR_SYSTEM (   ...)    err_msg_system(ERR_ERROR, FILELINE, __VA_ARGS__)

Print error text; Call perror("");

Examples
live.c.

◆ E_ERROR

#define E_ERROR (   ...)    err_msg(ERR_ERROR, FILELINE, __VA_ARGS__)

Print error message to error log

◆ E_WARN

#define E_WARN (   ...)    err_msg(ERR_WARN, FILELINE, __VA_ARGS__)

Print warning message to error log

◆ E_INFO

#define E_INFO (   ...)    err_msg(ERR_INFO, FILELINE, __VA_ARGS__)

Print logging information to standard error stream

◆ E_INFOCONT

#define E_INFOCONT (   ...)    err_msg(ERR_INFO, NULL, 0, __VA_ARGS__)

Continue printing the information to standard error stream

◆ E_INFO_NOFN

#define E_INFO_NOFN (   ...)    err_msg(ERR_INFO, NULL, 0, __VA_ARGS__)

Print logging information without filename.

◆ E_DEBUG

#define E_DEBUG (   ...)

Debug is disabled by default

Function Documentation

◆ err_set_loglevel()

POCKETSPHINX_EXPORT int err_set_loglevel ( err_lvl_t  lvl)

Set minimum logging level.

Parameters
lvlLevel below which messages will not be logged (note ERR_DEBUG messages are not logged unless compiled in debugging mode)
Returns
previous log level.

◆ err_set_loglevel_str()

const POCKETSPHINX_EXPORT char* err_set_loglevel_str ( const char *  lvl)

Set minimum logging levelfrom a string

Parameters
lvlLevel below which messages will not be logged (note ERR_DEBUG messages are not logged unless compiled in debugging mode). A string corresponding to the names in enum err_e, but without the leading "ERR_" prefix.
Returns
previous log level string, or NULL for invalid argument.

◆ err_set_callback()

POCKETSPHINX_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
callbackcallback to pass messages too
user_datadata to pass to callback

◆ err_set_logfp()

POCKETSPHINX_EXPORT void err_set_logfp ( FILE *  stream)

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

Parameters
streamFilehandle to send log messages to, or NULL to disable logging.

◆ err_get_logfp()

POCKETSPHINX_EXPORT FILE* err_get_logfp ( void  )

Get the current logging filehandle.

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

◆ err_set_logfile()

POCKETSPHINX_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
pathFile path to send log messages to
Returns
0 for success, <0 for failure (e.g. if file does not exist)