diff options
-rw-r--r-- | dbug/dbug.c | 9 | ||||
-rw-r--r-- | include/my_dbug.h | 16 | ||||
-rw-r--r-- | libmysqld/examples/CMakeLists.txt | 6 | ||||
-rw-r--r-- | libmysqld/libmysqld.def | 60 | ||||
-rw-r--r-- | mysys/mf_tempdir.c | 2 | ||||
-rw-r--r-- | mysys/my_getopt.c | 19 | ||||
-rw-r--r-- | sql/mysqld.cc | 31 |
7 files changed, 122 insertions, 21 deletions
diff --git a/dbug/dbug.c b/dbug/dbug.c index 1cebbbcf72a..bbd1abb9598 100644 --- a/dbug/dbug.c +++ b/dbug/dbug.c @@ -2407,4 +2407,13 @@ int i_am_a_dummy_function() { return 0; } +#ifdef __WIN__ +char _db_doprnt_; +char _db_enter_; +char _db_pargs_; +char _db_process_; +char _db_push_; +char _db_return_; +#endif /*__WIN__*/ + #endif diff --git a/include/my_dbug.h b/include/my_dbug.h index a77e439b5db..fa7941faf1c 100644 --- a/include/my_dbug.h +++ b/include/my_dbug.h @@ -108,6 +108,22 @@ extern FILE *_db_fp_(void); #define DBUG_EXPLAIN(buf,len) #define DBUG_EXPLAIN_INITIAL(buf,len) #define IF_DBUG(A) + +#ifdef __WIN__ +/* + On windows all the dll export has to be declared in the *.def file + so as we export these symbols in DEBUG mode we have to export + these in the RELEASE mode also. So below are the dummy symbols + for the RELEASE export +*/ +extern char _db_doprnt_; +extern char _db_enter_; +extern char _db_pargs_; +extern char _db_process_; +extern char _db_push_; +extern char _db_return_; +#endif /*__WIN__*/ + #endif #ifdef __cplusplus } diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index a07d089c757..ca383d59b24 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -29,13 +29,13 @@ ADD_DEFINITIONS(-DEMBEDDED_LIBRARY) ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc ../../client/mysql.cc ../../client/readline.cc ../../client/sql_string.cc) -TARGET_LINK_LIBRARIES(mysql_embedded mysys yassl taocrypt zlib debug dbug regex strings wsock32) +TARGET_LINK_LIBRARIES(mysql_embedded debug wsock32) ADD_DEPENDENCIES(mysql_embedded libmysqld) ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.c) -TARGET_LINK_LIBRARIES(mysqltest_embedded mysys yassl taocrypt zlib debug dbug regex strings wsock32) +TARGET_LINK_LIBRARIES(mysqltest_embedded debug wsock32) ADD_DEPENDENCIES(mysqltest_embedded libmysqld) ADD_EXECUTABLE(mysql_client_test_embedded ../../tests/mysql_client_test.c) -TARGET_LINK_LIBRARIES(mysql_client_test_embedded debug dbug mysys yassl taocrypt zlib strings wsock32) +TARGET_LINK_LIBRARIES(mysql_client_test_embedded debug wsock32) ADD_DEPENDENCIES(mysql_client_test_embedded libmysqld) diff --git a/libmysqld/libmysqld.def b/libmysqld/libmysqld.def index 2aa75c0b23c..431c0efdaa0 100644 --- a/libmysqld/libmysqld.def +++ b/libmysqld/libmysqld.def @@ -2,6 +2,66 @@ LIBRARY LIBMYSQLD DESCRIPTION 'MySQL 5.1 Embedded Server Library' VERSION 5.1 EXPORTS + _db_process_ + _db_enter_ + _db_return_ + _db_push_ + _db_doprnt_ + _db_pargs_ + strnmov + get_charset + my_memmem + my_snprintf + pthread_exit + pthread_cond_signal + dynstr_append_mem + init_dynamic_string + dynstr_free + hash_free + my_vsnprintf + dynstr_append + my_close + my_open + dynstr_set + dynstr_append_os_quoted + my_delete + my_seek + my_write + create_temp_file + fn_format + dirname_part + my_hash_insert + hash_search + test_if_hard_path + my_copy + my_mkdir + my_sleep + my_strtod + pthread_cond_wait + my_strnncoll_simple + get_dynamic + my_regerror + init_dynamic_array2 + pthread_create + pthread_cond_init + my_regcomp + my_regexec + my_regex_end + my_regfree + longlong2str + my_set_exception_pointers + my_print_stacktrace + my_thread_stack_size + my_safe_print_str + my_stat + _hash_init + pthread_attr_setstacksize + pthread_attr_init + my_dirend + wild_compare + my_dir + my_micro_time + find_type_or_exit _dig_vec_upper _dig_vec_lower bmove_upp diff --git a/mysys/mf_tempdir.c b/mysys/mf_tempdir.c index b2c18c74347..d6492c90965 100644 --- a/mysys/mf_tempdir.c +++ b/mysys/mf_tempdir.c @@ -85,6 +85,8 @@ char *my_tmpdir(MY_TMPDIR *tmpdir) void free_tmpdir(MY_TMPDIR *tmpdir) { uint i; + if (!tmpdir->full_list.elements) + return; for (i=0; i<=tmpdir->max; i++) my_free(tmpdir->list[i], MYF(0)); delete_dynamic(&tmpdir->full_list); diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index 6a7ee748930..0f8055860d4 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -397,9 +397,10 @@ invalid value '%s'", my_progname, optp->name, optend); continue; } - get_one_option(optp->id, optp, - *((my_bool*) value) ? - (char*) "1" : disabled_my_option); + if (get_one_option(optp->id, optp, + *((my_bool*) value) ? + (char*) "1" : disabled_my_option)) + return EXIT_ARGUMENT_INVALID; continue; } argument= optend; @@ -457,7 +458,8 @@ invalid value '%s'", optp->arg_type == NO_ARG) { *((my_bool*) optp->value)= (my_bool) 1; - get_one_option(optp->id, optp, argument); + if (get_one_option(optp->id, optp, argument)) + return EXIT_UNSPECIFIED_ERROR; continue; } else if (optp->arg_type == REQUIRED_ARG || @@ -476,7 +478,8 @@ invalid value '%s'", { if (optp->var_type == GET_BOOL) *((my_bool*) optp->value)= (my_bool) 1; - get_one_option(optp->id, optp, argument); + if (get_one_option(optp->id, optp, argument)) + return EXIT_UNSPECIFIED_ERROR; continue; } /* Check if there are more arguments after this one */ @@ -501,7 +504,8 @@ invalid value '%s'", my_progname, argument, optp->name); return error; } - get_one_option(optp->id, optp, argument); + if (get_one_option(optp->id, optp, argument)) + return EXIT_UNSPECIFIED_ERROR; break; } } @@ -524,7 +528,8 @@ invalid value '%s'", my_progname, argument, optp->name); return error; } - get_one_option(optp->id, optp, argument); + if (get_one_option(optp->id, optp, argument)) + return EXIT_UNSPECIFIED_ERROR; (*argc)--; /* option handled (short or long), decrease argument count */ } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index a3b0123ee4a..99583ca8ea9 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -733,7 +733,7 @@ uint connection_count= 0; /* Function declarations */ pthread_handler_t signal_hand(void *arg); -static void mysql_init_variables(void); +static int mysql_init_variables(void); static void get_options(int *argc,char **argv); extern "C" my_bool mysqld_get_one_option(int, const struct my_option *, char *); static void set_server_version(void); @@ -3131,12 +3131,12 @@ static int init_common_variables(const char *conf_file_name, int argc, if (!rpl_filter || !binlog_filter) { sql_perror("Could not allocate replication and binlog filters"); - exit(1); + return 1; } - if (init_thread_environment()) + if (init_thread_environment() || + mysql_init_variables()) return 1; - mysql_init_variables(); #ifdef HAVE_TZNAME { @@ -3735,7 +3735,10 @@ version 5.0 and above. It is replaced by the binary log."); { /* as opt_bin_log==0, no need to free opt_bin_logname */ if (!(opt_bin_logname= my_strdup(opt_update_logname, MYF(MY_WME)))) - exit(EXIT_OUT_OF_MEMORY); + { + sql_print_error("Out of memory"); + return EXIT_OUT_OF_MEMORY; + } sql_print_error("The update log is no longer supported by MySQL in \ version 5.0 and above. It is replaced by the binary log. Now starting MySQL \ with --log-bin='%s' instead.",opt_bin_logname); @@ -7404,7 +7407,7 @@ To see what values a running MySQL server is using, type\n\ as these are initialized by my_getopt. */ -static void mysql_init_variables(void) +static int mysql_init_variables(void) { /* Things reset to zero */ opt_skip_slave_start= opt_reckless_slave = 0; @@ -7485,7 +7488,10 @@ static void mysql_init_variables(void) key_caches.empty(); if (!(dflt_key_cache= get_or_create_key_cache(default_key_cache_base.str, default_key_cache_base.length))) - exit(1); + { + sql_print_error("Cannot allocate the keycache"); + return 1; + } /* set key_cache_hash.default_value = dflt_key_cache */ multi_keycache_init(); @@ -7628,6 +7634,7 @@ static void mysql_init_variables(void) tmpenv = DEFAULT_MYSQL_HOME; (void) strmake(mysql_home, tmpenv, sizeof(mysql_home)-1); #endif + return 0; } @@ -7687,9 +7694,11 @@ mysqld_get_one_option(int optid, #endif break; #include <sslopt-case.h> +#ifndef EMBEDDED_LIBRARY case 'V': print_version(); exit(0); +#endif /*EMBEDDED_LIBRARY*/ case 'W': if (!argument) global_system_variables.log_warnings++; @@ -7914,14 +7923,14 @@ mysqld_get_one_option(int optid, if (gethostname(myhostname,sizeof(myhostname)) < 0) { sql_perror("Can't start server: cannot get my own hostname!"); - exit(1); + return 1; } ent=gethostbyname(myhostname); } if (!ent) { sql_perror("Can't start server: cannot resolve hostname!"); - exit(1); + return 1; } my_bind_addr = (ulong) ((in_addr*)ent->h_addr_list[0])->s_addr; } @@ -8118,8 +8127,8 @@ mysqld_get_one_option(int optid, case OPT_FT_BOOLEAN_SYNTAX: if (ft_boolean_check_syntax_string((uchar*) argument)) { - fprintf(stderr, "Invalid ft-boolean-syntax string: %s\n", argument); - exit(1); + sql_print_error("Invalid ft-boolean-syntax string: %s\n", argument); + return 1; } strmake(ft_boolean_syntax, argument, sizeof(ft_boolean_syntax)-1); break; |