+++ /dev/null
-#ifndef INIT_QUERIES_H
-#define INIT_QUERIES_H
-static const char *channel_tbl =
- "CREATE TABLE IF NOT EXISTS channel ("
- "chanid int unsigned NOT NULL auto_increment,"
- "channel varchar(33) binary NOT NULL default '',"
- "topic text,"
- "topicauthor varchar(31) default NULL,"
- "topictime datetime default NULL,"
- "PRIMARY KEY (chanid),"
- "UNIQUE KEY channel (channel))";
-
-static const char *user_tbl =
- "CREATE TABLE IF NOT EXISTS user ("
- "nickid int unsigned NOT NULL auto_increment,"
- "nick varchar(31) NOT NULL default '',"
- "realname varchar(51) NOT NULL default '',"
- "hostname varchar(64) NOT NULL default '',"
- "hiddenhostname varchar(64) NOT NULL default '',"
- "username varchar(11) NOT NULL default '',"
- "swhois varchar(32) NOT NULL default '',"
- "connecttime datetime NOT NULL default '0000-00-00 00:00:00',"
- "servid int unsigned NOT NULL default '0',"
- "away enum('Y','N') NOT NULL default 'N',"
- "awaymsg text,"
- "online enum('Y','N') NOT NULL DEFAULT 'Y',"
- "lastquit datetime default NULL,"
- "PRIMARY KEY (nickid),"
- "UNIQUE KEY nick (nick),"
- "KEY servid (servid))";
-
-static const char * server_tbl =
- "CREATE TABLE IF NOT EXISTS server ("
- "servid int unsigned NOT NULL auto_increment,"
- "server varchar(64) NOT NULL default '',"
- "connecttime datetime default NULL,"
- "PRIMARY KEY (servid),"
- "UNIQUE KEY server (server))";
-
-static const char *presence_tbl =
- "CREATE TABLE IF NOT EXISTS presence ("
- "nickid int unsigned NOT NULL default '0',"
- "chanid int unsigned NOT NULL default '0',"
- "servid int unsigned NOT NULL default '0',"
- "PRIMARY KEY (nickid,chanid,servid),"
- "KEY nickid (nickid),"
- "KEY chanid (chanid))";
-
-/* Stupid restriction of C */
-static inline const char **
-init_queries ()
-{
- enum { query_count = 5 };
- static const char *queries[query_count] = { 0 };
- queries[0] = user_tbl;
- queries[1] = presence_tbl;
- queries[2] = server_tbl;
- queries[3] = channel_tbl;
- queries[4] = NULL;
- return queries;
-}
-#endif
#include "defaults.h"
#include "error.h"
#include "utility.h"
-#include "mysql_sentry.h"
+#include "sentry.h"
#define EVENT_CALLBACK(function_name) void \
function_name (irc_session_t * session, const char *event, \
{
const char *nickname = origin;
const char *channel = *params;
+ const struct context *ctx = irc_get_ctx(session);
printf ("%s joined %s\n", nickname, channel);
fflush(stdout);
+ sentry_channel_presence_clear(ctx, channel);
irc_cmd_names(session, channel);
}
for (const char *nickname = strtok(nicknames_buf, " ");
nickname;
nickname = strtok(NULL, " "))
- sentry_channel_presence_add(context->sentry, channel, nickname);
+ {
+ sentry_channel_presence_add(context->sentry, channel, nickname);
+ }
free(nicknames_buf);
}
irc_set_ctx (session, &context);
int error = irc_connect (session,
opts->server ? opts->server : default_server,
- opts->port ? opts->port : default_port, NULL, /* Password. Not now. */
+ opts->port ? opts->port : default_port, NULL, /* Password*/
opts->nick ? opts->nick : default_nick, NULL,
NULL);
if (error)
#define IRC_H
#include <stdbool.h>
#include "cmd.h"
-#include "mysql_sentry.h"
+#include "sentry.h"
struct irc_user {
char *nickname;
char *realname;
#include "cmd.h"
#include "error.h"
#include "irc.h"
-#include "mysql_sentry.h"
+#include "sentry.h"
int
main (int argc, char **argv)
--- /dev/null
+# -*- conf-unix-*-
+autogen definitions query;
+query = {
+ def = "CHANNEL_PRESENCE_CLEAR";
+ value = "clear?!";
+ error_msg = "Failed to clear?!";
+ comment = "Optional";
+};
+query = {
+ def = "CHANNEL_PRESENCE_ADD";
+ value = "add?!";
+ error_msg = "Failed to add?!";
+};
\ No newline at end of file
--- /dev/null
+[+autogen5 template h c +][+DEFINE
+GPL +]/*
+[+ (gpl "GNU Thales" " * " ) +]
+ */
+[+ENDDEF +][+DEFINE
+DO_NOT_EDIT +]/*
+[+(dne " * ") +]
+*/
+[+ENDDEF +][+
+CASE (suffix) +][+
+== h +][+ DO_NOT_EDIT +]
+[+GPL+]
+[+ (make-header-guard "") +]
+
+[+FOR query "" +]
+/* [+ comment +] */
+#define QUERY_[+def+] [+ (for-index) +]
+[+ENDFOR query +]
+
+#define QUERIES_COUNT [+ (count "query") +]
+extern char const *queries[ QUERIES_COUNT ];
+extern char const *queries_error_messages[ QUERIES_COUNT];
+#endif /* [+ (. header-guard) +] */ [+
+== c +][+ DO_NOT_EDIT +]
+[+ GPL +]
+
+#include "[+ (. header-file) +]"
+
+char const *queries[] = { [+
+FOR query "," +]
+ "[+ value +]"[+
+ENDFOR query +]
+};
+
+char const *queries_error_messages[] = { [+
+FOR query "," +]
+ "[+ error_msg +]"[+
+ENDFOR query +]
+};
+
+[+ESAC +]
#include <stdbool.h>
#include <dbi/dbi.h>
#include "cmd.h"
-#include "init_queries.sql.h"
+#include "init_query.h"
struct sentry
{
-char *unused;
+ char *unused;
};
static inline bool
initialize_tables(MYSQL *db_handle)
{
- for (const char *query = *init_queries(); *query; ++query)
+ for (const char *query = *init_queries; *query; ++query)
if (!mysql_query(db_handle, query))
return false;
return true;
goto tables;
}
- struct sentry *new = xcalloc (1, sizeof *new);
+ struct sentry *new = xmalloc (sizeof *new);
new->db_handle = db_handle;
new->server = xstrdup(server);
sentry_channel_presence_add(SENTRY *sentry, const char *channel,
const char *nickname)
{
- const char *query = "INSERT INTO presence VALUES (nickid, chanid, servid) where
+ const char *query = "INSERT INTO presence VALUES (nickid, chanid, servid) where"
}