diff options
| author | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2006-12-23 13:25:01 +0000 |
|---|---|---|
| committer | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2006-12-23 13:25:01 +0000 |
| commit | 6e7add309dd9d985666e1107bd5c840faa881137 (patch) | |
| tree | 8d8313bcb0d1ca4e7b2ffe8cdc4597d88498cd38 /src/rdb.c | |
| parent | ee5559be07a5c5de2d870f3bc27cd2fb95b9f30b (diff) | |
BUILD : 1.7.17 (1209) BUGS : NOTES : Another batch of changes regarding RDB/MySQL; all functions are now doing proper error reporting; errors are not yet handled properly
git-svn-id: svn://svn.anope.org/anope/trunk@1209 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@928 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/rdb.c')
| -rw-r--r-- | src/rdb.c | 262 |
1 files changed, 140 insertions, 122 deletions
@@ -33,7 +33,7 @@ int rdb_open() { #ifdef USE_MYSQL - return do_mysql; /* db_mysql_open(); */ + return db_mysql_open(); /* db_mysql_open(); */ #endif return 0; @@ -75,11 +75,8 @@ char *rdb_quote(char *str) */ int rdb_tag_table(char *table) { - static char buf[1024]; - #ifdef USE_MYSQL - snprintf(buf, sizeof(buf), "UPDATE %s SET active='0'", table); - return db_mysql_query(buf); + return db_mysql_try("UPDATE %s SET active = 0", table); #endif return 0; @@ -89,12 +86,9 @@ int rdb_tag_table(char *table) /* Be sure to quote all user input in the clause! */ int rdb_tag_table_where(char *table, char *clause) { - static char buf[1024]; - #ifdef USE_MYSQL - snprintf(buf, sizeof(buf), "UPDATE %s SET active='0' WHERE %s", table, - clause); - return db_mysql_query(buf); + return db_mysql_try("UPDATE %s SET active = 0 WHERE %s", table, + clause); #endif return 0; @@ -106,11 +100,8 @@ int rdb_tag_table_where(char *table, char *clause) /* Empty an entire database table */ int rdb_empty_table(char *table) { - static char buf[1024]; - #ifdef USE_MYSQL - snprintf(buf, sizeof(buf), "TRUNCATE TABLE %s", table); - return db_mysql_query(buf); + return db_mysql_try("TRUNCATE TABLE %s", table); #endif return 0; @@ -122,11 +113,8 @@ int rdb_empty_table(char *table) /* Clean up a table with 'dirty' records (active = 0) */ int rdb_clean_table(char *table) { - static char buf[1024]; - #ifdef USE_MYSQL - snprintf(buf, sizeof(buf), "DELETE FROM %s WHERE active = 0", table); - return db_mysql_query(buf); + return db_mysql_try("DELETE FROM %s WHERE active = 0", table); #endif return 0; @@ -135,12 +123,9 @@ int rdb_clean_table(char *table) /* Be sure to quote user input in the clause! */ int rdb_clean_table_where(char *table, char *clause) { - static char buf[1024]; - #ifdef USE_MYSQL - snprintf(buf, sizeof(buf), "DELETE FROM %s WHERE active = 0 AND (%s)", - table, clause); - return db_mysql_query(buf); + return db_mysql_try("DELETE FROM %s WHERE active = 0 AND (%s)", table, + clause); #endif return 0; @@ -153,12 +138,8 @@ int rdb_clean_table_where(char *table, char *clause) */ int rdb_scrub_table(char *table, char *clause) { - - static char buf[1024]; - #ifdef USE_MYSQL - snprintf(buf, sizeof(buf), "DELETE FROM %s WHERE %s", table, clause); - return db_mysql_query(buf); + return db_mysql_try("DELETE FROM %s WHERE %s", table, clause); #endif return 0; @@ -167,7 +148,9 @@ int rdb_scrub_table(char *table, char *clause) /*************************************************************************/ -/* Execute a direct MySQL query. Do NOT forget to quote all user input! */ +/* Execute a direct MySQL query. Do NOT forget to quote all user input! + * NOTE: this ideally shouldn't be used, but that's probably a phase3 utopia + */ int rdb_direct_query(char *query) { @@ -188,7 +171,7 @@ int rdb_direct_query(char *query) */ int rdb_ns_set_display(char *newnick, char *oldnick) { - static char buf[1024]; + int ret = 0; char *q_newnick; char *q_oldnick; @@ -197,52 +180,59 @@ int rdb_ns_set_display(char *newnick, char *oldnick) #ifdef USE_MYSQL /* Change the display on NS_CORE */ - snprintf(buf, sizeof(buf), - "UPDATE anope_ns_core SET display='%s' WHERE display='%s'", - q_newnick, q_oldnick); - db_mysql_query(buf); + ret = + db_mysql_try + ("UPDATE anope_ns_core SET display = '%s' WHERE display = '%s'", + q_newnick, q_oldnick); /* Change the display on NS_ALIAS for all grouped nicks */ - snprintf(buf, sizeof(buf), - "UPDATE anope_ns_alias SET display='%s' WHERE display='%s'", + if (ret) + ret = + db_mysql_try + ("UPDATE anope_ns_alias SET display='%s' WHERE display='%s'", q_newnick, q_oldnick); - db_mysql_query(buf); /* Change the display on ChanServ ACCESS list */ - snprintf(buf, sizeof(buf), - "UPDATE anope_cs_access SET display='%s' WHERE display='%s'", + if (ret) + ret = + db_mysql_try + ("UPDATE anope_cs_access SET display='%s' WHERE display='%s'", q_newnick, q_oldnick); - db_mysql_query(buf); /* Change the display on ChanServ AKICK list */ - snprintf(buf, sizeof(buf), - "UPDATE anope_cs_akicks SET creator='%s' WHERE creator='%s'", + if (ret) + ret = + db_mysql_try + ("UPDATE anope_cs_akicks SET creator='%s' WHERE creator='%s'", q_newnick, q_oldnick); - db_mysql_query(buf); - /* Change the display on MemoServ sent memos */ - snprintf(buf, sizeof(buf), - "UPDATE anope_ms_info SET sender='%s' WHERE sender='%s'", + /* Change the display on MemoServ sent memos -- is it required? */ + if (ret) + ret = + db_mysql_try + ("UPDATE anope_ms_info SET sender='%s' WHERE sender='%s'", q_newnick, q_oldnick); - db_mysql_query(buf); - /* Change the display on MemoServ received memos */ - snprintf(buf, sizeof(buf), - "UPDATE anope_ms_info SET receiver='%s' WHERE receiver='%s'", + /* Change the display on MemoServ received memos -- is it required? */ + if (ret) + ret = + db_mysql_try + ("UPDATE anope_ms_info SET receiver='%s' WHERE receiver='%s'", q_newnick, q_oldnick); - db_mysql_query(buf); /* Change the akills set on the person's nick */ - snprintf(buf, sizeof(buf), - "UPDATE anope_cs_akicks SET dmask='%s' WHERE dmask='%s' AND flags & %d", + if (ret) + ret = + db_mysql_try + ("UPDATE anope_cs_akicks SET dmask='%s' WHERE dmask='%s' AND flags & %d", q_newnick, q_oldnick, AK_ISNICK); - db_mysql_query(buf); - /* Chane the display on NickServ ACCESS list */ - snprintf(buf, sizeof(buf), - "UPDATE anope_na_access SET display='%s' WHERE display='%s'", + /* Change the display on NickServ ACCESS list */ + if (ret) + ret = + db_mysql_try + ("UPDATE anope_na_access SET display='%s' WHERE display='%s'", q_newnick, q_oldnick); - db_mysql_query(buf); /* No need to update anope_cs_info here as it is updated when we * save the database. @@ -256,224 +246,252 @@ int rdb_ns_set_display(char *newnick, char *oldnick) free(q_newnick); free(q_oldnick); - return 0; + return ret; } /*************************************************************************/ -void rdb_save_ns_core(NickCore * nc) +int rdb_save_ns_core(NickCore * nc) { #ifdef USE_MYSQL - db_mysql_save_ns_core(nc); + return db_mysql_save_ns_core(nc); #endif + return 0; } /*************************************************************************/ -void rdb_save_ns_alias(NickAlias * na) +int rdb_save_ns_alias(NickAlias * na) { #ifdef USE_MYSQL - db_mysql_save_ns_alias(na); + return db_mysql_save_ns_alias(na); #endif + return 0; } /*************************************************************************/ -void rdb_save_ns_req(NickRequest * nr) +int rdb_save_ns_req(NickRequest * nr) { #ifdef USE_MYSQL - db_mysql_save_ns_req(nr); + return db_mysql_save_ns_req(nr); #endif + return 0; } /*************************************************************************/ -void rdb_save_cs_info(ChannelInfo * ci) +int rdb_save_cs_info(ChannelInfo * ci) { #ifdef USE_MYSQL - db_mysql_save_cs_info(ci); + return db_mysql_save_cs_info(ci); #endif + return 0; } /*************************************************************************/ -void rdb_save_bs_core(BotInfo * bi) +int rdb_save_bs_core(BotInfo * bi) { #ifdef USE_MYSQL - db_mysql_save_bs_core(bi); + return db_mysql_save_bs_core(bi); #endif + return 0; } /*************************************************************************/ -void rdb_save_hs_core(HostCore * hc) +int rdb_save_hs_core(HostCore * hc) { #ifdef USE_MYSQL - db_mysql_save_hs_core(hc); + return db_mysql_save_hs_core(hc); #endif + return 0; } /*************************************************************************/ -void rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime, - SList * ak, SList * sgl, SList * sql, SList * szl) +int rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime, + SList * ak, SList * sgl, SList * sql, SList * szl) { #ifdef USE_MYSQL - db_mysql_save_os_db(maxusercnt, maxusertime, ak, sgl, sql, szl); + return db_mysql_save_os_db(maxusercnt, maxusertime, ak, sgl, sql, szl); #endif + return 0; } /*************************************************************************/ -void rdb_save_news(NewsItem * ni) +int rdb_save_news(NewsItem * ni) { #ifdef USE_MYSQL - db_mysql_save_news(ni); + return db_mysql_save_news(ni); #endif + return 0; } /*************************************************************************/ -void rdb_load_bs_dbase(void) +int rdb_load_bs_dbase(void) { #ifdef USE_MYSQL - db_mysql_load_bs_dbase(); + return db_mysql_load_bs_dbase(); #endif + return 0; } /*************************************************************************/ -void rdb_load_hs_dbase(void) +int rdb_load_hs_dbase(void) { #ifdef USE_MYSQL - db_mysql_load_hs_dbase(); + return db_mysql_load_hs_dbase(); #endif + return 0; } /*************************************************************************/ -void rdb_load_ns_dbase(void) +int rdb_load_ns_dbase(void) { #ifdef USE_MYSQL - db_mysql_load_ns_dbase(); + return db_mysql_load_ns_dbase(); #endif + + return 0; } /*************************************************************************/ -void rdb_load_news(void) +int rdb_load_news(void) { + #ifdef USE_MYSQL - db_mysql_load_news(); + return db_mysql_load_news(); #endif + + return 0; } /*************************************************************************/ -void rdb_load_exceptions(void) +int rdb_load_exceptions(void) { + #ifdef USE_MYSQL - db_mysql_load_exceptions(); + return db_mysql_load_exceptions(); #endif + + return 0; } /*************************************************************************/ -void rdb_load_cs_dbase(void) +int rdb_load_cs_dbase(void) { + #ifdef USE_MYSQL - db_mysql_load_cs_dbase(); + return db_mysql_load_cs_dbase(); #endif + + return 0; } /*************************************************************************/ -void rdb_load_os_dbase(void) +int rdb_load_os_dbase(void) { + #ifdef USE_MYSQL - db_mysql_load_os_dbase(); + return db_mysql_load_os_dbase(); #endif + + return 0; } /*************************************************************************/ -void rdb_load_ns_req_dbase(void) +int rdb_load_ns_req_dbase(void) { + #ifdef USE_MYSQL - db_mysql_load_ns_req_dbase(); + return db_mysql_load_ns_req_dbase(); #endif + + return 0; } /*************************************************************************/ -void rdb_load_dbases(void) +#define LOAD_DBASE(num, name, func) {\ + if (!func) {\ + alog("RDB unable to load %s database (%d/8) !!!", name, num);\ + return 0;\ + }\ + if (debug)\ + alog("debug: RDB Loaded %s DataBase (%d/8)", name, num);\ +} + +int rdb_load_dbases(void) { if (!skeleton) { - rdb_load_ns_dbase(); - if (debug) - alog("debug: RDB Loaded NickServ DataBase (1/8)"); + LOAD_DBASE(1, "NickServ", rdb_load_ns_dbase()); + if (s_HostServ) { - rdb_load_hs_dbase(); - if (debug) - alog("debug: RDB Loaded HostServ DataBase (2/8)"); + LOAD_DBASE(2, "HostServ", rdb_load_hs_dbase()); } + if (s_BotServ) { - rdb_load_bs_dbase(); - if (debug) - alog("debug: RDB Loaded BotServ DataBase (3/8)"); + LOAD_DBASE(3, "BotServ", rdb_load_bs_dbase()); } - rdb_load_cs_dbase(); - if (debug) - alog("debug: RDB Loaded ChanServ DataBase (4/8)"); + + LOAD_DBASE(4, "ChanServ", rdb_load_cs_dbase()); } - rdb_load_os_dbase(); - if (debug) - alog("debug: RDB Loaded OperServ DataBase (5/8)"); - rdb_load_news(); - if (debug) - alog("debug: RDB Loaded News DataBase (6/8)"); - rdb_load_exceptions(); - if (debug) - alog("debug: RDB Loaded Exception Database (7/8)"); + + LOAD_DBASE(5, "OperServ", rdb_load_os_dbase()); + LOAD_DBASE(6, "News", rdb_load_news()); + LOAD_DBASE(7, "Exception", rdb_load_exceptions()); + if (PreNickDBName) { - rdb_load_ns_req_dbase(); - if (debug) - alog("debug: RDB Loaded PreNick DataBase (8/8)"); - } else { - if (debug) - alog("debug: RDB No need to load PreNickDB (8/8)"); + LOAD_DBASE(8, "PreNick", rdb_load_ns_req_dbase()); + } else if (debug) { + alog("debug: RDB No need to load PreNickDB (8/8)"); } + alog("RDB: All DataBases loaded."); } /*************************************************************************/ -void rdb_save_exceptions(Exception * e) +int rdb_save_exceptions(Exception * e) { + #ifdef USE_MYSQL - db_mysql_save_exceptions(e); + return db_mysql_save_exceptions(e); #endif + + return 0; } /* EOF */ |
