[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