Lely core libraries 1.9.2
diag.h
Go to the documentation of this file.
1
22#ifndef LELY_UTIL_DIAG_H_
23#define LELY_UTIL_DIAG_H_
24
25#include <lely/util/errnum.h>
26
27#include <stdarg.h>
28#include <stddef.h>
29
31struct floc {
33 const char *filename;
35 int line;
37 int column;
38};
39
52};
53
54#ifdef __cplusplus
55extern "C" {
56#endif
57
68typedef void diag_handler_t(void *handle, enum diag_severity severity, int errc,
69 const char *format, va_list ap) format_printf__(4, 0);
70
82typedef void diag_at_handler_t(void *handle, enum diag_severity severity,
83 int errc, const struct floc *at, const char *format, va_list ap)
84 format_printf__(5, 0);
85
97size_t floc_lex(struct floc *at, const char *begin, const char *end);
98
116int snprintf_floc(char *s, size_t n, const struct floc *at);
117
128void diag_get_handler(diag_handler_t **phandler, void **phandle);
129
139void diag_set_handler(diag_handler_t *handler, void *handle);
140
151void diag_at_get_handler(diag_at_handler_t **phandler, void **phandle);
152
162void diag_at_set_handler(diag_at_handler_t *handler, void *handle);
163
184void diag(enum diag_severity severity, int errc, const char *format, ...)
185 format_printf__(3, 4);
186
191void vdiag(enum diag_severity severity, int errc, const char *format,
192 va_list ap) format_printf__(3, 0);
193
219void diag_at(enum diag_severity severity, int errc, const struct floc *at,
220 const char *format, ...) format_printf__(4, 5);
221
227void vdiag_at(enum diag_severity severity, int errc, const struct floc *at,
228 const char *format, va_list ap) format_printf__(4, 0);
229
236void diag_if(enum diag_severity severity, int errc, const struct floc *at,
237 const char *format, ...) format_printf__(4, 5);
238
245void vdiag_if(enum diag_severity severity, int errc, const struct floc *at,
246 const char *format, va_list ap) format_printf__(4, 0);
247
253void default_diag_handler(void *handle, enum diag_severity severity, int errc,
254 const char *format, va_list ap) format_printf__(4, 0);
255
261void default_diag_at_handler(void *handle, enum diag_severity severity,
262 int errc, const struct floc *at, const char *format, va_list ap)
263 format_printf__(5, 0);
264
270void cmd_diag_handler(void *handle, enum diag_severity severity, int errc,
271 const char *format, va_list ap) format_printf__(4, 0);
272
277void daemon_diag_handler(void *handle, enum diag_severity severity, int errc,
278 const char *format, va_list ap) format_printf__(4, 0);
279
285void daemon_diag_at_handler(void *handle, enum diag_severity severity, int errc,
286 const struct floc *at, const char *format, va_list ap)
287 format_printf__(5, 0);
288
294void dialog_diag_handler(void *handle, enum diag_severity severity, int errc,
295 const char *format, va_list ap) format_printf__(4, 0);
296
302void dialog_diag_at_handler(void *handle, enum diag_severity severity, int errc,
303 const struct floc *at, const char *format, va_list ap)
304 format_printf__(5, 0);
305
311void log_diag_handler(void *handle, enum diag_severity severity, int errc,
312 const char *format, va_list ap) format_printf__(4, 0);
313
319void log_diag_at_handler(void *handle, enum diag_severity severity, int errc,
320 const struct floc *at, const char *format, va_list ap)
321 format_printf__(5, 0);
322
328void syslog_diag_handler(void *handle, enum diag_severity severity, int errc,
329 const char *format, va_list ap) format_printf__(4, 0);
330
336void syslog_diag_at_handler(void *handle, enum diag_severity severity, int errc,
337 const struct floc *at, const char *format, va_list ap)
338 format_printf__(5, 0);
339
367int vsnprintf_diag(char *s, size_t n, enum diag_severity severity, int errc,
368 const char *format, va_list ap) format_printf__(5, 0);
369
392int vasprintf_diag(char **ps, enum diag_severity severity, int errc,
393 const char *format, va_list ap) format_printf__(4, 0);
394
427int vsnprintf_diag_at(char *s, size_t n, enum diag_severity severity, int errc,
428 const struct floc *at, const char *format, va_list ap)
429 format_printf__(6, 0);
430
456int vasprintf_diag_at(char **ps, enum diag_severity severity, int errc,
457 const struct floc *at, const char *format, va_list ap)
458 format_printf__(5, 0);
459
464const char *cmdname(const char *path);
465
466#ifdef __cplusplus
467}
468#endif
469
470#endif // !LELY_UTIL_DIAG_H_
void syslog_diag_handler(void *handle, enum diag_severity severity, int errc, const char *format, va_list ap)
The diag() handler used for the system logging facilities.
Definition: diag.c:353
void daemon_diag_at_handler(void *handle, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
The diag_at() handler for daemons.
Definition: diag.c:256
void diag_set_handler(diag_handler_t *handler, void *handle)
Sets the handler function for diag().
Definition: diag.c:133
int vsnprintf_diag(char *s, size_t n, enum diag_severity severity, int errc, const char *format, va_list ap)
Prints a diagnostic message to a string buffer.
Definition: diag.c:390
size_t floc_lex(struct floc *at, const char *begin, const char *end)
Increments a file location by reading characters from a memory buffer.
Definition: diag.c:54
int vasprintf_diag_at(char **ps, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
Equivalent to vsnprintf_diag_at(), except that it allocates a string large enough to hold the output,...
Definition: diag.c:478
void cmd_diag_handler(void *handle, enum diag_severity severity, int errc, const char *format, va_list ap)
The diag() handler used for command-line programs.
Definition: diag.c:234
void dialog_diag_at_handler(void *handle, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
The diag_at() handler for dialog boxes.
void vdiag(enum diag_severity severity, int errc, const char *format, va_list ap)
Emits a diagnostic message.
Definition: diag.c:165
const char * cmdname(const char *path)
Extracts the command name from a path.
Definition: diag.c:507
void vdiag_at(enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
Emits a diagnostic message occurring at a location in a text file.
Definition: diag.c:182
void default_diag_at_handler(void *handle, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
The default diag_at() handler.
Definition: diag.c:215
void diag_at_set_handler(diag_at_handler_t *handler, void *handle)
Sets the handler function for diag_at().
Definition: diag.c:149
void diag_at_handler_t(void *handle, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
The function type of a handler for diag_at().
Definition: diag.h:82
int vasprintf_diag(char **ps, enum diag_severity severity, int errc, const char *format, va_list ap)
Equivalent to vsnprintf_diag(), except that it allocates a string large enough to hold the output,...
Definition: diag.c:397
diag_severity
The severity of a diagnostic message.
Definition: diag.h:41
@ DIAG_DEBUG
A debug message.
Definition: diag.h:43
@ DIAG_WARNING
A warning.
Definition: diag.h:47
@ DIAG_INFO
An informational message.
Definition: diag.h:45
@ DIAG_ERROR
An error.
Definition: diag.h:49
@ DIAG_FATAL
A fatal error, which SHOULD result in program termination.
Definition: diag.h:51
void diag_if(enum diag_severity severity, int errc, const struct floc *at, const char *format,...)
Emits a diagnostic message occurring at a location in a text file.
Definition: diag.c:190
void diag_at_get_handler(diag_at_handler_t **phandler, void **phandle)
Retrieves the handler function for diag_at().
Definition: diag.c:140
void vdiag_if(enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
Emits a diagnostic message occurring at a location in a text file.
Definition: diag.c:200
int snprintf_floc(char *s, size_t n, const struct floc *at)
Prints a file location to a string buffer.
Definition: diag.c:86
void daemon_diag_handler(void *handle, enum diag_severity severity, int errc, const char *format, va_list ap)
The diag() handler for daemons.
Definition: diag.c:249
void diag_at(enum diag_severity severity, int errc, const struct floc *at, const char *format,...)
Emits a diagnostic message occurring at a location in a text file.
Definition: diag.c:172
void diag_handler_t(void *handle, enum diag_severity severity, int errc, const char *format, va_list ap)
The function type of a handler for diag().
Definition: diag.h:68
void log_diag_at_handler(void *handle, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
The diag_at() handler used for log-files.
Definition: diag.c:318
void diag(enum diag_severity severity, int errc, const char *format,...)
Emits a diagnostic message.
Definition: diag.c:156
void dialog_diag_handler(void *handle, enum diag_severity severity, int errc, const char *format, va_list ap)
The diag() handler for dialog boxes.
void log_diag_handler(void *handle, enum diag_severity severity, int errc, const char *format, va_list ap)
The diag() handler for log files.
Definition: diag.c:311
int vsnprintf_diag_at(char *s, size_t n, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
Prints a diagnostic message occurring at a location in a text file to a string buffer.
Definition: diag.c:404
void diag_get_handler(diag_handler_t **phandler, void **phandle)
Retrieves the handler function for diag().
Definition: diag.c:124
void default_diag_handler(void *handle, enum diag_severity severity, int errc, const char *format, va_list ap)
The default diag() handler.
Definition: diag.c:208
void syslog_diag_at_handler(void *handle, enum diag_severity severity, int errc, const struct floc *at, const char *format, va_list ap)
The diag_at() handler used for the system logging facilities.
Definition: diag.c:360
This header file is part of the utilities library; it contains the native and platform-independent er...
This header file is part of the C11 and POSIX compatibility library; it includes <stddef....
A location in a text file.
Definition: diag.h:31
int line
The line number (starting from 1).
Definition: diag.h:35
int column
The column number (starting from 1).
Definition: diag.h:37
const char * filename
The name of the file.
Definition: diag.h:33