summaryrefslogtreecommitdiff
path: root/mysys/default_modify.c
diff options
context:
space:
mode:
authorunknown <monty@mishka.local>2005-07-18 15:33:18 +0300
committerunknown <monty@mishka.local>2005-07-18 15:33:18 +0300
commit68b4d7b74d80062b09edfdaeb7137c74b3071346 (patch)
tree1505fc52926154e1f91d7d822237aa1b9352cb3f /mysys/default_modify.c
parenta1da992f4f3da5a5c84a819c80dd5d09db9c66d8 (diff)
downloadmariadb-git-68b4d7b74d80062b09edfdaeb7137c74b3071346.tar.gz
Cleanups during review
Changed defaults option --instance to --defaults-group-suffix Changed option handling to allow --defaults-file, --defaults-extra-file and --defaults-group-suffix to be given in any order Changed MYSQL_INSTANCE to MYSQL_GROUP_SUFFIX mysql_print_defaults now understands --defaults-group-suffix Remove usage of my_tempnam() (not safe function) if( -> if ( and while( to while ( BitKeeper/deleted/.del-my_tempnam.c~a8562f15dad3012f: Delete: mysys/my_tempnam.c VC++Files/client/mysqlclient.dsp: Remove not used file my_tempnam.c VC++Files/client/mysqlclient_ia64.dsp: Remove not used file my_tempnam.c VC++Files/libmysql/libmysql.dsp: Remove not used file my_tempnam.c VC++Files/libmysql/libmysql_ia64.dsp: Remove not used file my_tempnam.c VC++Files/mysys/mysys.dsp: Remove not used file my_tempnam.c VC++Files/mysys/mysys_ia64.dsp: Remove not used file my_tempnam.c client/mysql.cc: Change to use get_defaults_options() Remove compiler warnings client/mysqldump.c: Indentation fixes Use quoted table name for 'primary_key_fields' extra/my_print_defaults.c: Add support for --defaults-group-suffix change to use get_default_options() extra/replace.c: Replace my_tempnam() with create_tmp_file() to allow us to remove my_tempnam.c include/config-win.h: Added DEFAULT_GROUP_SUFFIX_ENV include/my_sys.h: Change defaults_instance -> defaults_group_suffix Change get_defaults_files -> get_defaults_options libmysql/Makefile.shared: Added DEFAULT_GROUP_SUFFIX_ENV mysys/Makefile.am: Added DEFAULT_GROUP_SUFFIX_ENV Remove my_tempnam.c mysys/default.c: Changed --instance to --defaults-group-suffix Changed MYSQL_INSTANCE to MYSQL_GROUP_SUFFIX and moved the name to Makefile.am (mysys shouldn't by MySQL independent) Changed option handling to allow --defaults-file, --defaults-extra-file and --defaults-group-suffix to be given in any order mysys/default_modify.c: Optimized code to use allocated space more efficently Reduce code size Ensure that realloc() works independent of argument size mysys/my_bitmap.c: Added missing return sql/ha_innodb.cc: Change if( -> if ( sql/ha_ndbcluster.cc: Change while( -> while ( sql/item_cmpfunc.cc: Break loop early (simple optimization) sql/item_strfunc.cc: Change if( -> if ( sql/log.cc: Fixed comment sql/mysqld.cc: Change if( -> if ( sql/opt_range.cc: while( -> while ( if( -> if ( sql/parse_file.cc: Change if( -> if ( sql/sql_cache.cc: while( -> while ( sql/sql_parse.cc: Change if( -> if ( sql/sql_prepare.cc: Added comment sql/sql_select.cc: while( -> while ( Removed index variable by incrementing pointer sql/sql_show.cc: Change if( -> if ( sql/sql_yacc.yy: Change if( -> if ( tests/mysql_client_test.c: Added cast to first argument to bzero()
Diffstat (limited to 'mysys/default_modify.c')
-rw-r--r--mysys/default_modify.c65
1 files changed, 25 insertions, 40 deletions
diff --git a/mysys/default_modify.c b/mysys/default_modify.c
index ea384f9f27a..de03d783c68 100644
--- a/mysys/default_modify.c
+++ b/mysys/default_modify.c
@@ -20,8 +20,7 @@
#include <my_dir.h>
#define BUFF_SIZE 1024
-/* should be big enough to handle at least one line */
-#define RESERVE 1024
+#define RESERVE 1024 /* Extend buffer with this extent */
#ifdef __WIN__
#define NEWLINE "\r\n"
@@ -70,7 +69,7 @@ int modify_defaults_file(const char *file_location, const char *option,
char linebuff[BUFF_SIZE], *src_ptr, *dst_ptr, *file_buffer;
uint opt_len, optval_len, sect_len, nr_newlines= 0, buffer_size;
my_bool in_section= FALSE, opt_applied= 0;
- uint reserve_extended= 1, old_opt_len= 0;
+ uint reserve_extended;
uint new_opt_len;
int reserve_occupied= 0;
DBUG_ENTER("modify_defaults_file");
@@ -88,25 +87,21 @@ int modify_defaults_file(const char *file_location, const char *option,
new_opt_len= opt_len + 1 + optval_len + NEWLINE_LEN;
/* calculate the size of the buffer we need */
- buffer_size= sizeof(char) * (file_stat.st_size +
- /* option name len */
- opt_len +
- /* reserve for '=' char */
- 1 +
- /* option value len */
- optval_len +
- /* reserve space for newline */
- NEWLINE_LEN +
- /* The ending zero */
- 1 +
- /* reserve some additional space */
- RESERVE);
+ reserve_extended= (opt_len +
+ 1 + /* For '=' char */
+ optval_len + /* Option value len */
+ NEWLINE_LEN + /* Space for newline */
+ RESERVE); /* Some additional space */
+
+ buffer_size= (file_stat.st_size +
+ 1); /* The ending zero */
/*
Reserve space to read the contents of the file and some more
for the option we want to add.
*/
- if (!(file_buffer= (char*) my_malloc(buffer_size, MYF(MY_WME))))
+ if (!(file_buffer= (char*) my_malloc(buffer_size + reserve_extended,
+ MYF(MY_WME))))
goto malloc_err;
sect_len= (uint) strlen(section_name);
@@ -130,31 +125,20 @@ int modify_defaults_file(const char *file_location, const char *option,
my_isspace(&my_charset_latin1, *(src_ptr + opt_len)) ||
*(src_ptr + opt_len) == '\0'))
{
- /*
- we should change all options. If opt_applied is set, we are running
- into reserved memory area. Hence we should check for overruns.
- */
- if (opt_applied)
+ char *old_src_ptr= src_ptr;
+ src_ptr= strend(src_ptr+ opt_len); /* Find the end of the line */
+
+ /* could be negative */
+ reserve_occupied+= (int) new_opt_len - (int) (src_ptr - old_src_ptr);
+ if (reserve_occupied >= (int) reserve_extended)
{
- src_ptr+= opt_len; /* If we correct an option, we know it's name */
- old_opt_len= opt_len;
-
- while (*src_ptr++) /* Find the end of the line */
- old_opt_len++;
-
- /* could be negative */
- reserve_occupied+= (int) new_opt_len - (int) old_opt_len;
- if ((int) reserve_occupied > (int) (RESERVE*reserve_extended))
- {
- if (!(file_buffer= (char*) my_realloc(file_buffer, buffer_size +
- RESERVE*reserve_extended,
- MYF(MY_WME|MY_FREE_ON_ERROR))))
- goto malloc_err;
- reserve_extended++;
- }
+ reserve_extended= (uint) reserve_occupied + RESERVE;
+ if (!(file_buffer= (char*) my_realloc(file_buffer, buffer_size +
+ reserve_extended,
+ MYF(MY_WME|MY_FREE_ON_ERROR))))
+ goto malloc_err;
}
- else
- opt_applied= 1;
+ opt_applied= 1;
dst_ptr= add_option(dst_ptr, option_value, option, remove_option);
}
else
@@ -164,6 +148,7 @@ int modify_defaults_file(const char *file_location, const char *option,
{
dst_ptr= add_option(dst_ptr, option_value, option, remove_option);
opt_applied= 1; /* set the flag to do write() later */
+ reserve_occupied= new_opt_len+ opt_len + 1 + NEWLINE_LEN;
}
for (; nr_newlines; nr_newlines--)