src/protocols/oscar/info.c

changeset 2421
009ae3cf0e83
parent 2315
ddf565f13b41
child 2669
317b275d40d5
--- a/src/protocols/oscar/info.c	Wed Oct 03 19:42:31 2001 +0000
+++ b/src/protocols/oscar/info.c	Wed Oct 03 20:36:33 2001 +0000
@@ -43,6 +43,79 @@
 	return 0;
 }
 
+faim_export const char *aim_userinfo_sn(aim_userinfo_t *ui)
+{
+
+	if (!ui)
+		return NULL;
+
+	return ui->sn;
+}
+
+faim_export fu16_t aim_userinfo_flags(aim_userinfo_t *ui)
+{
+
+	if (!ui)
+		return 0;
+
+	return ui->flags;
+}
+
+faim_export fu16_t aim_userinfo_idle(aim_userinfo_t *ui)
+{
+
+	if (!ui)
+		return 0;
+
+	return ui->idletime;
+}
+
+faim_export float aim_userinfo_warnlevel(aim_userinfo_t *ui)
+{
+
+	if (!ui)
+		return 0.00;
+
+	return (ui->warnlevel / 10);
+}
+
+faim_export time_t aim_userinfo_membersince(aim_userinfo_t *ui)
+{
+
+	if (!ui)
+		return 0;
+
+	return (time_t)ui->membersince;
+}
+
+faim_export time_t aim_userinfo_onlinesince(aim_userinfo_t *ui)
+{
+
+	if (!ui)
+		return 0;
+
+	return (time_t)ui->onlinesince;
+}
+
+faim_export fu32_t aim_userinfo_sessionlen(aim_userinfo_t *ui)
+{
+
+	if (!ui)
+		return 0;
+
+	return ui->sessionlen;
+}
+
+faim_export int aim_userinfo_hascap(aim_userinfo_t *ui, fu16_t cap)
+{
+
+	if (!ui || !ui->capspresent)
+		return -1;
+
+	return !!(ui->capabilities & cap);
+}
+
+
 /*
  * Capability blocks.  
  */
@@ -158,7 +231,7 @@
  * AIM is fairly regular about providing user info.  This is a generic 
  * routine to extract it in its standard form.
  */
-faim_internal int aim_extractuserinfo(aim_session_t *sess, aim_bstream_t *bs, struct aim_userinfo_s *outinfo)
+faim_internal int aim_extractuserinfo(aim_session_t *sess, aim_bstream_t *bs, aim_userinfo_t *outinfo)
 {
 	int curtlv, tlvcnt;
 	fu8_t snlen;
@@ -167,7 +240,7 @@
 		return -EINVAL;
 
 	/* Clear out old data first */
-	memset(outinfo, 0x00, sizeof(struct aim_userinfo_s));
+	memset(outinfo, 0x00, sizeof(aim_userinfo_t));
 
 	/*
 	 * Screen name.  Stored as an unterminated string prepended with a 
@@ -283,6 +356,7 @@
 			 *
 			 */
 			outinfo->capabilities = aim_getcap(sess, bs, length);
+			outinfo->capspresent = 1;
 
 		} else if (type == 0x000e) {
 			/*
@@ -337,7 +411,7 @@
 /*
  * Inverse of aim_extractuserinfo()
  */
-faim_internal int aim_putuserinfo(aim_bstream_t *bs, struct aim_userinfo_s *info)
+faim_internal int aim_putuserinfo(aim_bstream_t *bs, aim_userinfo_t *info)
 {
 	aim_tlvlist_t *tlvlist = NULL;
 
@@ -373,7 +447,7 @@
 	return 0;
 }
 
-faim_export int aim_sendbuddyoncoming(aim_session_t *sess, aim_conn_t *conn, struct aim_userinfo_s *info)
+faim_export int aim_sendbuddyoncoming(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *info)
 {
 	aim_frame_t *fr;
 	aim_snacid_t snacid;
@@ -469,7 +543,7 @@
 
 static int userinfo(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
 {
-	struct aim_userinfo_s userinfo;
+	aim_userinfo_t userinfo;
 	char *text_encoding = NULL, *text = NULL;
 	aim_rxcallback_t userfunc;
 	aim_tlvlist_t *tlvlist;

mercurial