Date: Wednesday, January 25, 2006 @ 11:58:42
  Author: csaba
    Path: /cvsroot/carob/libmysequoia/src

Modified: CarobMySQL.cpp (1.34 -> 1.35)

read_ini_file() implementation.


----------------+
 CarobMySQL.cpp |   39 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 38 insertions(+), 1 deletion(-)


Index: libmysequoia/src/CarobMySQL.cpp
diff -u libmysequoia/src/CarobMySQL.cpp:1.34 
libmysequoia/src/CarobMySQL.cpp:1.35
--- libmysequoia/src/CarobMySQL.cpp:1.34        Wed Jan 25 09:46:23 2006
+++ libmysequoia/src/CarobMySQL.cpp     Wed Jan 25 11:58:42 2006
@@ -21,13 +21,18 @@
 
 #include <CarobMySQL.hpp>
 #include <ResultSetMetaData.hpp>
+#include <IniParser.hpp>
 
 #include <Utils.hpp>
 
 /* MySQL include */
 #include <errmsg.h>
 
+#include <cstdlib>
+#include <string>
+
 using namespace CarobNS;
+using namespace std;
 
 CarobMYSQL::CarobMYSQL (MYSQL *mysql, my_bool free_me) :
    connectionPtr(0), stmtPtr(0), drsPtr(0), liveResultPtr(0)
@@ -820,8 +825,40 @@
   LOG4CXX_DEBUG(logger, "Leaving delete_row_data.");
 }
 
+
 void
 CarobMYSQL::read_ini_file()
 {
-  // TODO implementation
+  char *group;
+  string def_home_env = string(getenv("DEFAULT_HOME_ENV")) + "/my.cnf";
+  string home_dir = string(getenv("HOME")) + "/.my.cnf";
+  IniParser ini;
+
+/* 
+ * The order of reading the config files:
+ * 1. /etc/
+ * 2. getenv(DEFAULT_HOME_ENV)
+ * 3. ""
+ * 4. "~/"
+ * 5. user supplied options.my_cnf_file
+ */
+
+  ini.parseFile("/etc/my.cnf");
+  ini.parseFile(def_home_env.c_str());
+  ini.parseFile("my.cnf");
+  ini.parseFile(home_dir.c_str());
+  ini.parseFile(mysqlPtr->options.my_cnf_file);
+
+  if (mysqlPtr->options.my_cnf_group && *mysqlPtr->options.my_cnf_group)
+    group = mysqlPtr->options.my_cnf_group;
+  else
+    group = "client";
+  
+  mysqlPtr->options.host = cstrdup(ini.get(group, "host").c_str());
+  mysqlPtr->options.user = cstrdup(ini.get(group, "user").c_str());
+  mysqlPtr->options.password = cstrdup(ini.get(group, "password").c_str());
+  mysqlPtr->options.db = cstrdup(ini.get(group, "db").c_str());
+  mysqlPtr->options.port = atoi(ini.get(group, "port").c_str());
+  
+  push_init_command(ini.get(group, "init_command").c_str());
 }

_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits

Reply via email to