46
45
bool init_errmessage(void)
47
const char **errmsgs, **ptr;
48
DBUG_ENTER("init_errmessage");
51
Get a pointer to the old error messages pointer array.
52
read_texts() tries to free it.
54
errmsgs= my_error_unregister(ER_ERROR_FIRST, ER_ERROR_LAST);
56
/* Read messages from file. */
57
if (read_texts(ERRMSG_FILE, &errmsgs, ER_ERROR_LAST - ER_ERROR_FIRST + 1) &&
60
if (!(errmsgs= (const char**) my_malloc((ER_ERROR_LAST-ER_ERROR_FIRST+1)*
61
sizeof(char*), MYF(0))))
63
for (ptr= errmsgs; ptr < errmsgs + ER_ERROR_LAST - ER_ERROR_FIRST; ptr++)
49
67
/* Register messages for use with my_error(). */
50
if (my_error_register(drizzled_error_messages,
51
ER_ERROR_FIRST, ER_ERROR_LAST))
68
if (my_error_register(errmsgs, ER_ERROR_FIRST, ER_ERROR_LAST))
70
x_free((uchar*) errmsgs);
74
errmesg= errmsgs; /* Init global variabel */
56
75
init_myfunc_errs(); /* Init myfunc messages */
81
Read text from packed textfile in language-directory.
83
If we can't read messagefile then it's panic- we can't continue.
86
Convert the character set to server system character set
89
static bool read_texts(const char *file_name,const char ***point,
93
uint count,funktpos,textcount;
100
DBUG_ENTER("read_texts");
103
if ((file=my_open(fn_format(name,file_name,language,"",4),
104
O_RDONLY | O_SHARE | O_BINARY,
106
goto err; /* purecov: inspected */
109
if (my_read(file,(uchar*) head,32,MYF(MY_NABP))) goto err;
110
if (head[0] != (uchar) 254 || head[1] != (uchar) 254 ||
111
head[2] != 2 || head[3] != 1)
112
goto err; /* purecov: inspected */
117
sql_print_error("Character set information not found in '%s'. \
118
Please install the latest version of this file.",name);
122
/* TODO: Convert the character set to server system character set */
123
if (!get_charset(head[30],MYF(MY_WME)))
125
sql_print_error("Character set #%d is not supported for messagefile '%s'",
130
length=uint2korr(head+6); count=uint2korr(head+8);
132
if (count < error_messages)
135
Error message file '%s' had only %d error messages,\n\
136
but it should contain at least %d error messages.\n\
137
Check that the above file is the right version for this program!",
138
name,count,error_messages);
139
VOID(my_close(file,MYF(MY_WME)));
143
x_free((uchar*) *point); /* Free old language */
144
if (!(*point= (const char**)
145
my_malloc((size_t) (length+count*sizeof(char*)),MYF(0))))
147
funktpos=2; /* purecov: inspected */
148
goto err; /* purecov: inspected */
150
buff= (uchar*) (*point + count);
152
if (my_read(file, buff, (size_t) count*2,MYF(MY_NABP)))
154
for (i=0, pos= buff ; i< count ; i++)
156
(*point)[i]= (char*) buff+uint2korr(pos);
159
if (my_read(file, buff, length, MYF(MY_NABP)))
162
for (i=1 ; i < textcount ; i++)
164
point[i]= *point +uint2korr(head+10+i+i);
166
VOID(my_close(file,MYF(0)));
172
errmsg= "Not enough memory for messagefile '%s'";
175
errmsg= "Can't read from messagefile '%s'";
178
errmsg= "Can't find messagefile '%s'";
181
sql_print_error(errmsg, name);
184
VOID(my_close(file,MYF(MY_WME)));
62
190
Initiates error-messages used by my_func-library.
65
193
static void init_myfunc_errs()
67
195
init_glob_errs(); /* Initiate english errors */
196
if (!(specialflag & SPECIAL_ENGLISH))
70
198
EE(EE_FILENOTFOUND) = ER(ER_FILE_NOT_FOUND);
71
199
EE(EE_CANTCREATEFILE) = ER(ER_CANT_CREATE_FILE);