From e60af26c28a428b6c9d85f4850cd496ca3937779 Mon Sep 17 00:00:00 2001 From: wr61 Date: Thu, 10 Mar 2005 00:25:20 +0000 Subject: more sql/embedded changes, see HISTORY git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/branches/0.1.4-wr@564 e10066b5-e1e2-0310-b819-94efdf66514b --- muggle-plugin/Makefile | 2 +- muggle-plugin/mg_mysql.c | 137 ++++++++++++++++++++++++++++------------------- muggle-plugin/mg_mysql.h | 2 +- muggle-plugin/muggle.c | 2 +- 4 files changed, 86 insertions(+), 57 deletions(-) diff --git a/muggle-plugin/Makefile b/muggle-plugin/Makefile index fd5c870..1bc0296 100644 --- a/muggle-plugin/Makefile +++ b/muggle-plugin/Makefile @@ -53,7 +53,7 @@ PACKAGE = vdr-$(ARCHIVE) INCLUDES += -I$(VDRDIR) -I$(VDRDIR)/include -I$(DVBDIR)/include \ $(shell mysql_config --cflags) $(shell taglib-config --cflags) -DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -DMYSQLCLIENTVERSION=$(shell mysql_config --version) +DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -DMYSQLCLIENTVERSION='"$(shell mysql_config --version)"' ### The object files (add further files here): diff --git a/muggle-plugin/mg_mysql.c b/muggle-plugin/mg_mysql.c index 5c3170a..f50cafb 100644 --- a/muggle-plugin/mg_mysql.c +++ b/muggle-plugin/mg_mysql.c @@ -22,6 +22,8 @@ bool needGenre2; static bool needGenre2_set; +bool NoHost(); +bool UsingEmbedded(); class mysqlhandle_t { public: @@ -29,22 +31,25 @@ class mysqlhandle_t { ~mysqlhandle_t(); }; -#ifndef HAVE_ONLY_SERVER + static char *datadir; -static char *server_args[] = +static char *embedded_args[] = { "muggle", "--datadir=/tmp", // stupid default "--key_buffer_size=32M" }; -static char *server_groups[] = + +#ifndef HAVE_ONLY_SERVER +static char *embedded_groups[] = { "embedded", "server", "muggle_SERVER", 0 }; +#endif void set_datadir(char *dir) @@ -52,7 +57,7 @@ set_datadir(char *dir) mgDebug(1,"setting datadir to %s",dir); struct stat stbuf; datadir=strdup(dir); - asprintf(&server_args[1],"--datadir=%s",datadir); + asprintf(&embedded_args[1],"--datadir=%s",datadir); if (stat(datadir,&stbuf)) mkdir(datadir,0755); if (stat(datadir,&stbuf)) @@ -60,14 +65,26 @@ set_datadir(char *dir) mgError("Cannot access datadir %s: errno=%d",datadir,errno); } } -#endif + mysqlhandle_t::mysqlhandle_t() { #ifndef HAVE_ONLY_SERVER - mgDebug(1,"calling mysql_server_init"); - if (mysql_server_init(sizeof(server_args) / sizeof(char *), - server_args, server_groups)) + int argv_size; + if (UsingEmbedded()) + { + mgDebug(1,"calling mysql_server_init for embedded"); + argv_size = sizeof(embedded_args) / sizeof(char *); + } + else + { + if (strcmp(MYSQLCLIENTVERSION,"4.1.11")<0) + mgError("You have embedded mysql. For accessing external servers " + "you need mysql 4.1.11 but you have only %s", MYSQLCLIENTVERSION); + mgDebug(1,"calling mysql_server_init for external"); + argv_size = -1; + } + if (mysql_server_init(argv_size, embedded_args, embedded_groups)) mgDebug(3,"mysql_server_init failed"); #endif } @@ -268,6 +285,12 @@ static char *db_cmds[] = "TYPE=MyISAM;" }; +bool +mgmySql::sql_query(const char *sql) +{ + return mysql_query(m_db,sql); +} + MYSQL_RES* mgmySql::exec_sql( string query) @@ -275,7 +298,7 @@ mgmySql::exec_sql( string query) if (!m_db || query.empty()) return 0; mgDebug(4,"exec_sql(%X,%s)",m_db,query.c_str()); - if (mysql_query (m_db, (query + ';').c_str ())) + if (sql_query (query.c_str ())) { mgError("SQL Error in %s: %s",query.c_str(),mysql_error (m_db)); std::cout<<"ERROR in " << query << ":" << mysql_error(m_db)<