-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherror.c
More file actions
117 lines (111 loc) · 4.31 KB
/
error.c
File metadata and controls
117 lines (111 loc) · 4.31 KB
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/***************************************************************************
* Copyright (C) 2015, 2018 by Michael Ambrus *
* michael@helsinova.se *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <strings.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <sys/types.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
#include <liblog/assure.h>
#include "config.h"
#include "local.h"
#if !defined(WIN32) && !defined(__CYGWIN__) && defined(LIBLOG_ENABLE_SYSLOG)
#include <syslog.h>
#endif
#if defined(WIN32) || defined(__CYGWIN__)
#define SYSTEM_SYSLOG_INABLE
#endif
#define LOGX( WHY, ...) { \
log_level log_tmp; \
switch (WHY) { \
case _ASSERT: \
log_tmp = log_ASSERT; \
break; \
case _ASSURE: \
log_tmp = log_ASSURE; \
break; \
default: \
log_tmp = log_ASSURE; \
} \
\
switch (log_tmp) { \
case LOG_LEVEL_VERBOSE: \
LOGV(__VA_ARGS__); \
break; \
case LOG_LEVEL_DEBUG: \
LOGD(__VA_ARGS__); \
break; \
case LOG_LEVEL_INFO: \
LOGI(__VA_ARGS__); \
break; \
case LOG_LEVEL_WARNING: \
LOGW(__VA_ARGS__); \
break; \
case LOG_LEVEL_ERROR: \
LOGE(__VA_ARGS__); \
break; \
default: \
LOGE(__VA_ARGS__); \
break; \
} \
}
void liblog_print_failure(assrt_t etype, char *sassure,
const char *sfun, char *sfile, int iline)
{
#ifdef LIBLOG_ASSURE_LOGGED
char *why;
switch (etype) {
case _ASSERT:
why = "ASSERT: ";
break;
case _ASSURE:
why = "ASSURE: ";
break;
default:
why = "UNKNOWN: ";
};
# ifdef LIBLOG_ASSURE_INCL_FILEINFO
if (sfun != NULL) {
LOGX(etype, "%s %s failed in [%s]\n", why, sassure, sfun);
} else {
LOGX(etype, "%s %s failed\n", why, sassure);
}
# else
if (sfun != NULL) {
LOGX(etype, "%s %s failed in [%s] @ [%s:%d]\n", why, sassure, sfun,
sfile, iline);
} else {
LOGX(etype, "%s %s failed @ [%s:%d]\n", why, sassure, sfile, iline);
}
# endif
#else
if (sfun != NULL)
fprintf(stderr, "ERROR: %s failed in [%s] @ [%s:%d]\n", sassure,
sfun, sfile, iline);
else
fprintf(stderr, "ERROR: %s failed @ [%s:%d]\n", sassure, sfile, iline);
fflush(stderr);
#endif
fflush(NULL);
}