diff --git a/mx_mysql.c b/mx_mysql.c index 12e0766..5027f1e 100644 --- a/mx_mysql.c +++ b/mx_mysql.c @@ -755,18 +755,28 @@ static inline int _mx_mysql_bind_validate(struct mx_mysql_bind *b) /**********************************************************************/ -int mx_mysql_init(struct mx_mysql **mysql) +int mx_mysql_initialize(struct mx_mysql **mysql) { struct mx_mysql *m; - int res; mx_assert_return_minus_errno(mysql, EINVAL); mx_assert_return_minus_errno(!(*mysql), EUCLEAN); m = mx_calloc_forever(1, sizeof(*m)); + *mysql = m; + + return 0; +} + +int mx_mysql_init(struct mx_mysql *mysql) +{ + int res; + + mx_assert_return_minus_errno(mysql, EINVAL); + do { - res = mx__mysql_init(m); + res = mx__mysql_init(mysql); if (res == 0) break; @@ -778,8 +788,6 @@ int mx_mysql_init(struct mx_mysql **mysql) } while (1); - *mysql = m; - return 0; } @@ -883,7 +891,12 @@ int mx_mysql_connect(struct mx_mysql **mysql) mx_assert_return_minus_errno(mysql, EINVAL); if (!(*mysql)) { - res = mx_mysql_init(mysql); + res = mx_mysql_initialize(mysql); + if (res < 0) + return res; + } + if (!(*mysql)->mysql) { + res = mx_mysql_init(*mysql); if (res < 0) return res; } diff --git a/mx_mysql.h b/mx_mysql.h index 1e5718e..5e07102 100644 --- a/mx_mysql.h +++ b/mx_mysql.h @@ -97,7 +97,9 @@ struct mx_mysql_stmt { #define mx_mysql_statement_param_bind(s, i, t, p) mx_mysql_bind_var(&((s)->param), (i), t, (p)) #define mx_mysql_statement_result_bind(s, i, t, p) mx_mysql_bind_var(&((s)->result), (i), t, (p)) -int mx_mysql_init(struct mx_mysql **); +int mx_mysql_initialize(struct mx_mysql **mysql); +int mx_mysql_init(struct mx_mysql *mysql); + int mx_mysql_free(struct mx_mysql **mysql); int mx_mysql_option_set_default_file(struct mx_mysql *mysql, char *fname); diff --git a/mxqdump.c b/mxqdump.c index f64e630..bea145e 100644 --- a/mxqdump.c +++ b/mxqdump.c @@ -665,7 +665,7 @@ int main(int argc, char *argv[]) if (arg_jobs && arg_status == UINT64_UNSET) arg_status = MXQ_JOB_STATUS_RUNNING; - res = mx_mysql_init(&mysql); + res = mx_mysql_initialize(&mysql); assert(res == 0); mx_mysql_option_set_default_file(mysql, arg_mysql_default_file); diff --git a/mxqkill.c b/mxqkill.c index be5c021..54c03a5 100644 --- a/mxqkill.c +++ b/mxqkill.c @@ -317,7 +317,7 @@ int main(int argc, char *argv[]) } } - res = mx_mysql_init(&mysql); + res = mx_mysql_initialize(&mysql); assert(res == 0); mx_mysql_option_set_default_file(mysql, arg_mysql_default_file); diff --git a/mxqsub.c b/mxqsub.c index 975ca2e..92e37bc 100644 --- a/mxqsub.c +++ b/mxqsub.c @@ -732,7 +732,7 @@ int main(int argc, char *argv[]) /******************************************************************/ - res = mx_mysql_init(&mysql); + res = mx_mysql_initialize(&mysql); assert(res == 0); mx_mysql_option_set_default_file(mysql, arg_mysql_default_file);