-
Notifications
You must be signed in to change notification settings - Fork 1
/
lib.error.h
96 lines (82 loc) · 3.11 KB
/
lib.error.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
* Error handling and logging functions
*/
#ifndef LIB_ERROR_H
#define LIB_ERROR_H
#include <stdarg.h>
#include <stdio.h>
#include <errno.h>
#ifdef HAVE_SYSLOG_H
#include <syslog.h>
#else
#error "Syslog header file not available."
#endif
#define ERRSTR "error"
#define ERRMATCH ERRSTR": "
#define WARNSTR "warning"
#define WARNMATCH WARNSTR": "
#ifdef __cplusplus
extern "C" {
#endif
extern const int exit_failure;
/* Import from the main program for logging purposes */
extern const char *progname;
/* Variables defining logmessages verbosity to stderr/logfile */
extern int verbose;
extern int loglevel;
extern FILE *stdlog;
void logmsg(int, const char *, ...) __attribute__((format (printf, 2, 3)));
void vlogmsg(int, const char *, va_list);
/* Logging functions (vlogmsg uses va_list instead of argument list):
* Logs a message to stderr and/or logfile, including date and program name,
* depending on the loglevel treshold values.
*
* Arguments:
* int loglevel syslog loglevel of this log-message
* char *mesg message, may include printf output format characters '%'
* ... or va_list optional arguments for format characters
*/
char *errorstring(const char *, int, const char *);
/* Error string generating function:
* Returns a pointer to a dynamically allocated string containing the error
* message.
*
* Arguments:
* char *type string of type of message: ERRSTR, WARNSTR or custom.
* int errnum 'errno' value to use for error string output, set 0 to skip
* char *mesg optional accompanying message to display, set NULL to skip
*
* Returns a char pointer to the allocated string.
*/
void logerror (int, const char *, ...) __attribute__((format (printf, 2, 3)));
void error (int, const char *, ...) __attribute__((format (printf, 2, 3), noreturn));
void warning (int, const char *, ...) __attribute__((format (printf, 2, 3)));
void vlogerror(int, const char *, va_list) __attribute__((nonnull (2)));
void verror (int, const char *, va_list) __attribute__((nonnull (2), noreturn));
void vwarning (int, const char *, va_list) __attribute__((nonnull (2)));
/* Error and warning functions (v.. uses va_list instead of argument list):
* Logs an error message including error string from 'errno'.
* logerror only logs the error message (non-fatal error)
* error log the message and exits with exit_failure
* warning same as 'logerror', but prints 'warning' instead of 'error'
*
* Arguments:
* int errnum 'errno' value to use for error string output, set 0 to skip
* char *mesg message, may include printf output format characters '%'
* ... or va_list optional arguments for format characters
*/
char *allocstr(const char *, ...) __attribute__((format (printf, 1, 2)));
char *vallocstr(const char *, va_list);
/* Create a c-string by allocating memory for it and writing to it,
* using printf type format characters.
*
* Arguments:
* char *mesg message, may include printf output format characters '%'
* ... or va_list optional arguments for format characters
*
* Returns a pointer to the allocated string
*/
#ifdef __cplusplus
}
#endif
#endif /* LIB_ERROR_H */