Updated init script.
[dtbartle/bnbt.git] / bnbt_mysql.cpp
1 /***\r
2 *\r
3 * BNBT Beta 8.0 - A C++ BitTorrent Tracker\r
4 * Copyright (C) 2003-2004 Trevor Hogan\r
5 *\r
6 * CBTT variations (C) 2003-2005 Harold Feit\r
7 *\r
8 * This library is free software; you can redistribute it and/or\r
9 * modify it under the terms of the GNU Lesser General Public\r
10 * License as published by the Free Software Foundation; either\r
11 * version 2.1 of the License, or (at your option) any later version.\r
12 *\r
13 * This library is distributed in the hope that it will be useful,\r
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
16 * Lesser General Public License for more details.\r
17 *\r
18 * You should have received a copy of the GNU Lesser General Public\r
19 * License along with this library; if not, write to the Free Software\r
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
21 *\r
22 ***/\r
23 \r
24 #ifdef BNBT_MYSQL\r
25 \r
26 #include "bnbt.h"\r
27 #include "bnbt_mysql.h"\r
28 #include "util.h"\r
29 \r
30 MYSQL *gpMySQL;\r
31 string gstrMySQLHost;\r
32 string gstrMySQLDatabase;\r
33 string gstrMySQLUser;\r
34 string gstrMySQLPassword;\r
35 string gstrMySQLPrefix;\r
36 int giMySQLPort;\r
37 \r
38 string UTIL_StringToMySQL( const string &strString )\r
39 {\r
40         char *szMySQL = new char[strString.size( ) * 2 + 1];\r
41 \r
42         if( gpMySQL )\r
43                 mysql_real_escape_string( gpMySQL, szMySQL, strString.c_str( ), strString.size( ) );\r
44 \r
45         string strMySQL = szMySQL;\r
46 \r
47         delete [] szMySQL;\r
48 \r
49         return strMySQL;\r
50 }\r
51 \r
52 CMySQLQuery :: CMySQLQuery( string strQuery )\r
53 {\r
54         mysql_real_query( gpMySQL, strQuery.c_str( ), strQuery.size( ) );\r
55 \r
56         m_pRes = mysql_store_result( gpMySQL );\r
57 \r
58         if( mysql_errno( gpMySQL ) )\r
59         {\r
60                 m_pRes = NULL;\r
61 \r
62                 if( gbDebug )\r
63                         UTIL_LogPrint( "mysql error - %s\n", mysql_error( gpMySQL ) );\r
64         }\r
65 }\r
66 \r
67 CMySQLQuery :: ~CMySQLQuery( )\r
68 {\r
69         if( m_pRes )\r
70                 mysql_free_result( m_pRes );\r
71 }\r
72 \r
73 vector<string> CMySQLQuery :: nextRow( )\r
74 {\r
75         vector<string> vecReturn;\r
76 \r
77         if( m_pRes )\r
78         {\r
79                 MYSQL_ROW row;\r
80 \r
81                 unsigned int num_fields = mysql_num_fields( m_pRes );\r
82                 unsigned int i;\r
83 \r
84                 vecReturn.reserve( num_fields );\r
85 \r
86                 if( row = mysql_fetch_row( m_pRes ) )\r
87                 {\r
88                         unsigned long *lengths = mysql_fetch_lengths( m_pRes );\r
89 \r
90                         for( i = 0; i < num_fields; i++ )\r
91                                 vecReturn.push_back( string( row[i], lengths[i] ) );\r
92                 }\r
93         }\r
94 \r
95         return vecReturn;\r
96 }\r
97 \r
98 #endif\r