va_start(ap, fr);
change = va_arg(ap, int);
- perms = va_arg(ap, fu16_t);
- type = va_arg(ap, fu16_t);
+ perms = (fu16_t)va_arg(ap, unsigned int);
+ type = (fu16_t)va_arg(ap, unsigned int);
length = va_arg(ap, int);
val = va_arg(ap, char *);
str = va_arg(ap, int);
static void printuserflags(fu16_t flags)
{
+
if (flags & AIM_FLAG_UNCONFIRMED)
dinlineprintf("UNCONFIRMED ");
if (flags & AIM_FLAG_ADMINISTRATOR)
dinlineprintf("ICQ? ");
if (flags & AIM_FLAG_UNKNOWN80)
dinlineprintf("UNKNOWN80 ");
+ if (flags & AIM_FLAG_ACTIVEBUDDY)
+ dinlineprintf("ACTIVEBUDDY ");
+
return;
}
static int faimtest_parse_userinfo(aim_session_t *sess, aim_frame_t *fr, ...)
{
- struct aim_userinfo_s *userinfo;
+ aim_userinfo_t *userinfo;
char *prof_encoding = NULL;
char *prof = NULL;
fu16_t inforeq = 0;
va_list ap;
va_start(ap, fr);
- userinfo = va_arg(ap, struct aim_userinfo_s *);
+ userinfo = va_arg(ap, aim_userinfo_t *);
prof_encoding = va_arg(ap, char *);
prof = va_arg(ap, char *);
- inforeq = va_arg(ap, fu16_t);
+ inforeq = (fu16_t)va_arg(ap, unsigned int);
va_end(ap);
dvprintf("faimtest: userinfo: sn: %s\n", userinfo->sn);
- dvprintf("faimtest: userinfo: warnlevel: 0x%04x\n", userinfo->warnlevel);
+ dvprintf("faimtest: userinfo: warnlevel: %f\n", aim_userinfo_warnlevel(userinfo));
dvprintf("faimtest: userinfo: flags: 0x%04x = ", userinfo->flags);
printuserflags(userinfo->flags);
dinlineprintf("\n");
return 1;
}
-static int faimtest_handlecmd(aim_session_t *sess, aim_conn_t *conn, struct aim_userinfo_s *userinfo, const char *tmpstr)
+static int faimtest_handlecmd(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, const char *tmpstr)
{
struct faimtest_priv *priv = (struct faimtest_priv *)sess->aux_data;
/*
* Channel 1: Standard Message
*/
-static int faimtest_parse_incoming_im_chan1(aim_session_t *sess, aim_conn_t *conn, struct aim_userinfo_s *userinfo, va_list ap)
+static int faimtest_parse_incoming_im_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args)
{
struct faimtest_priv *priv = (struct faimtest_priv *)sess->aux_data;
char *tmpstr;
- struct aim_incomingim_ch1_args *args;
int clienttype = AIM_CLIENTTYPE_UNKNOWN;
char realmsg[8192+1] = {""};
-
- args = va_arg(ap, struct aim_incomingim_ch1_args *);
- va_end(ap);
-
clienttype = aim_fingerprintclient(args->features, args->featureslen);
dvprintf("faimtest: icbm: sn = \"%s\"\n", userinfo->sn);
dvprintf("faimtest: icbm: probable client type: %d\n", clienttype);
- dvprintf("faimtest: icbm: warnlevel = 0x%04x\n", userinfo->warnlevel);
+ dvprintf("faimtest: icbm: warnlevel = %f\n", aim_userinfo_warnlevel(userinfo));
dvprintf("faimtest: icbm: flags = 0x%04x = ", userinfo->flags);
printuserflags(userinfo->flags);
dinlineprintf("\n");
dvprintf("faimtest: icbm: membersince = %lu\n", userinfo->membersince);
dvprintf("faimtest: icbm: onlinesince = %lu\n", userinfo->onlinesince);
dvprintf("faimtest: icbm: idletime = 0x%04x\n", userinfo->idletime);
- dvprintf("faimtest: icbm: capabilities = 0x%04x\n", userinfo->capabilities);
+ dvprintf("faimtest: icbm: capabilities = %s = 0x%04x\n", userinfo->capspresent ? "present" : "not present", userinfo->capabilities);
dprintf("faimtest: icbm: icbmflags = ");
if (args->icbmflags & AIM_IMFLAGS_AWAY)
/*
* Channel 2: Rendevous Request
*/
-static int faimtest_parse_incoming_im_chan2(aim_session_t *sess, aim_conn_t *conn, struct aim_userinfo_s *userinfo, va_list ap)
+static int faimtest_parse_incoming_im_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args)
{
- struct aim_incomingim_ch2_args *args;
-
- args = va_arg(ap, struct aim_incomingim_ch2_args *);
- va_end(ap);
if (args->reqclass == AIM_CAPS_VOICE) {
dvprintf("faimtest: voice invitation: source sn = %s\n", userinfo->sn);
- dvprintf("faimtest: voice invitation: \twarnlevel = 0x%04x\n", userinfo->warnlevel);
+ dvprintf("faimtest: voice invitation: \twarnlevel = %f\n", aim_userinfo_warnlevel(userinfo));
dvprintf("faimtest: voice invitation: \tclass = 0x%04x = ", userinfo->flags);
printuserflags(userinfo->flags);
dinlineprintf("\n");
} else if (args->reqclass == AIM_CAPS_CHAT) {
dvprintf("faimtest: chat invitation: source sn = %s\n", userinfo->sn);
- dvprintf("faimtest: chat invitation: \twarnlevel = 0x%04x\n", userinfo->warnlevel);
+ dvprintf("faimtest: chat invitation: \twarnlevel = %f\n", aim_userinfo_warnlevel(userinfo));
dvprintf("faimtest: chat invitation: \tclass = 0x%04x = ", userinfo->flags);
printuserflags(userinfo->flags);
dinlineprintf("\n");
static int faimtest_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...)
{
fu16_t channel;
- struct aim_userinfo_s *userinfo;
+ aim_userinfo_t *userinfo;
va_list ap;
int ret = 0;
va_start(ap, fr);
- channel = va_arg(ap, fu16_t);
- userinfo = va_arg(ap, struct aim_userinfo_s *);
-
- if (channel == 1)
- ret = faimtest_parse_incoming_im_chan1(sess, fr->conn, userinfo, ap);
- else if (channel == 2)
- ret = faimtest_parse_incoming_im_chan2(sess, fr->conn, userinfo, ap);
- else
+ channel = (fu16_t)va_arg(ap, unsigned int);
+ userinfo = va_arg(ap, aim_userinfo_t *);
+
+ if (channel == 1) {
+ struct aim_incomingim_ch1_args *args;
+
+ args = va_arg(ap, struct aim_incomingim_ch1_args *);
+
+ ret = faimtest_parse_incoming_im_chan1(sess, fr->conn, userinfo, args);
+
+ } else if (channel == 2) {
+ struct aim_incomingim_ch2_args *args;
+
+ args = va_arg(ap, struct aim_incomingim_ch2_args *);
+
+ ret = faimtest_parse_incoming_im_chan2(sess, fr->conn, userinfo, args);
+ } else
dvprintf("unsupported channel 0x%04x\n", channel);
+ va_end(ap);
+
dvprintf("faimtest: icbm: done with ICBM handling (ret = %d)\n", ret);
return 1;
static int faimtest_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...)
{
- struct aim_userinfo_s *userinfo;
+ aim_userinfo_t *userinfo;
va_list ap;
va_start(ap, fr);
- userinfo = va_arg(ap, struct aim_userinfo_s *);
+ userinfo = va_arg(ap, aim_userinfo_t *);
va_end(ap);
- dvprintf("%ld %s is now online (flags: %04x = %s%s%s%s%s%s%s%s) (caps = 0x%04x)\n",
+ dvprintf("%ld %s is now online (flags: %04x = %s%s%s%s%s%s%s%s) (caps = %s = 0x%04x)\n",
time(NULL),
userinfo->sn, userinfo->flags,
(userinfo->flags&AIM_FLAG_UNCONFIRMED)?" UNCONFIRMED":"",
(userinfo->flags&AIM_FLAG_AWAY)?" AWAY":"",
(userinfo->flags&AIM_FLAG_UNKNOWN40)?" UNKNOWN40":"",
(userinfo->flags&AIM_FLAG_UNKNOWN80)?" UNKNOWN80":"",
+ userinfo->capspresent ? "present" : "not present",
userinfo->capabilities);
return 1;
}
static int faimtest_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...)
{
- struct aim_userinfo_s *userinfo;
+ aim_userinfo_t *userinfo;
va_list ap;
va_start(ap, fr);
- userinfo = va_arg(ap, struct aim_userinfo_s *);
+ userinfo = va_arg(ap, aim_userinfo_t *);
va_end(ap);
- dvprintf("%ld %s is now offline (flags: %04x = %s%s%s%s%s%s%s%s) (caps = 0x%04x)\n",
+ dvprintf("%ld %s is now offline (flags: %04x = %s%s%s%s%s%s%s%s) (caps = %s = 0x%04x)\n",
time(NULL),
userinfo->sn, userinfo->flags,
(userinfo->flags&AIM_FLAG_UNCONFIRMED)?" UNCONFIRMED":"",
(userinfo->flags&AIM_FLAG_AWAY)?" AWAY":"",
(userinfo->flags&AIM_FLAG_UNKNOWN40)?" UNKNOWN40":"",
(userinfo->flags&AIM_FLAG_UNKNOWN80)?" UNKNOWN80":"",
+ userinfo->capspresent ? "present" : "not present",
userinfo->capabilities);
return 1;
fu16_t reason;
va_start(ap, fr);
- reason = va_arg(ap, fu16_t);
+ reason = (fu16_t)va_arg(ap, unsigned int);
va_end(ap);
dvprintf("faimtest: snac threw error (reason 0x%04x: %s)\n", reason, (reason<msgerrreasonslen)?msgerrreasons[reason]:"unknown");
fu16_t reason;
va_start(ap, fr);
- reason = va_arg(ap, fu16_t);
+ reason = (fu16_t)va_arg(ap, unsigned int);
destsn = va_arg(ap, char *);
va_end(ap);
fu16_t reason;
va_start(ap, fr);
- reason = va_arg(ap, fu16_t);
+ reason = (fu16_t)va_arg(ap, unsigned int);
destsn = va_arg(ap, char *);
va_end(ap);
va_list ap;
fu16_t chan, nummissed, reason;
- struct aim_userinfo_s *userinfo;
+ aim_userinfo_t *userinfo;
va_start(ap, fr);
- chan = va_arg(ap, fu16_t);
- userinfo = va_arg(ap, struct aim_userinfo_s *);
- nummissed = va_arg(ap, fu16_t);
- reason = va_arg(ap, fu16_t);
+ chan = (fu16_t)va_arg(ap, unsigned int);
+ userinfo = va_arg(ap, aim_userinfo_t *);
+ nummissed = (fu16_t)va_arg(ap, unsigned int);
+ reason = (fu16_t)va_arg(ap, unsigned int);
va_end(ap);
dvprintf("faimtest: missed %d messages from %s on channel %d (reason %d: %s)\n", nummissed, userinfo->sn, chan, reason, (reason<missedreasonslen)?missedreasons[reason]:"unknown");
char *sn = NULL;
va_start(ap, fr);
- type = va_arg(ap, fu16_t);
+ type = (fu16_t)va_arg(ap, unsigned int);
sn = va_arg(ap, char *);
va_end(ap);
va_start(ap, fr);
/* See code explanations below */
- code = va_arg(ap, fu16_t);
+ code = (fu16_t)va_arg(ap, unsigned int);
/*
* See comments above aim_parse_ratechange_middle() in aim_rxhandlers.c.
*/
- rateclass = va_arg(ap, fu16_t);
+ rateclass = (fu16_t)va_arg(ap, unsigned int);
/*
* Not sure what this is exactly. I think its the temporal
{
va_list ap;
fu16_t newevil;
- struct aim_userinfo_s *userinfo;
+ aim_userinfo_t *userinfo;
va_start(ap, fr);
- newevil = va_arg(ap, fu16_t);
- userinfo = va_arg(ap, struct aim_userinfo_s *);
+ newevil = (fu16_t)va_arg(ap, unsigned int);
+ userinfo = va_arg(ap, aim_userinfo_t *);
va_end(ap);
/*