-
Notifications
You must be signed in to change notification settings - Fork 32
/
rrd_error.c
193 lines (183 loc) · 9.45 KB
/
rrd_error.c
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/*****************************************************************************
* RRDtool 1.4.9 Copyright by Tobi Oetiker, 1997-2014
*****************************************************************************
* rrd_error.c Common Header File
*****************************************************************************
* $Id$
* $Log$
* Revision 1.4 2003/02/22 21:57:03 oetiker
* a patch to avoid a memory leak and a Makefile.am patch to
* distribute all required source files -- Peter Stamfest <[email protected]>
*
* Revision 1.3 2003/02/13 07:05:27 oetiker
* Find attached the patch I promised to send to you. Please note that there
* are three new source files (src/rrd_is_thread_safe.h, src/rrd_thread_safe.c
* and src/rrd_not_thread_safe.c) and the introduction of librrd_th. This
* library is identical to librrd, but it contains support code for per-thread
* global variables currently used for error information only. This is similar
* to how errno per-thread variables are implemented. librrd_th must be linked
* alongside of libpthred
*
* There is also a new file "THREADS", holding some documentation.
*
* -- Peter Stamfest <[email protected]>
*
* Revision 1.2 2002/02/01 20:34:49 oetiker
* fixed version number and date/time
*
* Revision 1.1.1.1 2001/02/25 22:25:05 oetiker
* checkin
*
* changed by [email protected]
*
*************************************************************************** */
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include "rrd_error.h"
char const *rrd_err_text[RRD_ERR_NUM] = {
"allocating error", /* RRD_ERR_ALLOC */
"Invalid DS name", /* RRD_ERR_INVALID_DS_NAME */
"Invalid DS type", /* RRD_ERR_INVALID_DS_TYPE */
"Duplicate DS name", /* RRD_ERR_DUPLICATE_DS_NAME */
"Invalid DS format", /* RRD_ERR_INVALID_DS_FORMAT */
"Invalid DS type specified", /* RRD_ERR_INVALID_DS_TYPE_SPEC */
"creating rrd error", /* RRD_ERR_CREATE_WRITE */
"Failed to parse CF name", /* RRD_ERR_FAILED_PARSE_CF_NAME */
"Unrecognized consolidation function", /* RRD_ERR_UNREC_CONSOLIDATION_FUNC */
"Invalid row count", /* RRD_ERR_INVALID_ROW_COUNT */
"Invalid xff: must be between 0 and 1", /* RRD_ERR_INVALID_XFF */
"Invalid alpha: must be between 0 and 1", /* RRD_ERR_INVALID_ALPHA */
"Invalid gamma: must be between 0 and 1", /* RRD_ERR_INVALID_GAMMA */
"Failure threshold is out of range 1, 28", /* RRD_ERR_FAILURE_THRESHOLD_OUT_OF_RANGE */
"Invalid step: must be >= 1", /* RRD_ERR_INVALID_STEP */
"Invalid beta: must be between 0 and 1", /* RRD_ERR_INVALID_BETA */
"Window length is out of range 1, 28", /* RRD_ERR_WIN_LEN_OUT_OF_RANGE */
"Window length is shorter than the failure threshold", /* RRD_ERR_WINLEN_SHORTER_FAILURE_THRESHOLD */
"Unexpected extra argument for consolidation function DEVPREDICT", /* RRD_ERR_INVALID_ARG1 */
"The time spanned by the database is too large: must be <= 4294967296 seconds", /* RRD_ERR_TIME_TOO_LARGE */
"Invalid smoothing-window : must be between 0 and 1", /* RRD_ERR_INVALID_SMOOTHING_WINDOW */
"Invalid option", /* RRD_ERR_INVALID_OPT */
"Length of seasonal cycle exceeds length of HW prediction array", /* RRD_ERR_LEN_OF_SEASONAL_CYCLE */
"Unexpected extra argument for consolidation function", /* RRD_ERR_INVALID_ARG2 */
"Unknown error", /* RRD_ERR_UNKNOWN_ERROR */
"Expected at least xxx arguments for RRA but got ooo", /* RRD_ERR_ARG3 */
"creating contingent RRA", /* RRD_ERR_CREATING_RRA */
"can't parse argument", /* RRD_ERR_ARG4 */
"you must define at least one Round Robin Archive", /* RRD_ERR_ARG5 */
"you must define at least one Data Source", /* RRD_ERR_ARG6 */
"min must be less than max in DS definition", /* RRD_ERR_ARG7 */
"failed to parse data source ??", /* RRD_ERR_ARG8 */
"rrd_open() creating file error", /* RRD_ERR_CREATE_FILE1 */
"malloc fetch ds_namv array", /* RRD_ERR_MALLOC1 */
"malloc fetch ds_namv entry", /* RRD_ERR_MALLOC2 */
"the RRD does not contain an RRA matching the chosen CF", /* RRD_ERR_NO_MATCH_RRA */
"malloc fetch data area", /* RRD_ERR_MALLOC3 */
"seek error in RRA", /* RRD_ERR_SEEK_RRA */
"wrap seek in RRA did fail", /* RRD_ERR_SEEK_RRA1 */
"fetching cdp from rra", /* RRD_ERR_FETCH_CDP */
"unknown data source name", /* RRD_ERR_UNKNOWN_DS_NAME */
"memory allocation failure: seasonal coef", /* RRD_ERR_MALLOC4 */
"read operation failed in lookup_seasonal()", /* RRD_ERR_READ1 */
"seek operation failed in lookup_seasonal()", /* RRD_ERR_SEEK1 */
"apply smoother: memory allocation failure", /* RRD_ERR_MALLOC5 */
"seek to rra failed", /* RRD_ERR_SEEK2 */
"reading value failed: ??", /* RRD_ERR_READ2 */
"apply smoother: SEASONAL rra doesn't have valid dependency", /* RRD_ERR_DEP1 */
"apply_smoother: seek to cdp_prep failed", /* RRD_ERR_SEEK3 */
"apply_smoother: cdp_prep write failed", /* RRD_ERR_WRITE1 */
"apply_smoother: seek to pos ?? failed", /* RRD_ERR_SEEK4 */
"apply_smoother: write failed to xxx", /* RRD_ERR_WRITE2 */
"reached EOF while loading header ", /* RRD_ERR_READ3 */
"rrd_read() malloc error", /* RRD_ERR_MALLOC6 */
"short read while reading header ", /* RRD_ERR_READ4 */
"allocating rrd_file descriptor for 'xxx'", /* RRD_ERR_MALLOC7 */
"allocating rrd_simple_file for 'xxx'", /* RRD_ERR_MALLOC8 */
"in read/write request mask", /* RRD_ERR_IO1 */
"opening error", /* RRD_ERR_OPEN_FILE */
"fstat error", /* RRD_ERR_STAT_FILE */
"write error", /* RRD_ERR_WRITE5 */
"mmap error", /* RRD_ERR_MMAP */
"This file is not an RRD file", /* RRD_ERR_FILE */
"This RRD was created on another architecture", /* RRD_ERR_FILE1 */
"can't handle RRD file version", /* RRD_ERR_FILE2 */
"live_head_t malloc", /* RRD_ERR_MALLOC9 */
"file is too small (should be ?? bytes)", /* RRD_ERR_FILE3 */
"msync rrd_file error", /* RRD_ERR_MSYNC */
"munmap rrd_file error", /* RRD_ERR_MUNMAP */
"closing rrd_file error", /* RRD_ERR_CLOSE */
"attempting to write beyond end of file", /* RRD_ERR_WRITE6 */
"update process_arg error", /* RRD_ERR_ARG9 */
"write changes to disk error", /* RRD_ERR_WRITE7 */
"Not enough arguments", /* RRD_ERR_ARG10 */
"could not lock RRD", /* RRD_ERR_LOCK */
"failed duplication argv entry", /* RRD_ERR_FAILED_STRDUP */
"allocating updvals pointer array.", /* RRD_ERR_MALLOC10 */
"allocating pdp_temp.", /* RRD_ERR_MALLOC11 */
"allocating skip_update.", /* RRD_ERR_MALLOC12 */
"allocating tmpl_idx.", /* RRD_ERR_MALLOC13 */
"allocating rra_step_cnt.", /* RRD_ERR_MALLOC14 */
"allocating pdp_new.", /* RRD_ERR_MALLOC15 */
"parse template error", /* RRD_ERR_PARSE */
"error copying tmplt ", /* RRD_ERR_FAILED_STRDUP1 */
"tmplt contains more DS definitions than RRD", /* RRD_ERR_MORE_DS */
"unknown DS name ", /* RRD_ERR_UNKNOWN_DS_NAME1 */
"expected timestamp not found in data source from ??", /* RRD_ERR_STR */
"found extra data on update argument: ??", /* RRD_ERR_ARG11 */
"expected ?? data source readings (got ??) from ??", /* RRD_ERR_EXPECTED */
"ds time: ??: ??", /* RRD_ERR_TIME1 */
"specifying time relative to the 'start' or 'end' makes no sense here: ??", /* RRD_ERR_TIME2 */
"strtod error: converting ?? to float: ??", /* RRD_ERR_STRTOD */
"illegal attempt to update using time ?? when last update time is ?? (minimum one second step)", /* RRD_ERR_TIME3 */
"not a simple ?? integer: '??'", /* RRD_ERR_INT */
"conversion of '??' to float not complete: tail '??'", /* RRD_ERR_DATA */
"rrd contains unknown DS type : '??'", /* RRD_ERR_UNKNOWN_DS_TYPE */
"seek error in rrd", /* RRD_ERR_SEEK5 */
"writing rrd: ??", /* RRD_ERR_WRITE8 */
"seek rrd for live header writeback", /* RRD_ERR_SEEK6 */
"rrd_write live_head to rrd", /* RRD_ERR_WRITE9 */
"rrd_write pdp_prep to rrd", /* RRD_ERR_WRITE10 */
"rrd_write cdp_prep to rrd", /* RRD_ERR_WRITE11 */
"rrd_write rra_ptr to rrd", /* RRD_ERR_WRITE12 */
"the start and end times cannot be specified relative to each other", /* RRD_ERR_TIME4 */
"the start time cannot be specified relative to itself", /* RRD_ERR_TIME5 */
"the end time cannot be specified relative to itself", /* RRD_ERR_TIME6 */
"failed to alloc memory in addop2str", /* RRD_ERR_MALLOC16 */
"failed to parse computed data source", /* RRD_ERR_PARSE1 */
"operators TIME, LTIME, PREV COUNT TREND TRENDNAN PREDICT PREDICTSIGMA are not supported with DS COMPUTE", /* RRD_ERR_DS */
"don't undestand expr", /* RRD_ERR_EXPR */
"RPN stack overflow", /* RRD_ERR_STACK */
"RPN stack underflow", /* RRD_ERR_STACK1 */
"VDEF made it into rpn_calc... aborting", /* RRD_ERR_ABORT */
"negative shift step not allowed: ??", /* RRD_ERR_ALLOW */
"malformed trend arguments", /* RRD_ERR_ARG12 */
"RPN final stack size != 1", /* RRD_ERR_STACK2 */
"Maximum ?? RPN nodes permitted. Got ?? RPN nodes at present.", /* RRD_ERR_DATA1 */
"constants must be integers in the interval (??, ??)", /* RRD_ERR_DATA2 */
"failed allocating rpnp array", /* RRD_ERR_MALLOC17 */
"unknown data acquisition function '??'", /* RRD_ERR_UNKNOWN_DATA */
"update_cdp_prep error", /* RRD_ERR_UPDATE_CDP */
"variable '??' not found", /* RRD_ERR_UNKNOWN_DATA1 */
};
const char *rrd_strerror(int err) {
int e;
e = abs(err);
if(e == 0){
return NULL;
}else{
if (e >= RRD_ERR_START && e <= RRD_ERR_END){
#ifdef DEBUG
printf("errno: 0x%04x, str:%s\n", e, rrd_err_text[e-RRD_ERR_START]);
printf("sys errno: %d, strerror:%s\n", errno, strerror(errno));
#endif
return rrd_err_text[e-RRD_ERR_START];
}else{
#ifdef DEBUG
printf("errno: 0x%04x, str:%s\n", e, rrd_err_text[RRD_ERR_UNKNOWN_ERROR-RRD_ERR_START]);
printf("sys errno: %d, strerror:%s\n", errno, strerror(errno));
#endif
return rrd_err_text[RRD_ERR_UNKNOWN_ERROR-RRD_ERR_START];
}
}
}