[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