char *sn = NULL, *bosip = NULL, *errurl = NULL, *email = NULL;
unsigned char *cookie = NULL;
int errorcode = 0, regstatus = 0;
+ int latestbuild = 0, latestbetabuild = 0;
+ char *latestrelease = NULL, *latestbeta = NULL;
+ char *latestreleaseurl = NULL, *latestbetaurl = NULL;
+ char *latestreleaseinfo = NULL, *latestbetainfo = NULL;
/*
* Read block of TLVs. All further data is derived
if (aim_gettlv(tlvlist, 0x0013, 1))
regstatus = aim_gettlv16(tlvlist, 0x0013, 1);
+ if (aim_gettlv(tlvlist, 0x0040, 1))
+ latestbetabuild = aim_gettlv32(tlvlist, 0x0040, 1);
+ if (aim_gettlv(tlvlist, 0x0041, 1))
+ latestbetaurl = aim_gettlv_str(tlvlist, 0x0041, 1);
+ if (aim_gettlv(tlvlist, 0x0042, 1))
+ latestbetainfo = aim_gettlv_str(tlvlist, 0x0042, 1);
+ if (aim_gettlv(tlvlist, 0x0043, 1))
+ latestbeta = aim_gettlv_str(tlvlist, 0x0043, 1);
+ if (aim_gettlv(tlvlist, 0x0048, 1))
+ ; /* no idea what this is */
+
+ if (aim_gettlv(tlvlist, 0x0044, 1))
+ latestbuild = aim_gettlv32(tlvlist, 0x0044, 1);
+ if (aim_gettlv(tlvlist, 0x0045, 1))
+ latestreleaseurl = aim_gettlv_str(tlvlist, 0x0045, 1);
+ if (aim_gettlv(tlvlist, 0x0046, 1))
+ latestreleaseinfo = aim_gettlv_str(tlvlist, 0x0046, 1);
+ if (aim_gettlv(tlvlist, 0x0047, 1))
+ latestrelease = aim_gettlv_str(tlvlist, 0x0047, 1);
+ if (aim_gettlv(tlvlist, 0x0049, 1))
+ ; /* no idea what this is */
+
if ((userfunc = aim_callhandler(command->conn, 0x0017, 0x0003)))
- ret = userfunc(sess, command, sn, errorcode, errurl, regstatus, email, bosip, cookie);
+ ret = userfunc(sess, command, sn, errorcode, errurl, regstatus, email, bosip, cookie, latestrelease, latestbuild, latestreleaseurl, latestreleaseinfo, latestbeta, latestbetabuild, latestbetaurl, latestbetainfo);
if (sn)
free(email);
if (cookie)
free(cookie);
+ if (latestrelease)
+ free(latestrelease);
+ if (latestreleaseurl)
+ free(latestreleaseurl);
+ if (latestbeta)
+ free(latestbeta);
+ if (latestbetaurl)
+ free(latestbetaurl);
+ if (latestreleaseinfo)
+ free(latestreleaseinfo);
+ if (latestbetainfo)
+ free(latestbetainfo);
+
aim_freetlvchain(&tlvlist);
return ret;
char *sn = NULL, *bosip = NULL, *errurl = NULL, *email = NULL;
unsigned char *cookie = NULL;
int errorcode = 0, regstatus = 0;
-
+ int latestbuild = 0, latestbetabuild = 0;
+ char *latestrelease = NULL, *latestbeta = NULL;
+ char *latestreleaseurl = NULL, *latestbetaurl = NULL;
+ char *latestreleaseinfo = NULL, *latestbetainfo = NULL;
+
va_start(ap, command);
sn = va_arg(ap, char *);
errorcode = va_arg(ap, int);
email = va_arg(ap, char *);
bosip = va_arg(ap, char *);
cookie = va_arg(ap, unsigned char *);
+
+ latestrelease = va_arg(ap, char *);
+ latestbuild = va_arg(ap, int);
+ latestreleaseurl = va_arg(ap, char *);
+ latestreleaseinfo = va_arg(ap, char *);
+
+ latestbeta = va_arg(ap, char *);
+ latestbetabuild = va_arg(ap, int);
+ latestbetaurl = va_arg(ap, char *);
+ latestbetainfo = va_arg(ap, char *);
+
va_end(ap);
printf("Screen name: %s\n", sn);
printf("Email: %s\n", email);
printf("BOS IP: %s\n", bosip);
+ if (latestbeta)
+ printf("Latest beta version: %s, build %d, at %s (more info at %s)\n", latestbeta, latestbetabuild, latestbetaurl, latestbetainfo);
+
+ if (latestrelease)
+ printf("Latest released version: %s, build %d, at %s (more info at %s)\n", latestrelease, latestbuild, latestreleaseurl, latestreleaseinfo);
+
printf("Closing auth connection...\n");
aim_conn_kill(sess, &command->conn);
if (!(bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, bosip))) {