summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dbug/dbug.c9
-rw-r--r--include/my_dbug.h16
-rw-r--r--libmysqld/examples/CMakeLists.txt6
-rw-r--r--libmysqld/libmysqld.def60
-rw-r--r--mysys/mf_tempdir.c2
-rw-r--r--mysys/my_getopt.c19
-rw-r--r--sql/mysqld.cc31
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;