| 248 | |
| 249 | |
| 250 | static int create_header_files(struct errors *error_head) |
| 251 | { |
| 252 | uint er_last= 0; |
| 253 | FILE *er_definef, *sql_statef, *er_namef; |
| 254 | struct errors *tmp_error; |
| 255 | struct message *er_msg; |
| 256 | const char *er_text; |
| 257 | |
| 258 | DBUG_ENTER("create_header_files"); |
| 259 | |
| 260 | if (!(er_definef= my_fopen(HEADERFILE, O_WRONLY, MYF(MY_WME)))) |
| 261 | { |
| 262 | DBUG_RETURN(1); |
| 263 | } |
| 264 | if (!(sql_statef= my_fopen(STATEFILE, O_WRONLY, MYF(MY_WME)))) |
| 265 | { |
| 266 | my_fclose(er_definef, MYF(0)); |
| 267 | DBUG_RETURN(1); |
| 268 | } |
| 269 | if (!(er_namef= my_fopen(NAMEFILE, O_WRONLY, MYF(MY_WME)))) |
| 270 | { |
| 271 | my_fclose(er_definef, MYF(0)); |
| 272 | my_fclose(sql_statef, MYF(0)); |
| 273 | DBUG_RETURN(1); |
| 274 | } |
| 275 | |
| 276 | fprintf(er_definef, "/* Autogenerated file, please don't edit */\n\n"); |
| 277 | fprintf(sql_statef, "/* Autogenerated file, please don't edit */\n\n"); |
| 278 | fprintf(er_namef, "/* Autogenerated file, please don't edit */\n\n"); |
| 279 | |
| 280 | fprintf(er_definef, "#define ER_ERROR_FIRST %d\n", error_head->d_code); |
| 281 | |
| 282 | for (tmp_error= error_head; tmp_error; tmp_error= tmp_error->next_error) |
| 283 | { |
| 284 | if (tmp_error->is_padding) |
| 285 | { |
| 286 | er_last= tmp_error->d_code; |
| 287 | continue; |
| 288 | } |
| 289 | /* |
| 290 | generating mysqld_error.h |
| 291 | fprintf() will automatically add \r on windows |
| 292 | */ |
| 293 | fprintf(er_definef, "#define %s %d\n", tmp_error->er_name, |
| 294 | tmp_error->d_code); |
| 295 | er_last= tmp_error->d_code; |
| 296 | |
| 297 | /* generating sql_state.h file */ |
| 298 | if (tmp_error->sql_code1[0] || tmp_error->sql_code2[0]) |
| 299 | fprintf(sql_statef, |
| 300 | "{ %-40s,\"%s\", \"%s\" },\n", tmp_error->er_name, |
| 301 | tmp_error->sql_code1, tmp_error->sql_code2); |
| 302 | /*generating er_name file */ |
| 303 | er_msg= find_message(tmp_error, default_language, 0); |
| 304 | er_text = (er_msg ? er_msg->text : ""); |
| 305 | fprintf(er_namef, "{ \"%s\", %d, \"", tmp_error->er_name, |
| 306 | tmp_error->d_code); |
| 307 | print_escaped_string(er_namef, er_text); |
no test coverage detected