src/nexus.c
changeset 23 542c73d07d3c
parent 22 c339c020fd33
child 25 56367df4ce5b
--- a/src/nexus.c	Sun Mar 01 02:02:48 2009 +0200
+++ b/src/nexus.c	Sun Mar 08 17:17:37 2009 +0200
@@ -2,6 +2,7 @@
 #include "log.h"
 #include "sock.h"
 #include "irc_conn.h"
+#include "irc_log.h"
 
 #include <stdlib.h>
 #include <stdbool.h>
@@ -15,12 +16,21 @@
 #define DEFAULT_PORT "6667"
 #define DEFAULT_PORT_SSL "6697"
 
+enum option_code {
+    _OPT_LOG_BEGIN      = 0x00ff,
+
+    OPT_LOG_DATABASE,
+    OPT_LOG_CHANNEL,
+};
+
 static struct option options[] = {
-    {"help",            0,  NULL,   'h' },
-    {"hostname",        1,  NULL,   'H' },
-    {"port",            1,  NULL,   'P' },
-    {"ssl",             0,  NULL,   'S' },
-    {0,                 0,  0,      0   },
+    {"help",            0,  NULL,   'h'                 },
+    {"hostname",        1,  NULL,   'H'                 },
+    {"port",            1,  NULL,   'P'                 },
+    {"ssl",             0,  NULL,   'S'                 },
+    {"log-database",    1,  NULL,   OPT_LOG_DATABASE    },
+    {"log-channel",     1,  NULL,   OPT_LOG_CHANNEL     },
+    {0,                 0,  0,      0                   },
 };
 
 void usage (const char *exe) 
@@ -31,6 +41,8 @@
     printf(" --hostname / -H HOST   set hostname to connect to\n");
     printf(" --port / -P PORT       set service port to connect to\n");
     printf(" --ssl / -S             use SSL\n");
+    printf(" --log-database         database connection string for logging\n");
+    printf(" --log-channel          channel to log\n");
 }
 
 int main (int argc, char **argv) 
@@ -48,6 +60,7 @@
         .username       = "spbot-dev",
         .realname       = "SpBot (development version)",
     };
+    const char *log_database = NULL, *log_channel = NULL;
 
     bool port_default = true;
     
@@ -74,6 +87,14 @@
                     portname = DEFAULT_PORT_SSL;
 
                 break;
+            
+            case OPT_LOG_DATABASE:
+                log_database = optarg;
+                break;
+
+            case OPT_LOG_CHANNEL:
+                log_channel = optarg;
+                break;
 
             case '?':
                 usage(argv[0]);
@@ -109,6 +130,12 @@
     // create the irc connection state
     if (irc_conn_create(&conn, sock, &conn_config, &err))
         FATAL_ERROR(&err, "irc_conn_create");
+    
+    // logging?
+    if (log_database || log_channel) {
+        if ((ERROR_CODE(&err) = irc_log_init(ev_base, log_database, conn, log_channel)))
+            FATAL_ERROR(&err, "irc_log_init");
+    }
 
     // run event loop
     if (event_base_dispatch(ev_base))