[ekg2-commit] r4201 - trunk/plugins/icq: trunk/plugins/icq/icq.c

SVN commit svn w toxygen.net
Śro, 6 Sie 2008, 22:53:43 CEST


Author: darkjames
Date: 2008-08-06 22:53:43 +0200 (Wed, 06 Aug 2008)
New Revision: 4201

Modified:
   trunk/plugins/icq/icq.c
Log:
- implement icq_write_status() o/
- add /xa


Modified: trunk/plugins/icq/icq.c
===================================================================
--- trunk/plugins/icq/icq.c	2008-08-06 19:22:48 UTC (rev 4200)
+++ trunk/plugins/icq/icq.c	2008-08-06 20:53:43 UTC (rev 4201)
@@ -100,31 +100,20 @@
 	return 0;
 }
 
-static uint32_t icq_get_uid(session_t *s, const char *target) {
-	char *uid;
-	long int uin;
 
-	if (!target)
-		return 0;
+int icq_write_status(session_t *s) {
+	uint16_t status;
+	string_t pkt;
 
-	if (!(uid = get_uid(s, target)))
-		uid = (char *) target;
-
-	if (!xstrncmp(uid, "icq:", 4))
-		uid += 4;
-
-	if (!uid[0])
+	if (!s)
 		return 0;
 
-	uin = strtol(uid, &uid, 10);	/* XXX, strtoll() */
+	status = icq_status(s->status);
 
-	if (uid[0])
-		return 0;
-
-	if (uin <= 0)
-		return 0;
-
-	return uin;
+	pkt = icq_pack("tI", icq_pack_tlv_dword(0x06, (0x00 << 8 | status)));	/* TLV 6: Status mode and security flags */
+	icq_makesnac(s, pkt, 0x01, 0x001e, 0, 0);
+	icq_send_pkt(s, pkt);
+	return 1;
 }
 
 void icq_session_connected(session_t *s) {
@@ -373,6 +362,33 @@
 #endif
 }
 
+static uint32_t icq_get_uid(session_t *s, const char *target) {
+	char *uid;
+	long int uin;
+
+	if (!target)
+		return 0;
+
+	if (!(uid = get_uid(s, target)))
+		uid = (char *) target;
+
+	if (!xstrncmp(uid, "icq:", 4))
+		uid += 4;
+
+	if (!uid[0])
+		return 0;
+
+	uin = strtol(uid, &uid, 10);	/* XXX, strtoll() */
+
+	if (uid[0])
+		return 0;
+
+	if (uin <= 0)
+		return 0;
+
+	return uin;
+}
+
 static int icq_theme_init();
 PLUGIN_DEFINE(icq, PLUGIN_PROTOCOL, icq_theme_init);
 
@@ -774,10 +790,8 @@
 	
 	printq(format, session_name(session));
 
-/* XXX
 	if (session->connected)
 		icq_write_status(session);
- */	
 	return 0;
 }
 
@@ -1078,6 +1092,7 @@
 	command_add(&icq_plugin, "icq:dnd",  NULL, icq_command_away, ICQ_ONLY, NULL);
 	command_add(&icq_plugin, "icq:ffc",  NULL, icq_command_away, ICQ_ONLY, NULL);
 	command_add(&icq_plugin, "icq:invisible", NULL, icq_command_away, ICQ_ONLY, NULL);
+	command_add(&icq_plugin, "icq:xa",  NULL, icq_command_away, ICQ_ONLY, NULL);
 
 	command_add(&icq_plugin, "icq:userinfo", "!u",	icq_command_userinfo,	ICQ_FLAGS_TARGET, NULL);
 	command_add(&icq_plugin, "icq:register", NULL,	icq_command_register,	0, NULL);



Więcej informacji o liście dyskusyjnej ekg2-commit