Changes in protocols/oscar/info.c [84b045d:6042a54]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/oscar/info.c
r84b045d r6042a54 40 40 return 0; 41 41 } 42 43 const char *aim_userinfo_sn(aim_userinfo_t *ui)44 {45 46 if (!ui)47 return NULL;48 49 return ui->sn;50 }51 52 guint16 aim_userinfo_flags(aim_userinfo_t *ui)53 {54 55 if (!ui)56 return 0;57 58 return ui->flags;59 }60 61 guint16 aim_userinfo_idle(aim_userinfo_t *ui)62 {63 64 if (!ui)65 return 0;66 67 return ui->idletime;68 }69 70 float aim_userinfo_warnlevel(aim_userinfo_t *ui)71 {72 73 if (!ui)74 return 0.00;75 76 return (ui->warnlevel / 10);77 }78 79 time_t aim_userinfo_membersince(aim_userinfo_t *ui)80 {81 82 if (!ui)83 return 0;84 85 return (time_t)ui->membersince;86 }87 88 time_t aim_userinfo_onlinesince(aim_userinfo_t *ui)89 {90 91 if (!ui)92 return 0;93 94 return (time_t)ui->onlinesince;95 }96 97 guint32 aim_userinfo_sessionlen(aim_userinfo_t *ui)98 {99 100 if (!ui)101 return 0;102 103 return ui->sessionlen;104 }105 106 int aim_userinfo_hascap(aim_userinfo_t *ui, guint32 cap)107 {108 109 if (!ui || !(ui->present & AIM_USERINFO_PRESENT_CAPABILITIES))110 return -1;111 112 return !!(ui->capabilities & cap);113 }114 115 42 116 43 /* … … 482 409 aim_bstream_setpos(bs, endpos); 483 410 } 484 485 return 0;486 }487 488 /*489 * Inverse of aim_extractuserinfo()490 */491 int aim_putuserinfo(aim_bstream_t *bs, aim_userinfo_t *info)492 {493 aim_tlvlist_t *tlvlist = NULL;494 495 if (!bs || !info)496 return -EINVAL;497 498 aimbs_put8(bs, strlen(info->sn));499 aimbs_putraw(bs, (guint8 *)info->sn, strlen(info->sn));500 501 aimbs_put16(bs, info->warnlevel);502 503 504 aim_addtlvtochain16(&tlvlist, 0x0001, info->flags);505 aim_addtlvtochain32(&tlvlist, 0x0002, info->membersince);506 aim_addtlvtochain32(&tlvlist, 0x0003, info->onlinesince);507 aim_addtlvtochain16(&tlvlist, 0x0004, info->idletime);508 509 #if ICQ_OSCAR_SUPPORT510 if (atoi(info->sn) != 0) {511 aim_addtlvtochain16(&tlvlist, 0x0006, info->icqinfo.status);512 aim_addtlvtochain32(&tlvlist, 0x000a, info->icqinfo.ipaddr);513 }514 #endif515 516 aim_addtlvtochain_caps(&tlvlist, 0x000d, info->capabilities);517 518 aim_addtlvtochain32(&tlvlist, (guint16)((info->flags & AIM_FLAG_AOL) ? 0x0010 : 0x000f), info->sessionlen);519 520 aimbs_put16(bs, aim_counttlvchain(&tlvlist));521 aim_writetlvchain(bs, &tlvlist);522 aim_freetlvchain(&tlvlist);523 524 return 0;525 }526 527 int aim_sendbuddyoncoming(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *info)528 {529 aim_frame_t *fr;530 aim_snacid_t snacid;531 532 if (!sess || !conn || !info)533 return -EINVAL;534 535 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 1152)))536 return -ENOMEM;537 538 snacid = aim_cachesnac(sess, 0x0003, 0x000b, 0x0000, NULL, 0);539 540 aim_putsnac(&fr->data, 0x0003, 0x000b, 0x0000, snacid);541 aim_putuserinfo(&fr->data, info);542 543 aim_tx_enqueue(sess, fr);544 545 return 0;546 }547 548 int aim_sendbuddyoffgoing(aim_session_t *sess, aim_conn_t *conn, const char *sn)549 {550 aim_frame_t *fr;551 aim_snacid_t snacid;552 553 if (!sess || !conn || !sn)554 return -EINVAL;555 556 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+1+strlen(sn))))557 return -ENOMEM;558 559 snacid = aim_cachesnac(sess, 0x0003, 0x000c, 0x0000, NULL, 0);560 561 aim_putsnac(&fr->data, 0x0003, 0x000c, 0x0000, snacid);562 aimbs_put8(&fr->data, strlen(sn));563 aimbs_putraw(&fr->data, (guint8 *)sn, strlen(sn));564 565 aim_tx_enqueue(sess, fr);566 567 return 0;568 }569 570 /*571 * Huh? What is this?572 */573 int aim_0002_000b(aim_session_t *sess, aim_conn_t *conn, const char *sn)574 {575 aim_frame_t *fr;576 aim_snacid_t snacid;577 578 if (!sess || !conn || !sn)579 return -EINVAL;580 581 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+1+strlen(sn))))582 return -ENOMEM;583 584 snacid = aim_cachesnac(sess, 0x0002, 0x000b, 0x0000, NULL, 0);585 586 aim_putsnac(&fr->data, 0x0002, 0x000b, 0x0000, snacid);587 aimbs_put8(&fr->data, strlen(sn));588 aimbs_putraw(&fr->data, (guint8 *)sn, strlen(sn));589 590 aim_tx_enqueue(sess, fr);591 411 592 412 return 0;
Note: See TracChangeset
for help on using the changeset viewer.