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
093faea6
Commit
093faea6
authored
Jun 22, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge pchardin@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/cps/mysql/trees/mysql-5.0
parents
18242cfc
b09aecd8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
70 additions
and
48 deletions
+70
-48
mysys/default_modify.c
mysys/default_modify.c
+70
-48
No files found.
mysys/default_modify.c
View file @
093faea6
/* Copyright (C) 2005 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "my_global.h"
#include "mysys_priv.h"
#include "m_string.h"
#include <my_dir.h>
#define BUFF_SIZE 1024
#ifdef __WIN__
#define NEWLINE "\r\n"
#define NEWLINE_LEN 2
#else
#define NEWLINE "\n"
#define NEWLINE_LEN 1
#endif
static
char
*
add_option
(
char
*
dst
,
const
char
*
option_value
,
const
char
*
option
,
int
remove_option
);
/*
/*
Add/remove option to the option file section.
Add/remove option to the option file section.
...
@@ -15,6 +50,8 @@
...
@@ -15,6 +50,8 @@
into a buffer. Then we look for the option within this section and
into a buffer. Then we look for the option within this section and
change/remove it. In the end we get a buffer with modified version of the
change/remove it. In the end we get a buffer with modified version of the
file. Then we write it to the file, truncate it if needed and close it.
file. Then we write it to the file, truncate it if needed and close it.
Note that there is a small time gap, when the file is incomplete,
and this theoretically might introduce a problem.
RETURN
RETURN
0 - ok
0 - ok
...
@@ -22,24 +59,6 @@
...
@@ -22,24 +59,6 @@
2 - cannot open the file
2 - cannot open the file
*/
*/
#include "my_global.h"
#include "mysys_priv.h"
#include "m_string.h"
#include <my_dir.h>
#define BUFF_SIZE 1024
#ifdef __WIN__
#define NEWLINE "\r\n"
#define NEWLINE_LEN 2
#else
#define NEWLINE "\n"
#define NEWLINE_LEN 1
#endif
static
char
*
add_option
(
char
*
dst
,
const
char
*
option_value
,
const
char
*
option
,
int
remove_option
);
int
modify_defaults_file
(
const
char
*
file_location
,
const
char
*
option
,
int
modify_defaults_file
(
const
char
*
file_location
,
const
char
*
option
,
const
char
*
option_value
,
const
char
*
option_value
,
const
char
*
section_name
,
int
remove_option
)
const
char
*
section_name
,
int
remove_option
)
...
@@ -47,7 +66,7 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -47,7 +66,7 @@ int modify_defaults_file(const char *file_location, const char *option,
FILE
*
cnf_file
;
FILE
*
cnf_file
;
MY_STAT
file_stat
;
MY_STAT
file_stat
;
char
linebuff
[
BUFF_SIZE
],
*
src_ptr
,
*
dst_ptr
,
*
file_buffer
;
char
linebuff
[
BUFF_SIZE
],
*
src_ptr
,
*
dst_ptr
,
*
file_buffer
;
uint
optlen
,
optval_len
,
sect_len
,
nr_newlines
=
0
;
uint
opt
_
len
,
optval_len
,
sect_len
,
nr_newlines
=
0
;
my_bool
in_section
=
FALSE
,
opt_applied
=
0
;
my_bool
in_section
=
FALSE
,
opt_applied
=
0
;
DBUG_ENTER
(
"modify_defaults_file"
);
DBUG_ENTER
(
"modify_defaults_file"
);
...
@@ -58,7 +77,7 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -58,7 +77,7 @@ int modify_defaults_file(const char *file_location, const char *option,
if
(
my_fstat
(
fileno
(
cnf_file
),
&
file_stat
,
MYF
(
0
)))
if
(
my_fstat
(
fileno
(
cnf_file
),
&
file_stat
,
MYF
(
0
)))
goto
err
;
goto
err
;
optlen
=
(
uint
)
strlen
(
option
);
opt
_
len
=
(
uint
)
strlen
(
option
);
optval_len
=
(
uint
)
strlen
(
option_value
);
optval_len
=
(
uint
)
strlen
(
option_value
);
/*
/*
...
@@ -66,17 +85,18 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -66,17 +85,18 @@ int modify_defaults_file(const char *file_location, const char *option,
for the option we want to add.
for the option we want to add.
*/
*/
if
(
!
(
file_buffer
=
(
char
*
)
my_malloc
(
sizeof
(
char
)
*
if
(
!
(
file_buffer
=
(
char
*
)
my_malloc
(
sizeof
(
char
)
*
(
file_stat
.
st_size
+
(
file_stat
.
st_size
+
/* option name len */
/* option name len */
optlen
+
opt_len
+
/* reserve space for newline */
/* reserve space for newline */
NEWLINE_LEN
+
NEWLINE_LEN
+
/* reserve for '=' char */
/* reserve for '=' char */
1
+
1
+
/* option value len */
/* option value len */
optval_len
+
optval_len
+
/* The ending zero plus some safety */
/* The ending zero */
FN_REFLEN
),
MYF
(
MY_WME
))))
1
),
MYF
(
MY_WME
))))
goto
malloc_err
;
goto
malloc_err
;
sect_len
=
(
uint
)
strlen
(
section_name
);
sect_len
=
(
uint
)
strlen
(
section_name
);
...
@@ -94,10 +114,11 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -94,10 +114,11 @@ int modify_defaults_file(const char *file_location, const char *option,
continue
;
continue
;
}
}
if
(
!
opt_applied
&&
in_section
&&
!
strncmp
(
src_ptr
,
option
,
optlen
)
&&
/* correct the option */
(
*
(
src_ptr
+
optlen
)
==
'='
||
if
(
!
opt_applied
&&
in_section
&&
!
strncmp
(
src_ptr
,
option
,
opt_len
)
&&
my_isspace
(
&
my_charset_latin1
,
*
(
src_ptr
+
optlen
))
||
(
*
(
src_ptr
+
opt_len
)
==
'='
||
*
(
src_ptr
+
optlen
)
==
'\0'
))
my_isspace
(
&
my_charset_latin1
,
*
(
src_ptr
+
opt_len
))
||
*
(
src_ptr
+
opt_len
)
==
'\0'
))
{
{
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
opt_applied
=
1
;
opt_applied
=
1
;
...
@@ -107,11 +128,12 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -107,11 +128,12 @@ int modify_defaults_file(const char *file_location, const char *option,
/* If going to new group and we have option to apply, do it now */
/* If going to new group and we have option to apply, do it now */
if
(
in_section
&&
!
opt_applied
&&
*
src_ptr
==
'['
)
if
(
in_section
&&
!
opt_applied
&&
*
src_ptr
==
'['
)
{
{
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
dst_ptr
=
add_option
(
dst_ptr
,
option_value
,
option
,
remove_option
);
opt_applied
=
1
;
/* set the flag to do write() later */
}
}
for
(;
nr_newlines
;
nr_newlines
--
)
for
(;
nr_newlines
;
nr_newlines
--
)
dst_ptr
=
strmov
(
dst_ptr
,
NEWLINE
);
dst_ptr
=
strmov
(
dst_ptr
,
NEWLINE
);
dst_ptr
=
strmov
(
dst_ptr
,
linebuff
);
dst_ptr
=
strmov
(
dst_ptr
,
linebuff
);
}
}
/* Look for a section */
/* Look for a section */
...
@@ -120,13 +142,13 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -120,13 +142,13 @@ int modify_defaults_file(const char *file_location, const char *option,
/* Copy the line to the buffer */
/* Copy the line to the buffer */
if
(
!
strncmp
(
++
src_ptr
,
section_name
,
sect_len
))
if
(
!
strncmp
(
++
src_ptr
,
section_name
,
sect_len
))
{
{
src_ptr
+=
sect_len
;
src_ptr
+=
sect_len
;
/* Skip over whitespaces. They are allowed after section name */
/* Skip over whitespaces. They are allowed after section name */
for
(;
my_isspace
(
&
my_charset_latin1
,
*
src_ptr
);
src_ptr
++
)
for
(;
my_isspace
(
&
my_charset_latin1
,
*
src_ptr
);
src_ptr
++
)
{}
{}
if
(
*
src_ptr
!=
']'
)
if
(
*
src_ptr
!=
']'
)
continue
;
/* Missing closing parenthesis. Assume this was no group */
continue
;
/* Missing closing parenthesis. Assume this was no group */
in_section
=
TRUE
;
in_section
=
TRUE
;
}
}
else
else
...
@@ -149,10 +171,10 @@ int modify_defaults_file(const char *file_location, const char *option,
...
@@ -149,10 +171,10 @@ int modify_defaults_file(const char *file_location, const char *option,
{
{
/* Don't write the file if there are no changes to be made */
/* Don't write the file if there are no changes to be made */
if
(
my_chsize
(
fileno
(
cnf_file
),
(
my_off_t
)
(
dst_ptr
-
file_buffer
),
0
,
if
(
my_chsize
(
fileno
(
cnf_file
),
(
my_off_t
)
(
dst_ptr
-
file_buffer
),
0
,
MYF
(
MY_WME
))
||
MYF
(
MY_WME
))
||
my_fseek
(
cnf_file
,
0
,
MY_SEEK_SET
,
MYF
(
0
))
||
my_fseek
(
cnf_file
,
0
,
MY_SEEK_SET
,
MYF
(
0
))
||
my_fwrite
(
cnf_file
,
file_buffer
,
(
uint
)
(
dst_ptr
-
file_buffer
),
my_fwrite
(
cnf_file
,
file_buffer
,
(
uint
)
(
dst_ptr
-
file_buffer
),
MYF
(
MY_NABP
)))
MYF
(
MY_NABP
)))
goto
err
;
goto
err
;
}
}
if
(
my_fclose
(
cnf_file
,
MYF
(
MY_WME
)))
if
(
my_fclose
(
cnf_file
,
MYF
(
MY_WME
)))
...
...
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