13
13
along with this program; if not, write to the Free Software
14
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
16
#include "mysys_priv.h"
17
#include "mysys_err.h"
19
19
#include <stdarg.h>
21
#include <drizzled/gettext.h>
22
#include "drizzled/my_error.h"
23
#include "drizzled/definitions.h"
25
/* Error message numbers in global map */
26
const char * globerrs[GLOBERRS];
28
error_handler_func error_handler_hook= NULL;
33
EE(EE_CANTCREATEFILE) = N_("Can't create/write to file '%s' (Errcode: %d)");
34
EE(EE_READ) = N_("Error reading file '%s' (Errcode: %d)");
35
EE(EE_WRITE) = N_("Error writing file '%s' (Errcode: %d)");
36
EE(EE_BADCLOSE) = N_("Error on close of '%s' (Errcode: %d)");
37
EE(EE_OUTOFMEMORY) = N_("Out of memory (Needed %u bytes)");
38
EE(EE_DELETE) = N_("Error on delete of '%s' (Errcode: %d)");
39
EE(EE_LINK) = N_("Error on rename of '%s' to '%s' (Errcode: %d)");
40
EE(EE_EOFERR) = N_("Unexpected eof found when reading file '%s' (Errcode: %d)");
41
EE(EE_CANTLOCK) = N_("Can't lock file (Errcode: %d)");
42
EE(EE_CANTUNLOCK) = N_("Can't unlock file (Errcode: %d)");
43
EE(EE_DIR) = N_("Can't read dir of '%s' (Errcode: %d)");
44
EE(EE_STAT) = N_("Can't get stat of '%s' (Errcode: %d)");
45
EE(EE_CANT_CHSIZE) = N_("Can't change size of file (Errcode: %d)");
46
EE(EE_CANT_OPEN_STREAM)= N_("Can't open stream from handle (Errcode: %d)");
47
EE(EE_GETWD) = N_("Can't get working dirctory (Errcode: %d)");
48
EE(EE_SETWD) = N_("Can't change dir to '%s' (Errcode: %d)");
49
EE(EE_LINK_WARNING) = N_("Warning: '%s' had %d links");
50
EE(EE_OPEN_WARNING) = N_("Warning: %d files and %d streams is left open\n");
51
EE(EE_DISK_FULL) = N_("Disk is full writing '%s'. Waiting for someone to free space...");
52
EE(EE_CANT_MKDIR) = N_("Can't create directory '%s' (Errcode: %d)");
53
EE(EE_UNKNOWN_CHARSET)= N_("Character set '%s' is not a compiled character set and is not specified in the %s file");
54
EE(EE_OUT_OF_FILERESOURCES)= N_("Out of resources when opening file '%s' (Errcode: %d)");
55
EE(EE_CANT_READLINK)= N_("Can't read value for symlink '%s' (Error %d)");
56
EE(EE_CANT_SYMLINK)= N_("Can't create symlink '%s' pointing at '%s' (Error %d)");
57
EE(EE_REALPATH)= N_("Error on realpath() on '%s' (Error %d)");
58
EE(EE_SYNC)= N_("Can't sync file '%s' to disk (Errcode: %d)");
59
EE(EE_UNKNOWN_COLLATION)= N_("Collation '%s' is not a compiled collation and is not specified in the %s file");
60
EE(EE_FILENOTFOUND) = N_("File '%s' not found (Errcode: %d)");
61
EE(EE_FILE_NOT_CLOSED) = N_("File '%s' (fileno: %d) was not closed");
22
/* Define some external variables for error handling */
70
30
my_printf_error(ER_CODE, format, MYF(N), ...)
33
char errbuff[NRERRBUFFS][ERRMSGSIZE];
74
36
Message texts are registered into a linked list of 'my_err_head' structs.
75
37
Each struct contains (1.) an array of pointers to C character strings with
89
51
const char **meh_errmsgs; /* error messages array */
90
52
int meh_first; /* error number matching array slot 0 */
91
53
int meh_last; /* error number matching last slot */
93
} my_errmsgs_globerrs = {NULL, globerrs, EE_ERROR_FIRST, EE_ERROR_LAST, true};
54
} my_errmsgs_globerrs = {NULL, globerrs, EE_ERROR_FIRST, EE_ERROR_LAST};
95
56
static struct my_err_head *my_errmsgs_list= &my_errmsgs_globerrs;
120
81
/* get the error message string. Default, if NULL or empty string (""). */
121
82
if (! (format= (meh_p && (nr >= meh_p->meh_first)) ?
122
_(meh_p->meh_errmsgs[nr - meh_p->meh_first]) : NULL) || ! *format)
123
(void) snprintf (ebuff, sizeof(ebuff), _("Unknown error %d"), nr);
83
meh_p->meh_errmsgs[nr - meh_p->meh_first] : NULL) || ! *format)
84
(void) snprintf (ebuff, sizeof(ebuff), "Unknown error %d", nr);
126
87
va_start(args,MyFlags);
143
104
... variable list
146
void my_printf_error(uint32_t error, const char *format, myf MyFlags, ...)
107
void my_printf_error(uint error, const char *format, myf MyFlags, ...)
149
110
char ebuff[ERRMSGSIZE+20];
168
void my_message(uint32_t error, const char *str, register myf MyFlags)
129
void my_message(uint error, const char *str, register myf MyFlags)
170
131
(*error_handler_hook)(error, str, MyFlags);
199
160
struct my_err_head **search_meh_pp;
201
162
/* Allocate a new header structure. */
202
if (! (meh_p= (struct my_err_head*) malloc(sizeof(struct my_err_head))))
163
if (! (meh_p= (struct my_err_head*) my_malloc(sizeof(struct my_err_head),
204
166
meh_p->meh_errmsgs= errmsgs;
205
167
meh_p->meh_first= first;
206
168
meh_p->meh_last= last;
207
meh_p->is_globerrs= false;
209
170
/* Search for the right position in the list. */
210
171
for (search_meh_pp= &my_errmsgs_list;