Lely core libraries  2.2.5
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 
31 struct floc {
33  const char *filename;
35  int line;
37  int column;
38 };
39 
52 };
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
68 typedef void diag_handler_t(void *handle, enum diag_severity severity, int errc,
69  const char *format, va_list ap) format_printf__(4, 0);
70 
82 typedef 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 
97 size_t floc_lex(struct floc *at, const char *begin, const char *end);
98 
116 int snprintf_floc(char *s, size_t n, const struct floc *at);
117 
128 void diag_get_handler(diag_handler_t **phandler, void **phandle);
129 
139 void diag_set_handler(diag_handler_t *handler, void *handle);
140 
151 void diag_at_get_handler(diag_at_handler_t **phandler, void **phandle);
152 
162 void diag_at_set_handler(diag_at_handler_t *handler, void *handle);
163 
184 void diag(enum diag_severity severity, int errc, const char *format, ...)
185  format_printf__(3, 4);
186 
191 void vdiag(enum diag_severity severity, int errc, const char *format,
192  va_list ap) format_printf__(3, 0);
193 
219 void diag_at(enum diag_severity severity, int errc, const struct floc *at,
220  const char *format, ...) format_printf__(4, 5);
221 
227 void vdiag_at(enum diag_severity severity, int errc, const struct floc *at,
228  const char *format, va_list ap) format_printf__(4, 0);
229 
236 void diag_if(enum diag_severity severity, int errc, const struct floc *at,
237  const char *format, ...) format_printf__(4, 5);
238 
245 void vdiag_if(enum diag_severity severity, int errc, const struct floc *at,
246  const char *format, va_list ap) format_printf__(4, 0);
247 
253 void default_diag_handler(void *handle, enum diag_severity severity, int errc,
254  const char *format, va_list ap) format_printf__(4, 0);
255 
261 void 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 
270 void cmd_diag_handler(void *handle, enum diag_severity severity, int errc,
271  const char *format, va_list ap) format_printf__(4, 0);
272 
277 void daemon_diag_handler(void *handle, enum diag_severity severity, int errc,
278  const char *format, va_list ap) format_printf__(4, 0);
279 
285 void 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 
294 void dialog_diag_handler(void *handle, enum diag_severity severity, int errc,
295  const char *format, va_list ap) format_printf__(4, 0);
296 
302 void 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 
311 void log_diag_handler(void *handle, enum diag_severity severity, int errc,
312  const char *format, va_list ap) format_printf__(4, 0);
313 
319 void 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 
328 void syslog_diag_handler(void *handle, enum diag_severity severity, int errc,
329  const char *format, va_list ap) format_printf__(4, 0);
330 
336 void 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 
367 int 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 
392 int vasprintf_diag(char **ps, enum diag_severity severity, int errc,
393  const char *format, va_list ap) format_printf__(4, 0);
394 
427 int 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 
456 int 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 
464 const 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
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
const char * cmdname(const char *path)
Extracts the command name from a path.
Definition: diag.c:507
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