diff src/protocols/oscar/family_popup.c @ 13234:f2431a7e33aa

[gaim-migrate @ 15600] Massive oscar shuffling. No change in functionality. I renamed each of the files that contains stuff for a SNAC family. I started splitting the file transfer/direct connect stuff into peer.c and peer.h. I stopped using fu8_t, fu16_t and fu32_t and switched to guint8, guint16 and guint32 instead. I changed the SNAC family and subtype defines so they are more meaningful. Added LGPL copyright header to each file. Added myself to the AUTHORS file. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 11 Feb 2006 21:45:18 +0000
parents
children f260d319bbbc
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/protocols/oscar/family_popup.c	Sat Feb 11 21:45:18 2006 +0000
@@ -0,0 +1,83 @@
+/*
+ * Gaim's oscar protocol plugin
+ * This file is the legal property of its developers.
+ * Please see the AUTHORS file distributed alongside this file.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+/*
+ * Family 0x0008 - Popups.
+ *
+ * Popups are just what it sounds like.  They're a way for the server to
+ * open up an informative box on the client's screen.
+ */
+
+#include <oscar.h>
+
+/*
+ * This is all there is to it.
+ *
+ * The message is probably HTML.
+ *
+ */
+static int parsepopup(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
+{
+	aim_rxcallback_t userfunc;
+	aim_tlvlist_t *tl;
+	int ret = 0;
+	char *msg, *url;
+	guint16 width, height, delay;
+
+	tl = aim_tlvlist_read(bs);
+
+	msg = aim_tlv_getstr(tl, 0x0001, 1);
+	url = aim_tlv_getstr(tl, 0x0002, 1);
+	width = aim_tlv_get16(tl, 0x0003, 1);
+	height = aim_tlv_get16(tl, 0x0004, 1);
+	delay = aim_tlv_get16(tl, 0x0005, 1);
+
+	if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
+		ret = userfunc(sess, rx, msg, url, width, height, delay);
+
+	aim_tlvlist_free(&tl);
+	free(msg);
+	free(url);
+
+	return ret;
+}
+
+static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
+{
+
+	if (snac->subtype == 0x0002)
+		return parsepopup(sess, mod, rx, snac, bs);
+
+	return 0;
+}
+
+faim_internal int popups_modfirst(aim_session_t *sess, aim_module_t *mod)
+{
+
+	mod->family = 0x0008;
+	mod->version = 0x0001;
+	mod->toolid = 0x0104;
+	mod->toolversion = 0x0001;
+	mod->flags = 0;
+	strncpy(mod->name, "popup", sizeof(mod->name));
+	mod->snachandler = snachandler;
+
+	return 0;
+}