diff options
author | Marc Alff <marc.alff@sun.com> | 2010-02-23 17:45:49 -0700 |
---|---|---|
committer | Marc Alff <marc.alff@sun.com> | 2010-02-23 17:45:49 -0700 |
commit | c7fa0c1b34169b225a89b586a87b8065fd54ec27 (patch) | |
tree | 9f96cd5e5aa2b4da3e522a2c30dd778961c93301 /extra/comp_err.c | |
parent | 10ca1ec054f972c5efcec340bc023977547c7097 (diff) | |
download | mariadb-git-c7fa0c1b34169b225a89b586a87b8065fd54ec27.tar.gz |
Bug#10143 Perror not showing error description
Backport to 5.5.99
Diffstat (limited to 'extra/comp_err.c')
-rw-r--r-- | extra/comp_err.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/extra/comp_err.c b/extra/comp_err.c index 0b894dae477..e4a07caa2ef 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -199,11 +199,34 @@ int main(int argc, char *argv[]) } +static void print_escaped_string(FILE *f, const char *str) +{ + const char *tmp = str; + + while (tmp[0] != 0) + { + switch (tmp[0]) + { + case '\\': fprintf(f, "\\\\"); break; + case '\'': fprintf(f, "\\\'"); break; + case '\"': fprintf(f, "\\\""); break; + case '\n': fprintf(f, "\\n"); break; + case '\r': fprintf(f, "\\r"); break; + default: fprintf(f, "%c", tmp[0]); + } + tmp++; + } +} + + static int create_header_files(struct errors *error_head) { uint er_last; FILE *er_definef, *sql_statef, *er_namef; struct errors *tmp_error; + struct message *er_msg; + const char *er_text; + DBUG_ENTER("create_header_files"); LINT_INIT(er_last); @@ -245,9 +268,12 @@ static int create_header_files(struct errors *error_head) "{ %-40s,\"%s\", \"%s\" },\n", tmp_error->er_name, tmp_error->sql_code1, tmp_error->sql_code2); /*generating er_name file */ - fprintf(er_namef, "{ \"%s\", %d },\n", tmp_error->er_name, - tmp_error->d_code); - + er_msg= find_message(tmp_error, default_language, 0); + er_text = (er_msg ? er_msg->text : ""); + fprintf(er_namef, "{ \"%s\", %d, \"", tmp_error->er_name, + tmp_error->d_code); + print_escaped_string(er_namef, er_text); + fprintf(er_namef, "\" },\n"); } /* finishing off with mysqld_error.h */ fprintf(er_definef, "#define ER_ERROR_LAST %d\n", er_last); |