Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
c0eebb83
Commit
c0eebb83
authored
Apr 06, 2016
by
Monty
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed but when generating .sys files
parent
cdd40431
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
24 deletions
+45
-24
extra/comp_err.c
extra/comp_err.c
+40
-21
sql/derror.cc
sql/derror.cc
+5
-3
No files found.
extra/comp_err.c
View file @
c0eebb83
...
...
@@ -145,7 +145,8 @@ static struct message *find_message(struct errors *err, const char *lang,
static
int
check_message_format
(
struct
errors
*
err
,
const
char
*
mess
);
static
uint
parse_input_file
(
const
char
*
file_name
,
struct
errors
**
top_error
,
struct
languages
**
top_language
);
struct
languages
**
top_language
,
uint
*
error_count
);
static
int
get_options
(
int
*
argc
,
char
***
argv
);
static
void
print_version
(
void
);
static
void
usage
(
void
);
...
...
@@ -162,14 +163,15 @@ static char *find_end_of_word(char *str);
static
void
clean_up
(
struct
languages
*
lang_head
,
struct
errors
*
error_head
);
static
int
create_header_files
(
struct
errors
*
error_head
);
static
int
create_sys_files
(
struct
languages
*
lang_head
,
struct
errors
*
error_head
,
uint
row_count
);
struct
errors
*
error_head
,
uint
max_error
,
uint
error_count
);
int
main
(
int
argc
,
char
*
argv
[])
{
MY_INIT
(
argv
[
0
]);
{
uint
row
_count
;
uint
max_error
,
error
_count
;
struct
errors
*
error_head
;
struct
languages
*
lang_head
;
DBUG_ENTER
(
"main"
);
...
...
@@ -177,32 +179,39 @@ int main(int argc, char *argv[])
charsets_dir
=
DEFAULT_CHARSET_DIR
;
my_umask_dir
=
0777
;
if
(
get_options
(
&
argc
,
&
argv
))
DBUG_RETURN
(
1
);
if
(
!
(
row_count
=
parse_input_file
(
TXTFILE
,
&
error_head
,
&
lang_head
)))
goto
err
;
if
(
!
(
max_error
=
parse_input_file
(
TXTFILE
,
&
error_head
,
&
lang_head
,
&
error_count
)))
{
fprintf
(
stderr
,
"Failed to parse input file %s
\n
"
,
TXTFILE
);
DBUG_RETURN
(
1
)
;
goto
err
;
}
if
(
lang_head
==
NULL
||
error_head
==
NULL
)
{
fprintf
(
stderr
,
"Failed to parse input file %s
\n
"
,
TXTFILE
);
DBUG_RETURN
(
1
)
;
goto
err
;
}
if
(
create_header_files
(
error_head
))
{
fprintf
(
stderr
,
"Failed to create header files
\n
"
);
DBUG_RETURN
(
1
)
;
goto
err
;
}
if
(
create_sys_files
(
lang_head
,
error_head
,
row
_count
))
if
(
create_sys_files
(
lang_head
,
error_head
,
max_error
,
error
_count
))
{
fprintf
(
stderr
,
"Failed to create sys files
\n
"
);
DBUG_RETURN
(
1
)
;
goto
err
;
}
clean_up
(
lang_head
,
error_head
);
DBUG_LEAVE
;
/* Can't use dbug after my_end() */
my_end
(
info_flag
?
MY_CHECK_ERROR
|
MY_GIVE_INFO
:
0
);
return
0
;
err:
clean_up
(
lang_head
,
error_head
);
DBUG_LEAVE
;
/* Can't use dbug after my_end() */
my_end
(
info_flag
?
MY_CHECK_ERROR
|
MY_GIVE_INFO
:
0
);
exit
(
1
);
}
}
...
...
@@ -313,7 +322,9 @@ static int create_header_files(struct errors *error_head)
static
int
create_sys_files
(
struct
languages
*
lang_head
,
struct
errors
*
error_head
,
uint
row_count
)
struct
errors
*
error_head
,
uint
max_error
,
uint
error_count
)
{
FILE
*
to
;
uint
csnum
=
0
,
length
,
i
,
row_nr
;
...
...
@@ -358,8 +369,8 @@ static int create_sys_files(struct languages *lang_head,
DBUG_RETURN
(
1
);
/* 2 is for 2 bytes to store row position / error message */
start_pos
=
(
long
)
(
HEADER_LENGTH
+
(
row
_count
+
section_count
)
*
2
);
fseek
(
to
,
start_pos
,
0
);
start_pos
=
(
long
)
(
HEADER_LENGTH
+
(
error
_count
+
section_count
)
*
2
);
my_fseek
(
to
,
start_pos
,
0
,
MYF
(
0
)
);
row_nr
=
0
;
for
(
tmp_error
=
error_head
;
tmp_error
;
tmp_error
=
tmp_error
->
next_error
)
{
...
...
@@ -383,15 +394,18 @@ static int create_sys_files(struct languages *lang_head,
row_nr
++
;
}
}
DBUG_ASSERT
(
error_count
==
row_nr
);
/* continue with header of the errmsg.sys file */
length
=
ftell
(
to
)
-
HEADER_LENGTH
-
(
row_count
+
section_count
)
*
2
;
length
=
(
my_ftell
(
to
,
MYF
(
0
))
-
HEADER_LENGTH
-
(
error_count
+
section_count
)
*
2
);
bzero
((
uchar
*
)
head
,
HEADER_LENGTH
);
bmove
((
uchar
*
)
head
,
(
uchar
*
)
file_head
,
4
);
bmove
((
uchar
*
)
head
,
(
uchar
*
)
file_head
,
4
);
head
[
4
]
=
1
;
int4store
(
head
+
6
,
length
);
int2store
(
head
+
10
,
row_count
);
int2store
(
head
+
12
,
section_count
);
int2store
(
head
+
10
,
max_error
);
/* Max error */
int2store
(
head
+
12
,
row_nr
);
int2store
(
head
+
14
,
section_count
);
head
[
30
]
=
csnum
;
my_fseek
(
to
,
0l
,
MY_SEEK_SET
,
MYF
(
0
));
...
...
@@ -400,8 +414,8 @@ static int create_sys_files(struct languages *lang_head,
MYF
(
MY_WME
|
MY_FNABP
)))
goto
err
;
file_pos
[
row_
count
]
=
(
ftell
(
to
)
-
start_pos
);
for
(
i
=
0
;
i
<
row_
count
;
i
++
)
file_pos
[
row_
nr
]
=
(
ftell
(
to
)
-
start_pos
);
for
(
i
=
0
;
i
<
row_
nr
;
i
++
)
{
/* Store length of each string */
int2store
(
head
,
file_pos
[
i
+
1
]
-
file_pos
[
i
]);
...
...
@@ -459,18 +473,19 @@ static void clean_up(struct languages *lang_head, struct errors *error_head)
static
uint
parse_input_file
(
const
char
*
file_name
,
struct
errors
**
top_error
,
struct
languages
**
top_lang
)
struct
languages
**
top_lang
,
uint
*
error_count
)
{
FILE
*
file
;
char
*
str
,
buff
[
1000
];
struct
errors
*
current_error
=
0
,
**
tail_error
=
top_error
;
struct
message
current_message
;
uint
rcount
=
0
;
uint
rcount
=
0
,
skiped_errors
=
0
;
my_bool
er_offset_found
=
0
;
DBUG_ENTER
(
"parse_input_file"
);
*
top_error
=
0
;
*
top_lang
=
0
;
*
error_count
=
0
;
section_start
=
er_offset
;
section_count
=
0
;
...
...
@@ -528,6 +543,7 @@ static uint parse_input_file(const char *file_name, struct errors **top_error,
}
for
(
;
er_offset
+
rcount
<
tmp_er_offset
;
rcount
++
)
{
skiped_errors
+=
skip
!=
0
;
current_error
=
generate_empty_message
(
er_offset
+
rcount
,
skip
);
*
tail_error
=
current_error
;
tail_error
=
&
current_error
->
next_error
;
...
...
@@ -603,6 +619,7 @@ static uint parse_input_file(const char *file_name, struct errors **top_error,
int2store
(
section_header
+
section_count
*
2
,
er_offset
+
rcount
-
section_start
);
section_count
++
;
*
error_count
=
rcount
-
skiped_errors
;
*
tail_error
=
0
;
/* Mark end of list */
...
...
@@ -1119,10 +1136,12 @@ get_one_option(int optid, const struct my_option *opt __attribute__ ((unused)),
switch
(
optid
)
{
case
'V'
:
print_version
();
my_end
(
0
);
exit
(
0
);
break
;
case
'?'
:
usage
();
my_end
(
0
);
exit
(
0
);
break
;
case
'#'
:
...
...
sql/derror.cc
View file @
c0eebb83
...
...
@@ -176,6 +176,7 @@ static bool check_error_mesg(const char *file_name, const char **errmsg)
struct
st_msg_file
{
uint
sections
;
uint
max_error
;
uint
errors
;
size_t
text_length
;
};
...
...
@@ -224,10 +225,11 @@ static File open_error_msg_file(const char *file_name, const char *language,
goto
err
;
/* purecov: inspected */
ret
->
text_length
=
uint4korr
(
head
+
6
);
ret
->
errors
=
uint2korr
(
head
+
10
);
ret
->
sections
=
uint2korr
(
head
+
12
);
ret
->
max_error
=
uint2korr
(
head
+
10
);
ret
->
errors
=
uint2korr
(
head
+
12
);
ret
->
sections
=
uint2korr
(
head
+
14
);
if
(
ret
->
errors
<
error_messages
||
ret
->
sections
!=
MAX_ERROR_RANGES
)
if
(
ret
->
max_error
<
error_messages
||
ret
->
sections
!=
MAX_ERROR_RANGES
)
{
sql_print_error
(
"\
Error message file '%s' had only %d error messages, but it should contain at least %d error messages.
\n
Check that the above file is the right version for this program!"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment