45
46
bool init_errmessage(void)
47
const char **errmsgs, **ptr;
50
Get a pointer to the old error messages pointer array.
51
read_texts() tries to free it.
53
errmsgs= my_error_unregister(ER_ERROR_FIRST, ER_ERROR_LAST);
55
/* Read messages from file. */
56
if (read_texts(ERRMSG_FILE, &errmsgs, ER_ERROR_LAST - ER_ERROR_FIRST + 1) &&
59
if (!(errmsgs= (const char**) my_malloc((ER_ERROR_LAST-ER_ERROR_FIRST+1)*
60
sizeof(char*), MYF(0))))
62
for (ptr= errmsgs; ptr < errmsgs + ER_ERROR_LAST - ER_ERROR_FIRST; ptr++)
66
49
/* Register messages for use with my_error(). */
67
if (my_error_register(errmsgs, ER_ERROR_FIRST, ER_ERROR_LAST))
50
if (my_error_register(drizzled_error_messages,
51
ER_ERROR_FIRST, ER_ERROR_LAST))
69
x_free((uchar*) errmsgs);
73
errmesg= errmsgs; /* Init global variable */
74
56
init_myfunc_errs(); /* Init myfunc messages */
80
Read text from packed textfile in language-directory.
82
If we can't read messagefile then it's panic- we can't continue.
85
Convert the character set to server system character set
88
static bool read_texts(const char *file_name,const char ***point,
92
uint count,funktpos,textcount;
101
if ((file=my_open(fn_format(name,file_name,language,"",4),
102
O_RDONLY | O_SHARE | O_BINARY,
104
goto err; /* purecov: inspected */
107
if (my_read(file,(uchar*) head,32,MYF(MY_NABP))) goto err;
108
if (head[0] != (uchar) 254 || head[1] != (uchar) 254 ||
109
head[2] != 2 || head[3] != 1)
110
goto err; /* purecov: inspected */
115
sql_print_error("Character set information not found in '%s'. \
116
Please install the latest version of this file.",name);
120
/* TODO: Convert the character set to server system character set */
121
if (!get_charset(head[30],MYF(MY_WME)))
123
sql_print_error("Character set #%d is not supported for messagefile '%s'",
128
length=uint2korr(head+6); count=uint2korr(head+8);
130
if (count < error_messages)
133
Error message file '%s' had only %d error messages,\n\
134
but it should contain at least %d error messages.\n\
135
Check that the above file is the right version for this program!",
136
name,count,error_messages);
137
VOID(my_close(file,MYF(MY_WME)));
141
x_free((uchar*) *point); /* Free old language */
142
if (!(*point= (const char**)
143
my_malloc((size_t) (length+count*sizeof(char*)),MYF(0))))
145
funktpos=2; /* purecov: inspected */
146
goto err; /* purecov: inspected */
148
buff= (uchar*) (*point + count);
150
if (my_read(file, buff, (size_t) count*2,MYF(MY_NABP)))
152
for (i=0, pos= buff ; i< count ; i++)
154
(*point)[i]= (char*) buff+uint2korr(pos);
157
if (my_read(file, buff, length, MYF(MY_NABP)))
160
for (i=1 ; i < textcount ; i++)
162
point[i]= *point +uint2korr(head+10+i+i);
164
VOID(my_close(file,MYF(0)));
170
errmsg= "Not enough memory for messagefile '%s'";
173
errmsg= "Can't read from messagefile '%s'";
176
errmsg= "Can't find messagefile '%s'";
179
sql_print_error(errmsg, name);
182
VOID(my_close(file,MYF(MY_WME)));
188
62
Initiates error-messages used by my_func-library.