diff --git a/mx_mysql.c b/mx_mysql.c index 3aa8daee..c7d66759 100644 --- a/mx_mysql.c +++ b/mx_mysql.c @@ -41,6 +41,19 @@ static void mx_mysql_save_error(const char *err) { strncpy(mx_mysql_last_error, err, len+1); } +__attribute__ ((format (printf, 1, 2))) +static void mx_mysql_save_error_va(const char *restrict fmt, ...) { + char *s; + va_list ap; + va_start(ap, fmt); + int res = vasprintf(&s, fmt, ap); + va_end(ap); + if (res == -1) + return; + mx_mysql_save_error(s); + free(s); +} + char *mx_mysql_error(void) { return mx_mysql_last_error == NULL ? "no error information" : mx_mysql_last_error; } @@ -614,8 +627,7 @@ int mx_mysql_option_set_default_file(struct mx_mysql *mysql, char *fname) mx_assert_return_minus_errno(mysql, EINVAL); if (fname && (*fname == '/') && (euidaccess(fname, R_OK) != 0)) { - mx_log_warning("MySQL ignoring defaults file: euidaccess(\"%s\", R_OK) failed: %m", fname); - mx_log_warning("MySQL falling back to mysql default config search path."); + mx_mysql_save_error_va("%s: %m - falling back to mysql default config search path", fname); return -errno; }