No release numbers
------------------
+ - Mon Sep 4 21:38:09 GMT 2000
+ - A mild step towards ANSI compliance
+ - Compiles cleanly with -pedantic (except for the libc issue in socket.h)
+ - Fixes various sign mismatch things. There may be more, we'll see
+ what MSVC has to say about it.
+ - Add faim_internal and faim_export macros so Win32 DLL is easier
+
- Sun Sep 3 23:58:17 UTC 2000
- Portability fixes (for solaris, set the SOLARIS env var first)
#include <faim/aim.h>
-u_long aim_ads_clientready(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export unsigned long aim_ads_clientready(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
struct command_tx_struct *newpacket;
int i;
return (sess->snac_nextid++);
}
-u_long aim_ads_requestads(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export unsigned long aim_ads_requestads(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
return aim_genericreq_n(sess, conn, 0x0005, 0x0002);
}
#include <faim/aim.h>
/* this just pushes the passed cookie onto the passed connection -- NO SNAC! */
-int aim_auth_sendcookie(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- u_char *chipsahoy)
+faim_export int aim_auth_sendcookie(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ unsigned char *chipsahoy)
{
struct command_tx_struct *newpacket;
int curbyte=0;
return aim_tx_enqueue(sess, newpacket);
}
-u_long aim_auth_clientready(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export unsigned long aim_auth_clientready(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
struct command_tx_struct *newpacket;
int curbyte = 0;
return (sess->snac_nextid++);
}
-u_long aim_auth_changepasswd(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *new, char *current)
+faim_export unsigned long aim_auth_changepasswd(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *new, char *current)
{
struct command_tx_struct *newpacket;
int i;
* Adds a single buddy to your buddy list after login.
*
*/
-u_long aim_add_buddy(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sn )
+faim_export unsigned long aim_add_buddy(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *sn )
{
struct command_tx_struct *newpacket;
int i;
return( sess->snac_nextid++ );
}
-u_long aim_remove_buddy(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sn )
+faim_export unsigned long aim_remove_buddy(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *sn )
{
struct command_tx_struct *newpacket;
int i;
return( sess->snac_nextid++ );
}
-int aim_parse_buddyrights(struct aim_session_t *sess,
- struct command_rx_struct *command, ...)
+faim_internal int aim_parse_buddyrights(struct aim_session_t *sess,
+ struct command_rx_struct *command, ...)
{
rxcallback_t userfunc = NULL;
int ret=1;
#include <faim/aim.h>
-char *aim_chat_getname(struct aim_conn_t *conn)
+faim_export char *aim_chat_getname(struct aim_conn_t *conn)
{
if (!conn)
return NULL;
return (char *)conn->priv; /* yuck ! */
}
-struct aim_conn_t *aim_chat_getconn(struct aim_session_t *sess, char *name)
+faim_export struct aim_conn_t *aim_chat_getconn(struct aim_session_t *sess, char *name)
{
struct aim_conn_t *cur;
return cur;
}
-int aim_chat_attachname(struct aim_conn_t *conn, char *roomname)
+faim_export int aim_chat_attachname(struct aim_conn_t *conn, char *roomname)
{
if (!conn || !roomname)
return -1;
return 0;
}
-u_long aim_chat_send_im(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *msg)
+faim_export unsigned long aim_chat_send_im(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *msg)
{
int curbyte,i;
* and room name.
*
*/
-u_long aim_chat_join(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- u_short exchange,
- const char *roomname)
+faim_export unsigned long aim_chat_join(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ u_short exchange,
+ const char *roomname)
{
struct command_tx_struct *newpacket;
int i;
return (sess->snac_nextid++);
}
-int aim_chat_readroominfo(u_char *buf, struct aim_chat_roominfo *outinfo)
+faim_internal int aim_chat_readroominfo(u_char *buf, struct aim_chat_roominfo *outinfo)
{
int namelen = 0;
int i = 0;
i += 2;
return i;
-};
+}
/*
*
* SNAC 000e/0002
*/
-int aim_chat_parse_infoupdate(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_chat_parse_infoupdate(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_userinfo_s *userinfo = NULL;
rxcallback_t userfunc=NULL;
return ret;
}
-int aim_chat_parse_joined(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_chat_parse_joined(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_userinfo_s *userinfo = NULL;
rxcallback_t userfunc=NULL;
return ret;
}
-int aim_chat_parse_leave(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_chat_parse_leave(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_userinfo_s *userinfo = NULL;
* code as channel 0x0003, however, since only the start
* would be the same, we might as well do it here.
*/
-int aim_chat_parse_incoming(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_chat_parse_incoming(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_userinfo_s userinfo;
rxcallback_t userfunc=NULL;
return ret;
}
-u_long aim_chat_clientready(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export unsigned long aim_chat_clientready(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
struct command_tx_struct *newpacket;
int i;
return (sess->snac_nextid++);
}
-int aim_chat_leaveroom(struct aim_session_t *sess, char *name)
+faim_export int aim_chat_leaveroom(struct aim_session_t *sess, char *name)
{
struct aim_conn_t *conn;
/*
* conn must be a BOS connection!
*/
-u_long aim_chat_invite(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sn,
- char *msg,
- u_short exchange,
- char *roomname,
- u_short instance)
+faim_export unsigned long aim_chat_invite(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *sn,
+ char *msg,
+ u_short exchange,
+ char *roomname,
+ u_short instance)
{
struct command_tx_struct *newpacket;
int i,curbyte=0;
/*
* conn must be a chatnav connection!
*/
-u_long aim_chatnav_reqrights(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export unsigned long aim_chatnav_reqrights(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
struct aim_snac_t snac;
return (sess->snac_nextid); /* already incremented */
}
-u_long aim_chatnav_clientready(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export unsigned long aim_chatnav_clientready(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
struct command_tx_struct *newpacket;
int i;
* we must lookup the snacid to determine the original
* snac subtype that was called.
*/
-int aim_chatnav_parse_info(struct aim_session_t *sess, struct command_rx_struct *command)
+faim_internal int aim_chatnav_parse_info(struct aim_session_t *sess, struct command_rx_struct *command)
{
struct aim_snac_t *snac;
u_long snacid;
return ret;
}
-u_long aim_chatnav_createroom(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *name,
- u_short exchange)
+faim_export unsigned long aim_chatnav_createroom(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *name,
+ u_short exchange)
{
struct command_tx_struct *newpacket;
int i;
#include <faim/aim.h>
+#include <netdb.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
/*
* Clears out connection list, killing remaining connections.
*/
-void aim_connrst(struct aim_session_t *sess)
+faim_internal void aim_connrst(struct aim_session_t *sess)
{
faim_mutex_init(&sess->connlistlock);
if (sess->connlist) {
/*
* Gets a new connection structure.
*/
-struct aim_conn_t *aim_conn_getnext(struct aim_session_t *sess)
+faim_internal struct aim_conn_t *aim_conn_getnext(struct aim_session_t *sess)
{
struct aim_conn_t *newconn, *cur;
return;
}
-void aim_conn_kill(struct aim_session_t *sess, struct aim_conn_t **deadconn)
+faim_export void aim_conn_kill(struct aim_session_t *sess, struct aim_conn_t **deadconn)
{
struct aim_conn_t *cur;
return;
}
-void aim_conn_close(struct aim_conn_t *deadconn)
+faim_export void aim_conn_close(struct aim_conn_t *deadconn)
{
int typesav = -1, subtypesav = -1;
void *privsav = NULL;
return;
}
-struct aim_conn_t *aim_getconn_type(struct aim_session_t *sess,
- int type)
+faim_internal struct aim_conn_t *aim_getconn_type(struct aim_session_t *sess,
+ int type)
{
struct aim_conn_t *cur;
* FIXME: Return errors in a more sane way.
*
*/
-struct aim_conn_t *aim_newconn(struct aim_session_t *sess,
- int type, char *dest)
+faim_export struct aim_conn_t *aim_newconn(struct aim_session_t *sess,
+ int type, char *dest)
{
struct aim_conn_t *connstruct;
int ret;
return connstruct;
}
-int aim_conngetmaxfd(struct aim_session_t *sess)
+faim_export int aim_conngetmaxfd(struct aim_session_t *sess)
{
int j = 0;
struct aim_conn_t *cur;
return j;
}
-int aim_countconn(struct aim_session_t *sess)
+static int aim_countconn(struct aim_session_t *sess)
{
int cnt = 0;
struct aim_conn_t *cur;
* XXX: we could probably stand to do a little courser locking here.
*
*/
-struct aim_conn_t *aim_select(struct aim_session_t *sess,
- struct timeval *timeout, int *status)
+faim_export struct aim_conn_t *aim_select(struct aim_session_t *sess,
+ struct timeval *timeout, int *status)
{
struct aim_conn_t *cur;
fd_set fds;
return NULL; /* no waiting or error, return */
}
-int aim_conn_isready(struct aim_conn_t *conn)
+faim_export int aim_conn_isready(struct aim_conn_t *conn)
{
if (conn)
return (conn->status & 0x0001);
return -1;
}
-int aim_conn_setstatus(struct aim_conn_t *conn, int status)
+faim_export int aim_conn_setstatus(struct aim_conn_t *conn, int status)
{
int val;
return val;
}
-int aim_conn_setlatency(struct aim_conn_t *conn, int newval)
+faim_export int aim_conn_setlatency(struct aim_conn_t *conn, int newval)
{
if (!conn)
return -1;
return 0;
}
-void aim_session_init(struct aim_session_t *sess)
+faim_export void aim_session_init(struct aim_session_t *sess)
{
if (!sess)
return;
#include <faim/aim.h>
+#include <netdb.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
#include <sys/utsname.h> /* for aim_directim_initiate */
#include <arpa/inet.h> /* for inet_ntoa */
aim_filetransfer_accept aim_im.c
aim_getlisting aim_misc.c (?!) -- prototype function. can be ignored.
establish aim_misc.c
- aim_get_command_rendezvous aim_rxqueue.c
+ aim_get_command_rendezvous aim_r
oft_getfh aim_rxqueue.c
*/
-int aim_handlerendconnect(struct aim_session_t *sess, struct aim_conn_t *cur)
+faim_export int aim_handlerendconnect(struct aim_session_t *sess, struct aim_conn_t *cur)
{
int acceptfd = 0;
rxcallback_t userfunc;
* msg - null-terminated string to send
*/
-int aim_send_im_direct(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *msg)
+faim_export int aim_send_im_direct(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *msg)
{
struct command_tx_struct *newpacket , *newpacket2;
i += aimutil_put16(newpacket2->hdr.oft.hdr2+i, 0x0006);
i += aimutil_put16(newpacket2->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_putstr(newpacket2->hdr.oft.hdr2+i, priv->cookie, 8);
+ i += aimutil_putstr(newpacket2->hdr.oft.hdr2+i, (char *)priv->cookie, 8);
i += aimutil_put16(newpacket2->hdr.oft.hdr2+i, 0x0000);
i += aimutil_put16(newpacket2->hdr.oft.hdr2+i, 0x0000);
i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0006);
i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_putstr(newpacket->hdr.oft.hdr2+i, priv->cookie, 8);
+ i += aimutil_putstr(newpacket->hdr.oft.hdr2+i, (char *)priv->cookie, 8);
i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
*/
-struct aim_conn_t *aim_directim_initiate(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- struct aim_directim_priv *priv,
- char *destsn)
+faim_export struct aim_conn_t *aim_directim_initiate(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ struct aim_directim_priv *priv,
+ char *destsn)
{
struct command_tx_struct *newpacket;
struct aim_conn_t *newconn;
struct hostent *hptr;
struct utsname myname;
- char cap[16];
+ unsigned char cap[16];
char d[4]; /* XXX: IPv6. *cough* */
/*
}
-struct aim_conn_t *aim_directim_connect(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- struct aim_directim_priv *priv )
+faim_export struct aim_conn_t *aim_directim_connect(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ struct aim_directim_priv *priv )
{
struct aim_conn_t *newconn = NULL;;
return newconn;
}
-u_long aim_accepttransfer(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- struct aim_conn_t *oftconn,
- char *sn,
- char *cookie,
- unsigned short rendid)
+faim_export unsigned long aim_accepttransfer(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ struct aim_conn_t *oftconn,
+ char *sn,
+ char *cookie,
+ unsigned short rendid)
{
struct command_tx_struct *newpacket, *newoft;
struct aim_fileheader_t *listingfh;
*
*/
-struct aim_fileheader_t *aim_getlisting(struct aim_session_t *sess)
+faim_internal struct aim_fileheader_t *aim_getlisting(struct aim_session_t *sess)
{
struct aim_fileheader_t *fh;
* returns your fd
*/
-int aim_listenestablish(u_short portnum)
+faim_internal int aim_listenestablish(u_short portnum)
{
int listenfd;
const int on = 1;
return listenfd;
}
-int aim_get_command_rendezvous(struct aim_session_t *sess, struct aim_conn_t *conn)
+faim_internal int aim_get_command_rendezvous(struct aim_session_t *sess, struct aim_conn_t *conn)
{
/* XXX: NOT THREAD SAFE RIGHT NOW. the locks are acting up. deal. -- jbm */
payloadlength = aimutil_get32(hdr+22);
flags = aimutil_get16(hdr+32);
- snptr = hdr+38;
+ snptr = (char *)hdr+38;
strncpy(priv->sn, snptr, MAXSNLEN);
memcpy(&(ft->fh), fh, sizeof(struct aim_fileheader_t));
- cook = aim_checkcookie(sess, ft->fh.bcookie, AIM_COOKIETYPE_OFTGET);
+ cook = aim_checkcookie(sess, (unsigned char *)ft->fh.bcookie, AIM_COOKIETYPE_OFTGET);
if(cook->data)
free(cook->data); /* XXX */
memcpy(&(ft->fh), fh, sizeof(struct aim_fileheader_t));
- cook = aim_checkcookie(sess, ft->fh.bcookie, AIM_COOKIETYPE_OFTGET);
+ cook = aim_checkcookie(sess, (unsigned char *)ft->fh.bcookie, AIM_COOKIETYPE_OFTGET);
if(cook->data)
free(cook->data); /* XXX: integrate cookie caching */
if(hdrlen != 0x100)
printf("faim: fileget_command(120c): um. hdrlen != 0x100..\n");
- listingfh = aim_oft_getfh((char *)hdr);
+ listingfh = aim_oft_getfh(hdr);
memcpy(&(ft->fh), listingfh, sizeof(struct aim_fileheader_t));
- cook = aim_checkcookie(sess, ft->fh.bcookie, AIM_COOKIETYPE_OFTGET);
+ cook = aim_checkcookie(sess, (unsigned char *)ft->fh.bcookie, AIM_COOKIETYPE_OFTGET);
if(cook->data)
free(cook->data); /* XXX */
curbyte += aimutil_put32(newoft->hdr.oft.hdr2+curbyte, 0 /*listingfh->nrecvd*/);
curbyte += aimutil_put32(newoft->hdr.oft.hdr2+curbyte, 0/*listingfh->recvcsum*/);
- strncpy(newoft->hdr.oft.hdr2+curbyte, listingfh->idstring, 32);
+ strncpy((char *)newoft->hdr.oft.hdr2+curbyte, listingfh->idstring, 32);
curbyte += 32;
curbyte += aimutil_put8(newoft->hdr.oft.hdr2+curbyte, 0x20 /*listingfh->flags */);
curbyte += aimutil_put16(newoft->hdr.oft.hdr2+curbyte, listingfh->nencode);
curbyte += aimutil_put16(newoft->hdr.oft.hdr2+curbyte, listingfh->nlanguage);
- strncpy(newoft->hdr.oft.hdr2+curbyte, listingfh->name, 64);
+ strncpy((char *)newoft->hdr.oft.hdr2+curbyte, listingfh->name, 64);
curbyte += 64;
free(listingfh);
int i;
struct aim_fileheader_t *fh;
- fh = aim_oft_getfh((char *)hdr);
+ fh = aim_oft_getfh(hdr);
c = (char *)calloc(1, fh->size);
* this currently feeds totally bogus data
*/
-struct aim_fileheader_t *aim_oft_getfh(char *hdr)
+faim_internal struct aim_fileheader_t *aim_oft_getfh(unsigned char *hdr)
{
struct aim_fileheader_t *fh;
int i, j;
* when the message is received (of type 0x0004/0x000c)
*
*/
-u_long aim_send_im(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *destsn, u_int flags, char *msg)
+faim_export unsigned long aim_send_im(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *destsn, u_int flags, char *msg)
{
int curbyte,i;
return (sess->snac_nextid++);
}
-int aim_parse_outgoing_im_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_outgoing_im_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
unsigned int i = 0, z;
rxcallback_t userfunc = NULL;
return 1;
}
- strncpy(sn, command->data+i+1, (int) *(command->data+i));
+ strncpy(sn, (char *) command->data+i+1, (int) *(command->data+i));
i += 1 + (int) *(command->data+i);
tlvlist = aim_readtlvchain(command->data+i, command->commandlen-i);
if (aim_gettlv(tlvlist, 0x0002, 1)) {
int j = 0;
- msgblock = aim_gettlv_str(tlvlist, 0x0002, 1);
+ msgblock = (unsigned char *)aim_gettlv_str(tlvlist, 0x0002, 1);
/* no, this really is correct. I'm not high or anything either. */
j += 2;
* room we're invited to, but obviously can't attend...
*
*/
-int aim_parse_incoming_im_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_incoming_im_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
u_int i = 0,z;
rxcallback_t userfunc = NULL;
* AIM_TRANSFER_DENY_NOTACCEPTING -- "client is not accepting transfers"
*
*/
-u_long aim_denytransfer(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sender,
- char *cookie,
- unsigned short code)
+faim_export unsigned long aim_denytransfer(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *sender,
+ char *cookie,
+ unsigned short code)
{
struct command_tx_struct *newpacket;
int curbyte, i;
* idea.
*
*/
-u_long aim_seticbmparam(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export unsigned long aim_seticbmparam(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
struct command_tx_struct *newpacket;
int curbyte;
return (sess->snac_nextid++);
}
-int aim_parse_msgerror_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_msgerror_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
u_long snacid = 0x000000000;
struct aim_snac_t *snac = NULL;
}
-int aim_parse_missedcall(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_missedcall(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
int i, ret = 1;
rxcallback_t userfunc = NULL;
unsigned short infotype;
};
-u_long aim_getinfo(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- const char *sn,
- unsigned short infotype)
+faim_export unsigned long aim_getinfo(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ const char *sn,
+ unsigned short infotype)
{
struct command_tx_struct *newpacket;
int i = 0;
return (sess->snac_nextid++);
}
-int aim_parse_locateerr(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_locateerr(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
u_long snacid = 0x000000000;
struct aim_snac_t *snac = NULL;
0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
};
-u_short aim_getcap(unsigned char *capblock, int buflen)
+faim_internal unsigned short aim_getcap(unsigned char *capblock, int buflen)
{
u_short ret = 0;
int y;
return ret;
}
-int aim_putcap(unsigned char *capblock, int buflen, u_short caps)
+faim_internal int aim_putcap(unsigned char *capblock, int buflen, u_short caps)
{
int offset = 0;
* AIM is fairly regular about providing user info. This
* is a generic routine to extract it in its standard form.
*/
-int aim_extractuserinfo(u_char *buf, struct aim_userinfo_s *outinfo)
+faim_internal int aim_extractuserinfo(u_char *buf, struct aim_userinfo_s *outinfo)
{
int i = 0;
int tlvcnt = 0;
* through aim_extractuserinfo() however.
*
*/
-int aim_parse_oncoming_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_oncoming_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_userinfo_s userinfo;
u_int i = 0;
* information other than the name it applies to.
*
*/
-int aim_parse_offgoing_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_offgoing_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
char sn[MAXSNLEN+1];
u_int i = 0;
rxcallback_t userfunc=NULL;
- strncpy(sn, command->data+11, (int)command->data[10]);
+ strncpy(sn, (char *)command->data+11, (int)command->data[10]);
sn[(int)command->data[10]] = '\0';
userfunc = aim_callhandler(command->conn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING);
* the higher-level callback (in the user app).
*
*/
-int aim_parse_userinfo_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_parse_userinfo_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_userinfo_s userinfo;
char *text_encoding = NULL;
/*
* Inverse of aim_extractuserinfo()
*/
-int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s *info)
+faim_internal int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s *info)
{
int i = 0;
struct aim_tlvlist_t *tlvlist = NULL;
return i;
}
-int aim_sendbuddyoncoming(struct aim_session_t *sess, struct aim_conn_t *conn, struct aim_userinfo_s *info)
+faim_export int aim_sendbuddyoncoming(struct aim_session_t *sess, struct aim_conn_t *conn, struct aim_userinfo_s *info)
{
struct command_tx_struct *tx;
int i = 0;
return 0;
}
-int aim_sendbuddyoffgoing(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn)
+faim_export int aim_sendbuddyoffgoing(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn)
{
struct command_tx_struct *tx;
int i = 0;
#include "tis_telnet_proxy.h"
#endif
-int aim_sendconnack(struct aim_session_t *sess,
- struct aim_conn_t *conn)
+faim_export int aim_sendconnack(struct aim_session_t *sess,
+ struct aim_conn_t *conn)
{
int curbyte=0;
* a 0017/0007 comes back, which is the signal to send
* it the main login command (0017/0002).
*/
-int aim_request_login(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sn)
+faim_export int aim_request_login(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *sn)
{
int curbyte=0;
* stupid method of doing it.
*
*/
-int aim_send_login (struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sn, char *password, struct client_info_s *clientinfo,
- char *key)
+faim_export int aim_send_login (struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *sn, char *password,
+ struct client_info_s *clientinfo,
+ char *key)
{
int curbyte=0;
md5_byte_t digest[16];
curbyte+= aim_puttlv_str(newpacket->data+curbyte, 0x0001, strlen(sn), sn);
aim_encode_password_md5(password, key, digest);
- curbyte+= aim_puttlv_str(newpacket->data+curbyte, 0x0025, 16, digest);
+ curbyte+= aim_puttlv_str(newpacket->data+curbyte, 0x0025, 16, (char *)digest);
/* XXX is clientstring required by oscar? */
if (strlen(clientinfo->clientstring))
* its nonzero, there was an error.
*
*/
-int aim_authparse(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_authparse(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_tlvlist_t *tlvlist;
int ret = 1;
* Calls the client, which should then use the value to call aim_send_login.
*
*/
-int aim_authkeyparse(struct aim_session_t *sess, struct command_rx_struct *command)
+faim_internal int aim_authkeyparse(struct aim_session_t *sess, struct command_rx_struct *command)
{
unsigned char *key;
int keylen;
key[keylen] = '\0';
if ((userfunc = aim_callhandler(command->conn, 0x0017, 0x0007)))
- ret = userfunc(sess, command, key);
+ ret = userfunc(sess, command, (char *)key);
free(key);
* You probably don't want this unless you're writing an AIM server.
*
*/
-unsigned long aim_sendauthresp(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sn, char *bosip,
- char *cookie, char *email,
- int regstatus)
+faim_export unsigned long aim_sendauthresp(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ char *sn, char *bosip,
+ char *cookie, char *email,
+ int regstatus)
{
struct command_tx_struct *tx;
struct aim_tlvlist_t *tlvlist = NULL;
/*
* Generate a random cookie. (Non-client use only)
*/
-int aim_gencookie(unsigned char *buf)
+faim_export int aim_gencookie(unsigned char *buf)
{
int i;
/*
* Send Server Ready. (Non-client)
*/
-int aim_sendserverready(struct aim_session_t *sess, struct aim_conn_t *conn)
+faim_export int aim_sendserverready(struct aim_session_t *sess, struct aim_conn_t *conn)
{
struct command_tx_struct *tx;
int i = 0;
/*
* Send service redirect. (Non-Client)
*/
-unsigned long aim_sendredirect(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- unsigned short servid,
- char *ip,
- char *cookie)
+faim_export unsigned long aim_sendredirect(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ unsigned short servid,
+ char *ip,
+ char *cookie)
{
struct command_tx_struct *tx;
struct aim_tlvlist_t *tlvlist = NULL;
#include <faim/aim.h>
#include <aim_buildcode.h> /* generated by mkbuildinfo.sh */
-char *aim_getbuilddate(void)
+faim_export char *aim_getbuilddate(void)
{
return AIM_BUILDDATE;
}
-char *aim_getbuildtime(void)
+faim_export char *aim_getbuildtime(void)
{
return AIM_BUILDTIME;
}
-char *aim_getbuildstring(void)
+faim_export char *aim_getbuildstring(void)
{
static char string[100];
return string;
}
+#if debug > 0
+faim_internal void faimdprintf(int dlevel, const char *format, ...)
+{
+ if (dlevel >= debug) {
+ va_list ap;
+
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ }
+ return;
+}
+#else
+faim_internal void faimdprintf(int dlevel, const char *format, ...)
+{
+ return;
+}
+#endif
*
* returns -1 on error, 0 on success. */
-int aim_cachecookie(struct aim_session_t *sess,
- struct aim_msgcookie_t *cookie)
+faim_internal int aim_cachecookie(struct aim_session_t *sess,
+ struct aim_msgcookie_t *cookie)
{
struct aim_msgcookie_t *newcook = NULL, *cur = NULL;
* NULL on not found.
*/
-struct aim_msgcookie_t *aim_uncachecookie(struct aim_session_t *sess, char *cookie, int type)
+faim_internal struct aim_msgcookie_t *aim_uncachecookie(struct aim_session_t *sess, unsigned char *cookie, int type)
{
struct aim_msgcookie_t *cur;
* i'll avoid the puns.
*/
-int aim_purgecookies(struct aim_session_t *sess, int maxage)
+faim_export int aim_purgecookies(struct aim_session_t *sess, int maxage)
{
struct aim_msgcookie_t *cur;
struct aim_msgcookie_t *remed = NULL;
return 0;
}
-struct aim_msgcookie_t *aim_mkcookie(unsigned char *c, int type, void *data)
+faim_internal struct aim_msgcookie_t *aim_mkcookie(unsigned char *c, int type, void *data)
{
struct aim_msgcookie_t *cookie;
return(cookie);
}
-struct aim_msgcookie_t *aim_checkcookie(struct aim_session_t *sess, char *cookie, int type)
+faim_internal struct aim_msgcookie_t *aim_checkcookie(struct aim_session_t *sess, unsigned char *cookie, int type)
{
struct aim_msgcookie_t *cur;
return(NULL);
}
-int aim_freecookie(struct aim_msgcookie_t *cookie) {
+static int aim_freecookie(struct aim_msgcookie_t *cookie) {
return(0);
}
-int aim_msgcookie_gettype(int reqclass) {
+faim_internal int aim_msgcookie_gettype(int reqclass) {
/* XXX: hokey-assed. needs fixed. */
switch(reqclass) {
case AIM_CAPS_BUDDYICON:
* Bleck functions get called when there's no non-bleck functions
* around to cleanup the mess...
*/
-int bleck(struct aim_session_t *sess,struct command_rx_struct *workingPtr, ...)
+faim_internal int bleck(struct aim_session_t *sess,struct command_rx_struct *workingPtr, ...)
{
u_short family;
u_short subtype;
return 1;
}
-int aim_conn_addhandler(struct aim_session_t *sess,
+faim_export int aim_conn_addhandler(struct aim_session_t *sess,
struct aim_conn_t *conn,
u_short family,
u_short type,
return 0;
}
-int aim_clearhandlers(struct aim_conn_t *conn)
+faim_export int aim_clearhandlers(struct aim_conn_t *conn)
{
struct aim_rxcblist_t *cur,*tmp;
if (!conn)
return 0;
}
-rxcallback_t aim_callhandler(struct aim_conn_t *conn,
- u_short family,
- u_short type)
+faim_internal rxcallback_t aim_callhandler(struct aim_conn_t *conn,
+ u_short family,
+ u_short type)
{
struct aim_rxcblist_t *cur;
return aim_callhandler(conn, family, 0xffff);
}
-int aim_callhandler_noparam(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- u_short family,
- u_short type,
- struct command_rx_struct *ptr)
+faim_internal int aim_callhandler_noparam(struct aim_session_t *sess,
+ struct aim_conn_t *conn,
+ u_short family,
+ u_short type,
+ struct command_rx_struct *ptr)
{
rxcallback_t userfunc = NULL;
userfunc = aim_callhandler(conn, family, type);
TODO: Allow for NULL handlers.
*/
-int aim_rxdispatch(struct aim_session_t *sess)
+faim_export int aim_rxdispatch(struct aim_session_t *sess)
{
int i = 0;
struct command_rx_struct *workingPtr = NULL;
/* Old login protocol */
/* any user callbacks will be called from here */
workingPtr->handled = aim_authparse(sess, workingPtr);
- break;
#endif
+ break;
}
}
break;
return 0;
}
-int aim_parse_msgack_middle(struct aim_session_t *sess, struct command_rx_struct *command)
+faim_internal int aim_parse_msgack_middle(struct aim_session_t *sess, struct command_rx_struct *command)
{
rxcallback_t userfunc = NULL;
char sn[MAXSNLEN];
i++;
memset(sn, 0, sizeof(sn));
- strncpy(sn, command->data+i, snlen);
+ strncpy(sn, (char *)command->data+i, snlen);
if ((userfunc = aim_callhandler(command->conn, 0x0004, 0x000c)))
ret = userfunc(sess, command, type, sn);
return ret;
}
-int aim_parse_ratechange_middle(struct aim_session_t *sess, struct command_rx_struct *command)
+faim_internal int aim_parse_ratechange_middle(struct aim_session_t *sess, struct command_rx_struct *command)
{
rxcallback_t userfunc = NULL;
int ret = 1;
return ret;
}
-int aim_parse_evilnotify_middle(struct aim_session_t *sess, struct command_rx_struct *command)
+faim_internal int aim_parse_evilnotify_middle(struct aim_session_t *sess, struct command_rx_struct *command)
{
rxcallback_t userfunc = NULL;
int ret = 1, pos;
return ret;
}
-int aim_parsemotd_middle(struct aim_session_t *sess,
- struct command_rx_struct *command, ...)
+faim_internal int aim_parsemotd_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command, ...)
{
rxcallback_t userfunc = NULL;
char *msg;
return ret;
}
-int aim_handleredirect_middle(struct aim_session_t *sess,
+faim_internal int aim_handleredirect_middle(struct aim_session_t *sess,
struct command_rx_struct *command, ...)
{
struct aim_tlv_t *tmptlv = NULL;
int serviceid = 0x00;
- char cookie[AIM_COOKIELEN];
+ unsigned char cookie[AIM_COOKIELEN];
char *ip = NULL;
rxcallback_t userfunc = NULL;
struct aim_tlvlist_t *tlvlist;
return ret;
}
-int aim_parse_unknown(struct aim_session_t *sess,
- struct command_rx_struct *command, ...)
+faim_internal int aim_parse_unknown(struct aim_session_t *sess,
+ struct command_rx_struct *command, ...)
{
u_int i = 0;
}
-int aim_negchan_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)
+faim_internal int aim_negchan_middle(struct aim_session_t *sess,
+ struct command_rx_struct *command)
{
struct aim_tlvlist_t *tlvlist;
char *msg = NULL;
* Middle handler for 0x0001 snac of each family.
*
*/
-int aim_parse_generalerrs(struct aim_session_t *sess,
- struct command_rx_struct *command, ...)
+faim_internal int aim_parse_generalerrs(struct aim_session_t *sess,
+ struct command_rx_struct *command, ...)
{
u_short family;
u_short subtype;
*/
#include <faim/aim.h>
+#include <sys/socket.h>
/*
* Since not all implementations support MSG_WAITALL, define
* an alternate guarenteed read function...
+ *
+ * We keep recv() for systems that can do it because it means
+ * a single system call for the entire packet, where read may
+ * take more for a badly fragmented packet.
+ *
*/
static int aim_recv(int fd, void *buf, size_t count)
{
-#ifdef FAIM_HAS_MSG_WAITALL
+#ifdef MSG_WAITALL
return recv(fd, buf, count, MSG_WAITALL);
#else
int left, ret, cur = 0;
left = count;
while (left) {
- ret = read(fd, buf+cur, left);
+ ret = read(fd, ((unsigned char *)buf)+cur, left);
if (ret == -1)
return -1;
if (ret == 0)
* Grab a single command sequence off the socket, and enqueue
* it in the incoming event queue in a seperate struct.
*/
-int aim_get_command(struct aim_session_t *sess, struct aim_conn_t *conn)
+faim_export int aim_get_command(struct aim_session_t *sess, struct aim_conn_t *conn)
{
unsigned char generic[6];
struct command_rx_struct *newrx = NULL;
* does not keep a pointer, it's lost forever.
*
*/
-void aim_purge_rxqueue(struct aim_session_t *sess)
+faim_export void aim_purge_rxqueue(struct aim_session_t *sess)
{
struct command_rx_struct *cur = NULL;
struct command_rx_struct *tmp;
* XXX: this is something that was handled better in the old connection
* handling method, but eh.
*/
-void aim_rxqueue_cleanbyconn(struct aim_session_t *sess, struct aim_conn_t *conn)
+faim_internal void aim_rxqueue_cleanbyconn(struct aim_session_t *sess, struct aim_conn_t *conn)
{
struct command_rx_struct *currx;
#include <faim/aim.h>
-struct aim_tlvlist_t *aim_readtlvchain(u_char *buf, int maxlen)
+faim_internal struct aim_tlvlist_t *aim_readtlvchain(u_char *buf, int maxlen)
{
int pos;
struct aim_tlvlist_t *list;
return list;
}
-void aim_freetlvchain(struct aim_tlvlist_t **list)
+faim_internal void aim_freetlvchain(struct aim_tlvlist_t **list)
{
struct aim_tlvlist_t *cur, *cur2;
return;
}
-int aim_counttlvchain(struct aim_tlvlist_t **list)
+faim_internal int aim_counttlvchain(struct aim_tlvlist_t **list)
{
struct aim_tlvlist_t *cur;
int count = 0;
return count;
}
-int aim_addtlvtochain_str(struct aim_tlvlist_t **list, unsigned short type, char *str, int len)
+faim_internal int aim_addtlvtochain_str(struct aim_tlvlist_t **list, unsigned short type, char *str, int len)
{
struct aim_tlvlist_t *new;
struct aim_tlvlist_t *cur;
return new->tlv->length;
}
-int aim_addtlvtochain16(struct aim_tlvlist_t **list, unsigned short type, unsigned short val)
+faim_internal int aim_addtlvtochain16(struct aim_tlvlist_t **list, unsigned short type, unsigned short val)
{
struct aim_tlvlist_t *new;
struct aim_tlvlist_t *cur;
return 2;
}
-int aim_addtlvtochain32(struct aim_tlvlist_t **list, unsigned short type, unsigned long val)
+faim_internal int aim_addtlvtochain32(struct aim_tlvlist_t **list, unsigned short type, unsigned long val)
{
struct aim_tlvlist_t *new;
struct aim_tlvlist_t *cur;
return 4;
}
-int aim_writetlvchain(u_char *buf, int buflen, struct aim_tlvlist_t **list)
+faim_internal int aim_writetlvchain(u_char *buf, int buflen, struct aim_tlvlist_t **list)
{
int goodbuflen = 0;
int i = 0;
/*
* Grab the Nth TLV of type type in the TLV list list.
*/
-struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *list, u_short type, int nth)
+faim_internal struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *list, u_short type, int nth)
{
int i;
struct aim_tlvlist_t *cur;
return NULL;
}
-char *aim_gettlv_str(struct aim_tlvlist_t *list, u_short type, int nth)
+faim_internal char *aim_gettlv_str(struct aim_tlvlist_t *list, u_short type, int nth)
{
struct aim_tlv_t *tlv;
char *newstr;
return newstr;
}
-struct aim_tlv_t *aim_grabtlv(u_char *src)
+faim_internal struct aim_tlv_t *aim_grabtlv(u_char *src)
{
struct aim_tlv_t *dest = NULL;
return dest;
}
-struct aim_tlv_t *aim_grabtlvstr(u_char *src)
+faim_internal struct aim_tlv_t *aim_grabtlvstr(u_char *src)
{
struct aim_tlv_t *dest = NULL;
return dest;
}
-int aim_puttlv (u_char *dest, struct aim_tlv_t *newtlv)
+faim_internal int aim_puttlv(u_char *dest, struct aim_tlv_t *newtlv)
{
int i=0;
return i;
}
-struct aim_tlv_t *aim_createtlv(void)
+faim_internal struct aim_tlv_t *aim_createtlv(void)
{
struct aim_tlv_t *newtlv = NULL;
newtlv = (struct aim_tlv_t *)malloc(sizeof(struct aim_tlv_t));
return newtlv;
}
-int aim_freetlv(struct aim_tlv_t **oldtlv)
+faim_internal int aim_freetlv(struct aim_tlv_t **oldtlv)
{
if (!oldtlv)
return -1;
return 0;
}
-int aim_puttlv_16(u_char *buf, u_short t, u_short v)
+faim_internal int aim_puttlv_16(u_char *buf, u_short t, u_short v)
{
int curbyte=0;
curbyte += aimutil_put16(buf+curbyte, (u_short)(t&0xffff));
return curbyte;
}
-int aim_puttlv_32(u_char *buf, u_short t, u_long v)
+faim_internal int aim_puttlv_32(u_char *buf, u_short t, u_long v)
{
int curbyte=0;
curbyte += aimutil_put16(buf+curbyte, (u_short)(t&0xffff));
return curbyte;
}
-int aim_puttlv_str(u_char *buf, u_short t, u_short l, u_char *v)
+faim_internal int aim_puttlv_str(u_char *buf, u_short t, u_short l, char *v)
{
int curbyte;
curbyte += aimutil_put16(buf+curbyte, (u_short)(t&0xffff));
curbyte += aimutil_put16(buf+curbyte, (u_short)(l&0xffff));
if (v)
- memcpy(buf+curbyte, v, l);
+ memcpy(buf+curbyte, (unsigned char *)v, l);
curbyte += l;
return curbyte;
}
* chan = channel for OSCAR, hdrtype for OFT
*
*/
-struct command_tx_struct *aim_tx_new(unsigned short framing, int chan, struct aim_conn_t *conn, int datalen)
+faim_internal struct command_tx_struct *aim_tx_new(unsigned short framing, int chan, struct aim_conn_t *conn, int datalen)
{
struct command_tx_struct *new;
* that is, when sess->tx_enqueue is set to &aim_tx_enqueue__queuebased.
*
*/
-int aim_tx_enqueue__queuebased(struct aim_session_t *sess,
- struct command_tx_struct *newpacket)
+faim_internal int aim_tx_enqueue__queuebased(struct aim_session_t *sess,
+ struct command_tx_struct *newpacket)
{
struct command_tx_struct *cur;
* right here.
*
*/
-int aim_tx_enqueue__immediate(struct aim_session_t *sess, struct command_tx_struct *newpacket)
+faim_internal int aim_tx_enqueue__immediate(struct aim_session_t *sess, struct command_tx_struct *newpacket)
{
if (newpacket->conn == NULL) {
faimdprintf(1, "aim_tx_enqueue: ERROR: packet has no connection\n");
* before enqueuement (in aim_tx_enqueue()).
*
*/
-u_int aim_get_next_txseqnum(struct aim_conn_t *conn)
+faim_internal unsigned int aim_get_next_txseqnum(struct aim_conn_t *conn)
{
u_int ret;
*
*/
#if debug == 2
-int aim_tx_printqueue(struct aim_session_t *sess)
+faim_internal int aim_tx_printqueue(struct aim_session_t *sess)
{
struct command_tx_struct *cur;
* 9) Step to next struct in list and go back to 1.
*
*/
-int aim_tx_sendframe(struct aim_session_t *sess, struct command_tx_struct *cur)
+faim_internal int aim_tx_sendframe(struct aim_session_t *sess, struct command_tx_struct *cur)
{
int buflen = 0;
unsigned char *curPacket;
return 1; /* success */
}
-int aim_tx_flushqueue(struct aim_session_t *sess)
+faim_export int aim_tx_flushqueue(struct aim_session_t *sess)
{
struct command_tx_struct *cur;
* reduce memory footprint at run time!
*
*/
-void aim_tx_purgequeue(struct aim_session_t *sess)
+faim_export void aim_tx_purgequeue(struct aim_session_t *sess)
{
struct command_tx_struct *cur = NULL;
struct command_tx_struct *tmp;
#include <faim/aim.h>
#include <ctype.h>
-#define AIMUTIL_USEMACROS
-
#ifdef AIMUTIL_USEMACROS
/* macros in faim/aim.h */
#else
-inline int aimutil_put8(u_char *buf, u_char data)
+faim_shortfunc int aimutil_put8(u_char *buf, u_char data)
{
buf[0] = (u_char)data&0xff;
return 1;
}
-inline u_char aimutil_get8(u_char *buf)
+faim_shortfunc u_char aimutil_get8(u_char *buf)
{
return buf[0];
}
/*
* Endian-ness issues here?
*/
-inline int aimutil_put16(u_char *buf, u_short data)
+faim_shortfunc int aimutil_put16(u_char *buf, u_short data)
{
buf[0] = (u_char)(data>>8)&0xff;
buf[1] = (u_char)(data)&0xff;
return 2;
}
-inline u_short aimutil_get16(u_char *buf)
+faim_shortfunc u_short aimutil_get16(u_char *buf)
{
u_short val;
val = (buf[0] << 8) & 0xff00;
return val;
}
-inline int aimutil_put32(u_char *buf, u_long data)
+faim_shortfunc int aimutil_put32(u_char *buf, u_long data)
{
buf[0] = (u_char)(data>>24)&0xff;
buf[1] = (u_char)(data>>16)&0xff;
return 4;
}
-inline u_long aimutil_get32(u_char *buf)
+faim_shortfunc u_long aimutil_get32(u_char *buf)
{
u_long val;
val = (buf[0] << 24) & 0xff000000;
}
#endif /* AIMUTIL_USEMACROS */
-inline int aimutil_putstr(u_char *dest, const u_char *src, int len)
+faim_export faim_shortfunc int aimutil_putstr(u_char *dest, const char *src, int len)
{
memcpy(dest, src, len);
return len;
* -- DMP.
*
*/
-int aimutil_tokslen(char *toSearch, int index, char dl)
+faim_export int aimutil_tokslen(char *toSearch, int index, char dl)
{
int curCount = 1;
char *next;
return toReturn;
}
-int aimutil_itemcnt(char *toSearch, char dl)
+faim_export int aimutil_itemcnt(char *toSearch, char dl)
{
int curCount;
char *next;
return curCount;
}
-char *aimutil_itemidx(char *toSearch, int index, char dl)
+faim_export char *aimutil_itemidx(char *toSearch, int index, char dl)
{
int curCount;
char *next;
* return is equal to that of strlen().
*
*/
-int aim_snlen(const char *sn)
+faim_export int aim_snlen(const char *sn)
{
int i = 0;
const char *curPtr = NULL;
*
*/
-int aim_sncmp(const char *sn1, const char *sn2)
+faim_export int aim_sncmp(const char *sn1, const char *sn2)
{
const char *curPtr1 = NULL, *curPtr2 = NULL;
/* Minor changes by and1000 on 15/1/97 to make it go under Nemesis */
-char *aim_strsep(char **pp, const char *delim)
+faim_export char *aim_strsep(char **pp, const char *delim)
{
char *p, *q;
#include <time.h>
#include <io.h>
#else
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
#include <sys/time.h>
#include <unistd.h>
#endif
#define gethostbyname(x) gethostbyname2(x, AF_INET)
#endif
-#if defined(MSG_WAITALL)
-#define FAIM_HAS_MSG_WAITALL
+#if defined(_WIN32) || defined(STRICT_ANSI)
+#define faim_shortfunc
+#else
+#define faim_shortfunc inline
+#endif
+
+#if defined(_WIN32)
+/*
+ * For a win32 DLL, we define WIN32_INDLL if this file
+ * is included while compiling the DLL. If its not
+ * defined (its included in a client app), the symbols
+ * will be imported instead of exported.
+ */
+#ifdef WIN32_INDLL
+#define faim_export __declspec(dllexport)
+#else
+#define faim_export __declspec(dllimport)
+#endif /* WIN32_INDLL */
+#define faim_internal
+#else
+/*
+ * Nothing normally needed for unix...
+ */
+#define faim_export
+#define faim_internal
#endif
/*
#define AIM_MD5_STRING "AOL Instant Messenger (SM)"
-#if debug > 0
-#define faimdprintf(l, x...) {if (l >= debug) printf(x); }
-#else
-#define faimdprintf(l, x...)
-#endif
-
/*
* Login info. Passes information from the Authorization
* stage of login to the service (BOS, etc) connection
struct aim_login_struct {
char screen_name[MAXSNLEN+1];
char *BOSIP;
- char cookie[AIM_COOKIELEN];
+ unsigned char cookie[AIM_COOKIELEN];
char *email;
u_short regstatus;
char *errorurl;
};
/* TLV-handling functions */
-struct aim_tlvlist_t *aim_readtlvchain(u_char *buf, int maxlen);
-void aim_freetlvchain(struct aim_tlvlist_t **list);
-struct aim_tlv_t *aim_grabtlv(u_char *src);
-struct aim_tlv_t *aim_grabtlvstr(u_char *src);
-struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *, u_short, int);
-char *aim_gettlv_str(struct aim_tlvlist_t *, u_short, int);
-int aim_puttlv (u_char *dest, struct aim_tlv_t *newtlv);
-struct aim_tlv_t *aim_createtlv(void);
-int aim_freetlv(struct aim_tlv_t **oldtlv);
-int aim_puttlv_16(u_char *, u_short, u_short);
-int aim_puttlv_32(u_char *, u_short, u_long);
-int aim_puttlv_str(u_char *buf, u_short t, u_short l, u_char *v);
-int aim_writetlvchain(u_char *buf, int buflen, struct aim_tlvlist_t **list);
-int aim_addtlvtochain16(struct aim_tlvlist_t **list, unsigned short type, unsigned short val);
-int aim_addtlvtochain32(struct aim_tlvlist_t **list, unsigned short type, unsigned long val);
-int aim_addtlvtochain_str(struct aim_tlvlist_t **list, unsigned short type, char *str, int len);
-int aim_counttlvchain(struct aim_tlvlist_t **list);
+faim_internal struct aim_tlvlist_t *aim_readtlvchain(u_char *buf, int maxlen);
+faim_internal void aim_freetlvchain(struct aim_tlvlist_t **list);
+faim_internal struct aim_tlv_t *aim_grabtlv(u_char *src);
+faim_internal struct aim_tlv_t *aim_grabtlvstr(u_char *src);
+faim_internal struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *, u_short, int);
+faim_internal char *aim_gettlv_str(struct aim_tlvlist_t *, u_short, int);
+faim_internal int aim_puttlv (u_char *dest, struct aim_tlv_t *newtlv);
+faim_internal struct aim_tlv_t *aim_createtlv(void);
+faim_internal int aim_freetlv(struct aim_tlv_t **oldtlv);
+faim_internal int aim_puttlv_16(u_char *, u_short, u_short);
+faim_internal int aim_puttlv_32(u_char *, u_short, u_long);
+faim_internal int aim_puttlv_str(u_char *buf, u_short t, u_short l, char *v);
+faim_internal int aim_writetlvchain(u_char *buf, int buflen, struct aim_tlvlist_t **list);
+faim_internal int aim_addtlvtochain16(struct aim_tlvlist_t **list, unsigned short type, unsigned short val);
+faim_internal int aim_addtlvtochain32(struct aim_tlvlist_t **list, unsigned short type, unsigned long val);
+faim_internal int aim_addtlvtochain_str(struct aim_tlvlist_t **list, unsigned short type, char *str, int len);
+faim_internal int aim_counttlvchain(struct aim_tlvlist_t **list);
/*
* Get command from connections / Dispatch commands
* already in queue.
*/
-int aim_get_command(struct aim_session_t *, struct aim_conn_t *);
+faim_export int aim_get_command(struct aim_session_t *, struct aim_conn_t *);
int aim_rxdispatch(struct aim_session_t *);
u_long aim_debugconn_sendconnect(struct aim_session_t *sess, struct aim_conn_t *conn);
int aim_logoff(struct aim_session_t *);
-void aim_conn_kill(struct aim_session_t *sess, struct aim_conn_t **deadconn);
+faim_export void aim_conn_kill(struct aim_session_t *sess, struct aim_conn_t **deadconn);
typedef int (*rxcallback_t)(struct aim_session_t *, struct command_rx_struct *, ...);
int aim_register_callbacks(rxcallback_t *);
u_long aim_genericreq_l(struct aim_session_t *, struct aim_conn_t *conn, u_short family, u_short subtype, u_long *);
u_long aim_genericreq_s(struct aim_session_t *, struct aim_conn_t *conn, u_short family, u_short subtype, u_short *);
-struct aim_fileheader_t *aim_oft_getfh(char *hdr);
+faim_internal struct aim_fileheader_t *aim_oft_getfh(unsigned char *hdr);
/* aim_login.c */
-int aim_sendconnack(struct aim_session_t *sess, struct aim_conn_t *conn);
-int aim_request_login (struct aim_session_t *sess, struct aim_conn_t *conn, char *sn);
-int aim_send_login (struct aim_session_t *, struct aim_conn_t *, char *, char *, struct client_info_s *, char *key);
-unsigned long aim_sendauthresp(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *sn, char *bosip,
- char *cookie, char *email,
- int regstatus);
-int aim_gencookie(unsigned char *buf);
-int aim_sendserverready(struct aim_session_t *sess, struct aim_conn_t *conn);
-int aim_authkeyparse(struct aim_session_t *sess, struct command_rx_struct *command);
-unsigned long aim_sendredirect(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- unsigned short servid,
- char *ip,
- char *cookie);
-void aim_purge_rxqueue(struct aim_session_t *);
-void aim_rxqueue_cleanbyconn(struct aim_session_t *sess, struct aim_conn_t *conn);
+faim_export int aim_sendconnack(struct aim_session_t *sess, struct aim_conn_t *conn);
+faim_export int aim_request_login (struct aim_session_t *sess, struct aim_conn_t *conn, char *sn);
+faim_export int aim_send_login (struct aim_session_t *, struct aim_conn_t *, char *, char *, struct client_info_s *, char *key);
+faim_export unsigned long aim_sendauthresp(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn, char *bosip, char *cookie, char *email, int regstatus);
+faim_export int aim_gencookie(unsigned char *buf);
+faim_export int aim_sendserverready(struct aim_session_t *sess, struct aim_conn_t *conn);
+faim_internal int aim_authkeyparse(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_export unsigned long aim_sendredirect(struct aim_session_t *sess, struct aim_conn_t *conn, unsigned short servid, char *ip, char *cookie);
+faim_export void aim_purge_rxqueue(struct aim_session_t *);
+faim_internal void aim_rxqueue_cleanbyconn(struct aim_session_t *sess, struct aim_conn_t *conn);
int aim_parse_unknown(struct aim_session_t *, struct command_rx_struct *command, ...);
int aim_parse_missed_im(struct aim_session_t *, struct command_rx_struct *, ...);
int aim_parse_last_bad(struct aim_session_t *, struct command_rx_struct *, ...);
-int aim_get_command_rendezvous(struct aim_session_t *sess, struct aim_conn_t *conn);
+faim_internal int aim_get_command_rendezvous(struct aim_session_t *sess, struct aim_conn_t *conn);
-struct command_tx_struct *aim_tx_new(unsigned short framing, int chan, struct aim_conn_t *conn, int datalen);
-int aim_tx_enqueue__queuebased(struct aim_session_t *, struct command_tx_struct *);
-int aim_tx_enqueue__immediate(struct aim_session_t *, struct command_tx_struct *);
+faim_internal struct command_tx_struct *aim_tx_new(unsigned short framing, int chan, struct aim_conn_t *conn, int datalen);
+faim_internal int aim_tx_enqueue__queuebased(struct aim_session_t *, struct command_tx_struct *);
+faim_internal int aim_tx_enqueue__immediate(struct aim_session_t *, struct command_tx_struct *);
#define aim_tx_enqueue(x, y) ((*(x->tx_enqueue))(x, y))
-int aim_tx_sendframe(struct aim_session_t *sess, struct command_tx_struct *cur);
-u_int aim_get_next_txseqnum(struct aim_conn_t *);
-int aim_tx_flushqueue(struct aim_session_t *);
-int aim_tx_printqueue(struct aim_session_t *);
-void aim_tx_purgequeue(struct aim_session_t *);
+faim_internal int aim_tx_sendframe(struct aim_session_t *sess, struct command_tx_struct *cur);
+faim_internal unsigned int aim_get_next_txseqnum(struct aim_conn_t *);
+faim_export int aim_tx_flushqueue(struct aim_session_t *);
+faim_internal int aim_tx_printqueue(struct aim_session_t *);
+faim_export void aim_tx_purgequeue(struct aim_session_t *);
struct aim_rxcblist_t {
u_short family;
struct aim_rxcblist_t *next;
};
-int aim_conn_setlatency(struct aim_conn_t *conn, int newval);
+faim_export int aim_conn_setlatency(struct aim_conn_t *conn, int newval);
-int aim_conn_addhandler(struct aim_session_t *, struct aim_conn_t *conn, u_short family, u_short type, rxcallback_t newhandler, u_short flags);
-rxcallback_t aim_callhandler(struct aim_conn_t *conn, u_short family, u_short type);
-int aim_clearhandlers(struct aim_conn_t *conn);
+faim_export int aim_conn_addhandler(struct aim_session_t *, struct aim_conn_t *conn, u_short family, u_short type, rxcallback_t newhandler, u_short flags);
+faim_internal rxcallback_t aim_callhandler(struct aim_conn_t *conn, u_short family, u_short type);
+faim_export int aim_clearhandlers(struct aim_conn_t *conn);
/*
* Generic SNAC structure. Rarely if ever used.
int aim_putsnac(u_char *, int, int, int, u_long);
-void aim_connrst(struct aim_session_t *);
-struct aim_conn_t *aim_conn_getnext(struct aim_session_t *);
-void aim_conn_close(struct aim_conn_t *deadconn);
-struct aim_conn_t *aim_getconn_type(struct aim_session_t *, int type);
-struct aim_conn_t *aim_newconn(struct aim_session_t *, int type, char *dest);
-int aim_conngetmaxfd(struct aim_session_t *);
-struct aim_conn_t *aim_select(struct aim_session_t *, struct timeval *, int *);
-int aim_conn_isready(struct aim_conn_t *);
-int aim_conn_setstatus(struct aim_conn_t *, int);
-void aim_session_init(struct aim_session_t *);
+faim_internal void aim_connrst(struct aim_session_t *);
+faim_internal struct aim_conn_t *aim_conn_getnext(struct aim_session_t *);
+faim_export void aim_conn_close(struct aim_conn_t *deadconn);
+faim_internal struct aim_conn_t *aim_getconn_type(struct aim_session_t *, int type);
+faim_export struct aim_conn_t *aim_newconn(struct aim_session_t *, int type, char *dest);
+faim_export int aim_conngetmaxfd(struct aim_session_t *);
+faim_export struct aim_conn_t *aim_select(struct aim_session_t *, struct timeval *, int *);
+faim_export int aim_conn_isready(struct aim_conn_t *);
+faim_export int aim_conn_setstatus(struct aim_conn_t *, int);
+faim_export void aim_session_init(struct aim_session_t *);
/* aim_misc.c */
u_long aim_bos_setbuddylist(struct aim_session_t *, struct aim_conn_t *, char *);
u_long aim_bos_setprofile(struct aim_session_t *, struct aim_conn_t *, char *, char *, unsigned int);
u_long aim_bos_setgroupperm(struct aim_session_t *, struct aim_conn_t *, u_long);
-u_long aim_bos_clientready(struct aim_session_t *, struct aim_conn_t *);
+unsigned long aim_bos_clientready(struct aim_session_t *, struct aim_conn_t *);
u_long aim_bos_reqrate(struct aim_session_t *, struct aim_conn_t *);
u_long aim_bos_ackrateresp(struct aim_session_t *, struct aim_conn_t *);
u_long aim_bos_setprivacyflags(struct aim_session_t *, struct aim_conn_t *, u_long);
u_long aim_bos_reqpersonalinfo(struct aim_session_t *, struct aim_conn_t *);
u_long aim_bos_reqservice(struct aim_session_t *, struct aim_conn_t *, u_short);
-u_long aim_bos_reqrights(struct aim_session_t *, struct aim_conn_t *);
+unsigned long aim_bos_reqrights(struct aim_session_t *, struct aim_conn_t *);
u_long aim_bos_reqbuddyrights(struct aim_session_t *, struct aim_conn_t *);
u_long aim_bos_reqlocaterights(struct aim_session_t *, struct aim_conn_t *);
u_long aim_bos_reqicbmparaminfo(struct aim_session_t *, struct aim_conn_t *);
unsigned long aim_addicbmparam(struct aim_session_t *sess,struct aim_conn_t *conn);
u_long aim_setversions(struct aim_session_t *sess, struct aim_conn_t *conn);
-struct aim_fileheader_t *aim_getlisting(struct aim_session_t*);
-int aim_listenestablish(u_short);
+faim_internal struct aim_fileheader_t *aim_getlisting(struct aim_session_t*);
+faim_internal int aim_listenestablish(u_short);
/* aim_rxhandlers.c */
-int aim_rxdispatch(struct aim_session_t *);
-int aim_authparse(struct aim_session_t *, struct command_rx_struct *);
-int aim_handleredirect_middle(struct aim_session_t *, struct command_rx_struct *, ...);
-int aim_parse_unknown(struct aim_session_t *, struct command_rx_struct *, ...);
+faim_export int aim_rxdispatch(struct aim_session_t *);
+faim_internal int aim_authparse(struct aim_session_t *, struct command_rx_struct *);
+faim_internal int aim_handleredirect_middle(struct aim_session_t *, struct command_rx_struct *, ...);
+faim_internal int aim_parse_unknown(struct aim_session_t *, struct command_rx_struct *, ...);
int aim_parse_last_bad(struct aim_session_t *, struct command_rx_struct *, ...);
-int aim_parse_generalerrs(struct aim_session_t *, struct command_rx_struct *command, ...);
-int aim_parsemotd_middle(struct aim_session_t *sess, struct command_rx_struct *command, ...);
-int aim_parse_ratechange_middle(struct aim_session_t *sess, struct command_rx_struct *command);
-int aim_parse_evilnotify_middle(struct aim_session_t *sess, struct command_rx_struct *command);
-int aim_parse_msgack_middle(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_internal int aim_parse_generalerrs(struct aim_session_t *, struct command_rx_struct *command, ...);
+faim_internal int aim_parsemotd_middle(struct aim_session_t *sess, struct command_rx_struct *command, ...);
+faim_internal int aim_parse_ratechange_middle(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_internal int aim_parse_evilnotify_middle(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_internal int aim_parse_msgack_middle(struct aim_session_t *sess, struct command_rx_struct *command);
+
+faim_export unsigned long aim_ads_clientready(struct aim_session_t *sess, struct aim_conn_t *conn);
+faim_export unsigned long aim_ads_requestads(struct aim_session_t *sess, struct aim_conn_t *conn);
/* aim_im.c */
struct aim_directim_priv {
#define AIM_IMFLAGS_AWAY 0x01 /* mark as an autoreply */
#define AIM_IMFLAGS_ACK 0x02 /* request a receipt notice */
-u_long aim_send_im(struct aim_session_t *, struct aim_conn_t *, char *, u_int, char *);
-int aim_parse_incoming_im_middle(struct aim_session_t *, struct command_rx_struct *);
-int aim_parse_outgoing_im_middle(struct aim_session_t *, struct command_rx_struct *);
-u_long aim_seticbmparam(struct aim_session_t *, struct aim_conn_t *conn);
-int aim_parse_msgerror_middle(struct aim_session_t *, struct command_rx_struct *);
-int aim_negchan_middle(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_export unsigned long aim_send_im(struct aim_session_t *, struct aim_conn_t *, char *, u_int, char *);
+faim_internal int aim_parse_incoming_im_middle(struct aim_session_t *, struct command_rx_struct *);
+faim_internal int aim_parse_outgoing_im_middle(struct aim_session_t *, struct command_rx_struct *);
+faim_export unsigned long aim_seticbmparam(struct aim_session_t *, struct aim_conn_t *conn);
+faim_internal int aim_parse_msgerror_middle(struct aim_session_t *, struct command_rx_struct *);
+faim_internal int aim_negchan_middle(struct aim_session_t *sess, struct command_rx_struct *command);
int aim_parse_bosrights(struct aim_session_t *sess, struct command_rx_struct *command, ...);
-int aim_parse_missedcall(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_internal int aim_parse_missedcall(struct aim_session_t *sess, struct command_rx_struct *command);
-struct aim_conn_t * aim_directim_initiate(struct aim_session_t *, struct aim_conn_t *, struct aim_directim_priv *, char *);
-int aim_send_im_direct(struct aim_session_t *, struct aim_conn_t *, char *);
-struct aim_conn_t *aim_directim_connect(struct aim_session_t *, struct aim_conn_t *, struct aim_directim_priv *);
+faim_export struct aim_conn_t * aim_directim_initiate(struct aim_session_t *, struct aim_conn_t *, struct aim_directim_priv *, char *);
+faim_export int aim_send_im_direct(struct aim_session_t *, struct aim_conn_t *, char *);
+faim_export struct aim_conn_t *aim_directim_connect(struct aim_session_t *, struct aim_conn_t *, struct aim_directim_priv *);
/* aim_info.c */
#define AIM_CAPS_BUDDYICON 0x01
#define AIM_CAPS_SENDFILE 0x20
extern u_char aim_caps[6][16];
-u_short aim_getcap(unsigned char *capblock, int buflen);
-int aim_putcap(unsigned char *capblock, int buflen, u_short caps);
+faim_internal unsigned short aim_getcap(unsigned char *capblock, int buflen);
+faim_internal int aim_putcap(unsigned char *capblock, int buflen, u_short caps);
#define AIM_GETINFO_GENERALINFO 0x00001
#define AIM_GETINFO_AWAYMESSAGE 0x00003
#define AIM_COOKIETYPE_OFTIMAGE 0x14
#define AIM_COOKIETYPE_OFTICON 0x15
-int aim_cachecookie(struct aim_session_t *sess, struct aim_msgcookie_t *cookie);
-int aim_purgecookies(struct aim_session_t *sess, int maxage);
-struct aim_msgcookie_t *aim_uncachecookie(struct aim_session_t *sess, char *cookie, int type);
-struct aim_msgcookie_t *aim_mkcookie(unsigned char *, int, void *);
-struct aim_msgcookie_t *aim_checkcookie(struct aim_session_t *, char *, int);
-int aim_getcookietype(int);
+faim_internal int aim_cachecookie(struct aim_session_t *sess, struct aim_msgcookie_t *cookie);
+faim_export int aim_purgecookies(struct aim_session_t *sess, int maxage);
+faim_internal struct aim_msgcookie_t *aim_uncachecookie(struct aim_session_t *sess, unsigned char *cookie, int type);
+faim_internal struct aim_msgcookie_t *aim_mkcookie(unsigned char *, int, void *);
+faim_internal struct aim_msgcookie_t *aim_checkcookie(struct aim_session_t *, unsigned char *, int);
+faim_internal int aim_msgcookie_gettype(int reqclass);
-int aim_handlerendconnect(struct aim_session_t *sess, struct aim_conn_t *cur);
+faim_export int aim_handlerendconnect(struct aim_session_t *sess, struct aim_conn_t *cur);
#define AIM_TRANSFER_DENY_NOTSUPPORTED 0x0000
#define AIM_TRANSFER_DENY_DECLINE 0x0001
#define AIM_TRANSFER_DENY_NOTACCEPTING 0x0002
-u_long aim_denytransfer(struct aim_session_t *sess, struct aim_conn_t *conn, char *sender, char *cookie, unsigned short code);
-u_long aim_accepttransfer(struct aim_session_t *sess, struct aim_conn_t *conn,struct aim_conn_t *oftconn, char *sender, char *cookie, unsigned short rendid);
-
-u_long aim_getinfo(struct aim_session_t *, struct aim_conn_t *, const char *, unsigned short);
-int aim_extractuserinfo(u_char *, struct aim_userinfo_s *);
-int aim_parse_userinfo_middle(struct aim_session_t *, struct command_rx_struct *);
-int aim_parse_oncoming_middle(struct aim_session_t *, struct command_rx_struct *);
-int aim_parse_offgoing_middle(struct aim_session_t *, struct command_rx_struct *);
-int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s *info);
-int aim_sendbuddyoncoming(struct aim_session_t *sess, struct aim_conn_t *conn, struct aim_userinfo_s *info);
-int aim_sendbuddyoffgoing(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn);
-int aim_parse_locateerr(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_export unsigned long aim_denytransfer(struct aim_session_t *sess, struct aim_conn_t *conn, char *sender, char *cookie, unsigned short code);
+faim_export unsigned long aim_accepttransfer(struct aim_session_t *sess, struct aim_conn_t *conn,struct aim_conn_t *oftconn, char *sender, char *cookie, unsigned short rendid);
+
+faim_export unsigned long aim_getinfo(struct aim_session_t *, struct aim_conn_t *, const char *, unsigned short);
+faim_internal int aim_extractuserinfo(u_char *, struct aim_userinfo_s *);
+faim_internal int aim_parse_userinfo_middle(struct aim_session_t *, struct command_rx_struct *);
+faim_internal int aim_parse_oncoming_middle(struct aim_session_t *, struct command_rx_struct *);
+faim_internal int aim_parse_offgoing_middle(struct aim_session_t *, struct command_rx_struct *);
+faim_internal int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s *info);
+faim_export int aim_sendbuddyoncoming(struct aim_session_t *sess, struct aim_conn_t *conn, struct aim_userinfo_s *info);
+faim_export int aim_sendbuddyoffgoing(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn);
+faim_internal int aim_parse_locateerr(struct aim_session_t *sess, struct command_rx_struct *command);
/* aim_auth.c */
-int aim_auth_sendcookie(struct aim_session_t *, struct aim_conn_t *, u_char *);
-u_long aim_auth_clientready(struct aim_session_t *, struct aim_conn_t *);
-u_long aim_auth_changepasswd(struct aim_session_t *, struct aim_conn_t *, char *, char *);
+faim_export int aim_auth_sendcookie(struct aim_session_t *, struct aim_conn_t *, u_char *);
+faim_export u_long aim_auth_clientready(struct aim_session_t *, struct aim_conn_t *);
+faim_export unsigned long aim_auth_changepasswd(struct aim_session_t *, struct aim_conn_t *, char *, char *);
/* aim_buddylist.c */
-u_long aim_add_buddy(struct aim_session_t *, struct aim_conn_t *, char *);
-u_long aim_remove_buddy(struct aim_session_t *, struct aim_conn_t *, char *);
-int aim_parse_buddyrights(struct aim_session_t *sess, struct command_rx_struct *command, ...);
+faim_export unsigned long aim_add_buddy(struct aim_session_t *, struct aim_conn_t *, char *);
+faim_export unsigned long aim_remove_buddy(struct aim_session_t *, struct aim_conn_t *, char *);
+faim_internal int aim_parse_buddyrights(struct aim_session_t *sess, struct command_rx_struct *command, ...);
/* aim_search.c */
u_long aim_usersearch_address(struct aim_session_t *, struct aim_conn_t *, char *);
char *name;
u_short instance;
};
-int aim_chat_readroominfo(u_char *buf, struct aim_chat_roominfo *outinfo);
-int aim_chat_parse_infoupdate(struct aim_session_t *sess, struct command_rx_struct *command);
-int aim_chat_parse_joined(struct aim_session_t *sess, struct command_rx_struct *command);
-int aim_chat_parse_leave(struct aim_session_t *sess, struct command_rx_struct *command);
-int aim_chat_parse_incoming(struct aim_session_t *sess, struct command_rx_struct *command);
-u_long aim_chat_send_im(struct aim_session_t *sess, struct aim_conn_t *conn, char *msg);
-u_long aim_chat_join(struct aim_session_t *sess, struct aim_conn_t *conn, u_short exchange, const char *roomname);
-u_long aim_chat_clientready(struct aim_session_t *sess, struct aim_conn_t *conn);
-int aim_chat_attachname(struct aim_conn_t *conn, char *roomname);
-char *aim_chat_getname(struct aim_conn_t *conn);
-struct aim_conn_t *aim_chat_getconn(struct aim_session_t *, char *name);
-
-u_long aim_chatnav_reqrights(struct aim_session_t *sess, struct aim_conn_t *conn);
-u_long aim_chatnav_clientready(struct aim_session_t *sess, struct aim_conn_t *conn);
-
-u_long aim_chat_invite(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn, char *msg, u_short exchange, char *roomname, u_short instance);
+faim_internal int aim_chat_readroominfo(u_char *buf, struct aim_chat_roominfo *outinfo);
+faim_internal int aim_chat_parse_infoupdate(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_internal int aim_chat_parse_joined(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_internal int aim_chat_parse_leave(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_internal int aim_chat_parse_incoming(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_export unsigned long aim_chat_send_im(struct aim_session_t *sess, struct aim_conn_t *conn, char *msg);
+faim_export unsigned long aim_chat_join(struct aim_session_t *sess, struct aim_conn_t *conn, u_short exchange, const char *roomname);
+faim_export unsigned long aim_chat_clientready(struct aim_session_t *sess, struct aim_conn_t *conn);
+faim_export int aim_chat_attachname(struct aim_conn_t *conn, char *roomname);
+faim_export char *aim_chat_getname(struct aim_conn_t *conn);
+faim_export struct aim_conn_t *aim_chat_getconn(struct aim_session_t *, char *name);
+
+faim_export unsigned long aim_chatnav_reqrights(struct aim_session_t *sess, struct aim_conn_t *conn);
+faim_export unsigned long aim_chatnav_clientready(struct aim_session_t *sess, struct aim_conn_t *conn);
+
+faim_export unsigned long aim_chat_invite(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn, char *msg, u_short exchange, char *roomname, u_short instance);
struct aim_chat_exchangeinfo {
u_short number;
char *charset2;
char *lang2;
};
-int aim_chatnav_parse_info(struct aim_session_t *sess, struct command_rx_struct *command);
-u_long aim_chatnav_createroom(struct aim_session_t *sess, struct aim_conn_t *conn, char *name, u_short exchange);
-int aim_chat_leaveroom(struct aim_session_t *sess, char *name);
+faim_internal int aim_chatnav_parse_info(struct aim_session_t *sess, struct command_rx_struct *command);
+faim_export u_long aim_chatnav_createroom(struct aim_session_t *sess, struct aim_conn_t *conn, char *name, u_short exchange);
+faim_export int aim_chat_leaveroom(struct aim_session_t *sess, char *name);
/* aim_util.c */
#ifdef AIMUTIL_USEMACROS
u_long aimutil_get32(u_char *);
#endif
-int aimutil_putstr(u_char *, const u_char *, int);
-int aimutil_tokslen(char *toSearch, int index, char dl);
-int aimutil_itemcnt(char *toSearch, char dl);
-char *aimutil_itemidx(char *toSearch, int index, char dl);
+faim_export int aimutil_putstr(u_char *, const char *, int);
+faim_export int aimutil_tokslen(char *toSearch, int index, char dl);
+faim_export int aimutil_itemcnt(char *toSearch, char dl);
+faim_export char *aimutil_itemidx(char *toSearch, int index, char dl);
-int aim_snlen(const char *sn);
-int aim_sncmp(const char *sn1, const char *sn2);
+faim_export int aim_snlen(const char *sn);
+faim_export int aim_sncmp(const char *sn1, const char *sn2);
/* for libc's that dont have it */
-char *aim_strsep(char **pp, const char *delim);
+faim_export char *aim_strsep(char **pp, const char *delim);
/* aim_meta.c */
-char *aim_getbuilddate(void);
-char *aim_getbuildtime(void);
-char *aim_getbuildstring(void);
+faim_export char *aim_getbuilddate(void);
+faim_export char *aim_getbuildtime(void);
+faim_export char *aim_getbuildstring(void);
+faim_internal void faimdprintf(int dlevel, const char *format, ...);
#endif /* __AIM_H__ */
#include <faim/aim.h>
+#include <network.h>
+
int Read(int fd, unsigned char *buf, int len)
{
int i = 0;
* Common functions used in all apps
*/
+#include <netdb.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
int Read(int fd, unsigned char *buf, int len);
int establish(u_short portnum);
int get_connection(int s);
va_list ap;
int serviceid;
char *ip;
- char *cookie;
+ unsigned char *cookie;
va_start(ap, command);
serviceid = va_arg(ap, int);
ip = va_arg(ap, char *);
- cookie = va_arg(ap, char *);
+ cookie = va_arg(ap, unsigned char *);
switch(serviceid)
{
int faimtest_parse_login(struct aim_session_t *sess, struct command_rx_struct *command, ...)
{
struct client_info_s info = {"faimtest (with SNAC login)", 4, 1, 2010, "us", "en", 0x0004, 0x0000, 0x0000004b}; /* 4.1.2010 */
- unsigned char *key;
+ char *key;
va_list ap;
va_start(ap, command);
printf("faimtest: ratechange: %lu\n", newrate);
return (1);
-};
+}
int faimtest_parse_evilnotify(struct aim_session_t *sess, struct command_rx_struct *command, ...)
{
printf("faimtest: warning from: %s\n", sn);
return 1;
-};
+}