]> jfr.im git - irc/evilnet/x3.git/commitdiff
mod-python: add support for log_register_type
authorhstuart <redacted>
Wed, 9 Dec 2009 20:01:30 +0000 (20:01 +0000)
committerhstuart <redacted>
Wed, 9 Dec 2009 20:01:30 +0000 (20:01 +0000)
ChangeLog
src/mod-python.c

index 34d507aa9349dfba77996ab67d940bc15c44f969..7ed8bac9505c1f916586a7f72386f5ef23adf672 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,10 @@
 /***********************************************************************
 X3 ChangeLog
 
+2009-12-09  Henrik Stuart  <evilnet@hstuart.dk>
+
+       src/mod-python.c: add support for log_register_type.
+
 2009-12-09  Neil Spierling  <sirvulcan@sirvulcan.co.nz>
 
        src/nickserv.c: Shuffle the auto oper functions around to fix a
index 2b2397a412b104c2242abc47b243e520e166d276..e95ec4c0b7e04612e39f7a6bdd1b52008584c550 100644 (file)
@@ -1194,6 +1194,38 @@ emb_service_register(UNUSED_ARG(PyObject* self_), PyObject* args) {
     return pyobj_from_service(service_register(user));
 }
 
+size_t logs_size = 0;
+static struct log_type **logs_list = NULL;
+
+PyDoc_STRVAR(emb_log_register_type__doc__,
+        "registers a log source to write event data to.");
+static PyObject* emb_log_register_type(UNUSED_ARG(PyObject *self), PyObject* args) {
+    const char* logName;
+    const char* defaultLog;
+    struct log_type* log;
+    struct log_type** newlogs;
+
+    if (!PyArg_ParseTuple(args, "ss", &logName, &defaultLog))
+        return NULL;
+
+    newlogs = realloc(logs_list, (logs_size+1)*sizeof(struct log_type*));
+    if (newlogs == NULL) {
+        PyErr_SetString(PyExc_Exception, "unable to allocate memory for log structures. aborting.");
+        return NULL;
+    }
+    logs_list = newlogs;
+
+    log = log_register_type(logName, defaultLog);
+    if (log == NULL) {
+        PyErr_SetString(PyExc_Exception, "unable to register log");
+        return NULL;
+    }
+
+    logs_list[logs_size++] = log;
+
+    return Py_BuildValue("O", PyCObject_FromVoidPtr(log, NULL));
+}
+
 static PyMethodDef EmbMethods[] = {
     /* Communication methods */
     {"dump", emb_dump, METH_VARARGS, emb_dump__doc__},
@@ -1224,6 +1256,10 @@ static PyMethodDef EmbMethods[] = {
     {"timeq_add", emb_timeq_add, METH_VARARGS, emb_timeq_add__doc__},
     {"timeq_del", emb_timeq_del, METH_VARARGS, emb_timeq_del__doc__},
 
+    /* module registration methods */
+    {"log_register_type", emb_log_register_type, METH_VARARGS,
+        emb_log_register_type__doc__},
+
     /* Information gathering methods */
     {"get_user", emb_get_user, METH_VARARGS, emb_get_user__doc__},
     {"get_users", emb_get_users, METH_VARARGS, emb_get_users__doc__},