@@ -131,20 +131,20 @@ static const char* dummy = "dummy:"
131131 " \r\n " ;
132132
133133#ifdef MARIADB_BASE_VERSION
134- static const char * options_pattern[] = {" %s" , " --defaults-file=%s /mysql.ini" , " --datadir =%s/data " , " --language=%s/language " , " --skip-grant-tables" , " --innodb_data_home_dir=%s/data/ dbtmp_%s/ " ,
135- " --innodb_log_group_home_dir=%s/data/ dbtmp_%s/ " , " --innodb_tmpdir=%s/data/ dbtmp_%s/ " , " --innodb_fast_shutdown=2 " , " --log-error=%s/data/errors.log " , " --log_warnings=2" , NULL };
134+ static const char * options_pattern[] = {" %s" , " --defaults-file=%sdata /mysql.ini" , " --language =%s/language " , " --datadir=%sdata " , " --skip-grant-tables" , " --innodb_data_home_dir=%sdata/ dbtmp_%s" ,
135+ " --innodb_log_group_home_dir=%sdata/ dbtmp_%s" , " --innodb_tmpdir=%sdata/ dbtmp_%s" , " --log_warnings=2" , NULL };
136136#else
137- static const char * options_pattern[] = {" %s" , " --defaults-file=%s /mysql.ini" , " --datadir =%s/data " , " --language=%s/language " , " --skip-grant-tables" , " --innodb_data_home_dir=%s/data/dbtmp_%s/ " ,
138- " --innodb_log_group_home_dir=%s/data/ dbtmp_%s/ " , " --innodb_tmpdir=%s/data/ dbtmp_%s/ " , " --log_syslog=0" , NULL };
137+ static const char * options_pattern[] = {" %s" , " --defaults-file=%sdata /mysql.ini" , " --language =%s/language " , " --datadir=%sdata " , " --skip-grant-tables" , " --innodb_data_home_dir=%s/data/dbtmp_%s" ,
138+ " --innodb_log_group_home_dir=%sdata/ dbtmp_%s" , " --innodb_tmpdir=%sdata/ dbtmp_%s" , " --log_syslog=0" , NULL };
139139#endif
140140
141- class mysql_connection : boost::noncopyable {
141+ class mysql_connection {
142142 enum { num_options = sizeof (options_pattern) / sizeof (char *) };
143143
144144 char * m_options[num_options];
145145
146146 public:
147- mysql_connection (const char * path, const char * name, const char * dbname) : m_mysql(NULL )
147+ mysql_connection (const char * module_path, const char * path, const char * name, const char * dbname) : m_mysql(NULL )
148148 {
149149 if (0 == m_initialized) {
150150
@@ -162,6 +162,8 @@ class mysql_connection : boost::noncopyable {
162162
163163 if (0 == ni) {
164164 sprintf (mem, pattern, name);
165+ } else if (2 == ni) {
166+ sprintf (mem, pattern, module_path);
165167 } else {
166168 sprintf (mem, pattern, path, dbname);
167169 }
@@ -238,7 +240,7 @@ class mysql_connection : boost::noncopyable {
238240
239241int mysql_connection::m_initialized = 0 ;
240242
241- class mysql_results : boost::noncopyable {
243+ class mysql_results {
242244 public:
243245 mysql_results (const mysql_connection& mysql) : m_mysql(mysql), m_results(NULL ) { m_results = mysql_store_result (m_mysql); }
244246
@@ -298,8 +300,12 @@ void prepare_mysql(const char* path, const string& dbname)
298300 fs::create_directories (path);
299301 }
300302
301- string config = string (path) + " /mysql.ini" ;
303+ string config = string (path) + " /data" ;
304+ if (0 != access (config.c_str (), 6 )) {
305+ fs::create_directories (config.c_str ());
306+ }
302307
308+ config = string (path) + " /data/mysql.ini" ;
303309 if (0 != access (config.c_str (), 6 )) {
304310 ofstream out (config.c_str ());
305311
@@ -312,12 +318,7 @@ void prepare_mysql(const char* path, const string& dbname)
312318 }
313319 }
314320
315- config = string (path) + " /data" ;
316- if (0 != access (config.c_str (), 6 )) {
317- fs::create_directories (config.c_str ());
318- }
319-
320- config += " /dbtmp_" + dbname;
321+ config = string (path) + " /data/dbtmp_" + dbname;
321322 if (0 != access (config.c_str (), 6 )) {
322323 fs::create_directories (config.c_str ());
323324 }
@@ -1487,7 +1488,7 @@ int main(int argc, char* argv[])
14871488 {
14881489 string table_name = ((e20111106 == g_format) || (e20170531 == g_format)) ? " libavtors" : " libavtorname" ;
14891490
1490- mysql_connection mysql (g_outdir.c_str (), g_db_name.c_str (), db_name.c_str ());
1491+ mysql_connection mysql (module_path, g_outdir.c_str (), g_db_name.c_str (), db_name.c_str ());
14911492
14921493 if (!g_no_import) {
14931494 wcout << endl << " Creating MYSQL database \" " << utf8_to_wchar (db_name) << " \" " << endl << endl << flush;
@@ -1695,16 +1696,17 @@ int main(int argc, char* argv[])
16951696 string db_dir = data_dir + db_name + " /" ;
16961697 fs::remove_all (db_dir.c_str ());
16971698
1698- string file_to_del = string (g_outdir) + " /data/auto.cnf" ;
1699+ string file_to_del = data_dir + " /auto.cnf" ;
1700+ fs::remove (file_to_del);
1701+
1702+ file_to_del.assign (data_dir + " /mysql.ini" );
16991703 fs::remove (file_to_del);
17001704
17011705#ifdef MARIADB_BASE_VERSION
17021706 file_to_del.assign (data_dir + " /aria_log.00000001" );
17031707 fs::remove (file_to_del);
17041708 file_to_del.assign (data_dir + " /aria_log_control" );
17051709 fs::remove (file_to_del);
1706- file_to_del.assign (data_dir + " /errors.log" );
1707- fs::remove (file_to_del);
17081710#endif
17091711
17101712 if (fs::is_empty (data_dir)) {
0 commit comments