Beispiel #1
0
void db_removefromchans(int nickid)
{
	MYSQL_RES *resptr;
	char **res;
	db_query("SELECT " TBL_ISON ".chanid, channel FROM " TBL_ISON ", "
				TBL_CHAN " WHERE nickid=\'%d\' AND " TBL_CHAN ".chanid = "
				TBL_ISON ".chanid", nickid);
	resptr = mysql_store_result(myptr);
	db_query("DELETE FROM " TBL_ISON " WHERE nickid=\'%d\'", nickid);
	while ((res = mysql_fetch_row(resptr)))
	{
		char *chan = db_escape(res[1]);
		db_checkemptychan(atoi(res[0]), chan);
		free(chan);
	}
	mysql_free_result(resptr);
}
Beispiel #2
0
void db_removefromchans(int nickid)
{
#ifdef USE_MYSQL
    MYSQL_RES *mysql_res;
    char **res;
    int chanid;
#endif

    SET_SEGV_LOCATION();

    if (!denora->do_sql) {
        return;
    }

    rdb_query
        (QUERY_HIGH,
         "SELECT %s.chanid, channel FROM %s, %s WHERE nickid=%d AND %s.chanid = %s.chanid",
         IsOnTable, IsOnTable, ChanTable, nickid, ChanTable, IsOnTable);
#ifdef USE_MYSQL
    mysql_res = mysql_store_result(mysql);
#endif
    rdb_query(QUERY_LOW, "DELETE FROM %s WHERE nickid=%d", IsOnTable,
              nickid);
    SET_SEGV_LOCATION();
#ifdef USE_MYSQL
    if (mysql_res) {
        while ((res = mysql_fetch_row(mysql_res))) {
            char *chan = rdb_escape(res[1]);
            chanid = db_getchannel(chan);
            rdb_query(QUERY_LOW,
                      "UPDATE %s SET currentusers=currentusers-1 WHERE chanid=%d",
                      ChanTable, chanid);
            if (!ChanHasMode(chan, ircd->persist_char))
                db_checkemptychan(atoi(res[0]));
            free(chan);
        }
        SET_SEGV_LOCATION();
        mysql_free_result(mysql_res);
    }
#endif
}