[ekg2-commit] ekg2: jogger.c (HEAD) messages.c (HEAD) [peres]
CVS commit
cvs w toxygen.net
Pią, 4 Maj 2007, 14:00:13 CEST
Module name: ekg2
Changes by: peres 2007-05-04 14:00:11
Modified files:
jogger.c messages.c
Log message:
Some dummy commands (*connect) + message sending.
Index: jogger.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jogger/jogger.c,v
diff -d -u -r1.1 -r1.2
--- jogger.c 4 May 2007 11:20:21 -0000 1.1
+++ jogger.c 4 May 2007 12:00:11 -0000 1.2
@@ -16,6 +16,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#include <ekg/commands.h>
#include <ekg/debug.h>
#include <ekg/plugins.h>
#include <ekg/queries.h>
@@ -30,6 +31,7 @@
/* messages.c */
QUERY(jogger_msghandler);
+COMMAND(jogger_msg);
/* we need to be 'protocol' to establish sessions */
PLUGIN_DEFINE(jogger, PLUGIN_PROTOCOL, jogger_theme_init);
@@ -160,6 +162,11 @@
#endif
}
+ /* we need some dummy commands, e.g. /disconnect */
+static COMMAND(jogger_null) {
+ return 0;
+}
+
static int jogger_theme_init(void) {
#ifndef NO_DEFAULT_THEME
#endif
@@ -181,9 +188,19 @@
query_connect_id(&jogger_plugin, PROTOCOL_VALIDATE_UID, jogger_validate_uid, NULL);
query_connect_id(&jogger_plugin, PROTOCOL_STATUS, jogger_statuschanged, NULL);
query_connect_id(&jogger_plugin, PROTOCOL_DISCONNECTED, jogger_statuscleanup, NULL);
-
query_connect_id(&jogger_plugin, PROTOCOL_MESSAGE, jogger_msghandler, NULL);
+#define JOGGER_CMDFLAGS SESSION_MUSTBELONG
+#define JOGGER_CMDFLAGS_TARGET SESSION_MUSTBELONG|COMMAND_ENABLEREQPARAMS|COMMAND_PARAMASTARGET
+ command_add(&jogger_plugin, "jogger:", "?", jogger_msg, JOGGER_CMDFLAGS, NULL);
+ command_add(&jogger_plugin, "jogger:chat", "!uU !", jogger_msg, JOGGER_CMDFLAGS_TARGET, NULL);
+ command_add(&jogger_plugin, "jogger:connect", NULL, jogger_null, JOGGER_CMDFLAGS, NULL);
+ command_add(&jogger_plugin, "jogger:disconnect", NULL, jogger_null, JOGGER_CMDFLAGS, NULL);
+ command_add(&jogger_plugin, "jogger:msg", "!uU !", jogger_msg, JOGGER_CMDFLAGS_TARGET, NULL);
+ command_add(&jogger_plugin, "jogger:reconnect", NULL, jogger_null, JOGGER_CMDFLAGS, NULL);
+#undef JOGGER_CMDFLAGS_TARGET
+#undef JOGGER_CMDFLAGS
+
plugin_register(&jogger_plugin, prio);
return 0;
Index: messages.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jogger/messages.c,v
diff -d -u -r1.1 -r1.2
--- messages.c 4 May 2007 11:20:21 -0000 1.1
+++ messages.c 4 May 2007 12:00:11 -0000 1.2
@@ -15,8 +15,11 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#include <ekg/commands.h>
+#include <ekg/debug.h>
#include <ekg/plugins.h>
#include <ekg/protocol.h>
+#include <ekg/userlist.h>
#include <ekg/xmalloc.h>
/* jogger.c */
@@ -46,3 +49,37 @@
return 0;
}
+COMMAND(jogger_msg) {
+ const int is_inline = (*name == '\0');
+ const char *uid = get_uid(session, target);
+ session_t *js = session_find(session_get(session, "used_session"));
+ const char *juid = session_get(session, "used_uid");
+ int n;
+
+ if (!uid || !js || !juid) {
+ printq("invalid_session"); /* XXX, unprepared session? */
+ return -1;
+ }
+ uid += 7; /* skip jogger: */
+
+ if (*uid == '\0') { /* redirect message to jogger uid */
+ if (is_inline)
+ return command_exec(juid, js, params[0], 0);
+ else
+ return command_exec_format(NULL, js, 0, "/%s \"%s\" %s", name, juid, params[1]);
+ }
+ if (*uid == '#')
+ uid++;
+
+ if (!(n = atoi(uid))) {
+ printq("invalid_uid");
+ return -1;
+ }
+
+ /* post as comment-reply */
+ if (is_inline)
+ return command_exec_format(juid, js, 0, "#%d %s", n, params[0]);
+ else
+ return command_exec_format(NULL, js, 0, "/%s \"%s\" #%d %s", name, juid, n, params[1]);
+}
+
Więcej informacji o liście dyskusyjnej ekg2-commit