📄 aim.h
字号:
fu16_t charset; fu16_t charsubset;};/* * This information is provided in the Incoming ICBM callback for * Channel 1 ICBM's. * * Note that although CUSTOMFEATURES and CUSTOMCHARSET say they * are optional, both are always set by the current libfaim code. * That may or may not change in the future. It is mainly for * consistency with aim_sendimext_args. * * Multipart messages require some explanation. If you want to use them, * I suggest you read all the comments in im.c. * */struct aim_incomingim_ch1_args { /* Always provided */ aim_mpmsg_t mpmsg; fu32_t icbmflags; /* some flags apply only to ->msg, not all mpmsg */ /* Only provided if message has a human-readable section */ char *msg; int msglen; /* Only provided if AIM_IMFLAGS_HASICON is set */ time_t iconstamp; fu32_t iconlen; fu16_t iconsum; /* Only provided if AIM_IMFLAGS_CUSTOMFEATURES is set */ fu8_t *features; fu8_t featureslen; /* Only provided if AIM_IMFLAGS_EXTDATA is set */ fu8_t extdatalen; fu8_t *extdata; /* Only used if AIM_IMFLAGS_CUSTOMCHARSET is set */ fu16_t charset; fu16_t charsubset;};struct aim_incomingim_ch2_args { fu8_t cookie[8]; fu16_t reqclass; fu16_t status; union { struct { fu32_t checksum; fu32_t length; time_t timestamp; fu8_t *icon; } icon; struct { fu8_t junk; } voice; struct { fu8_t ip[22]; /* xxx.xxx.xxx.xxx:xxxxx\0 */ } imimage; struct { char *msg; char *encoding; char *lang; struct aim_chat_roominfo roominfo; } chat; struct { char *ip; unsigned char *cookie; } getfile; struct { fu8_t junk; } sendfile; } info;};faim_export int aim_send_im_ext(aim_session_t *sess, struct aim_sendimext_args *args);faim_export int aim_send_im(aim_session_t *, const char *destsn, unsigned short flags, const char *msg);faim_export int aim_send_icon(aim_session_t *sess, const char *sn, const fu8_t *icon, int iconlen, time_t stamp, fu16_t iconsum);faim_export fu16_t aim_iconsum(const fu8_t *buf, int buflen);faim_export int aim_send_im_direct(aim_session_t *, aim_conn_t *, const char *msg);faim_export const char *aim_directim_getsn(aim_conn_t *conn);faim_export aim_conn_t *aim_directim_initiate(aim_session_t *, const char *destsn);faim_export aim_conn_t *aim_directim_connect(aim_session_t *, const char *sn, const char *addr, const fu8_t *cookie);faim_export aim_conn_t *aim_sendfile_initiate(aim_session_t *, const char *destsn, const char *filename, fu16_t numfiles, fu32_t totsize);faim_export aim_conn_t *aim_getfile_initiate(aim_session_t *sess, aim_conn_t *conn, const char *destsn);faim_export int aim_oft_getfile_request(aim_session_t *sess, aim_conn_t *conn, const char *name, int size);faim_export int aim_oft_getfile_ack(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_oft_getfile_end(aim_session_t *sess, aim_conn_t *conn);/* aim_info.c */#define AIM_CAPS_BUDDYICON 0x0001#define AIM_CAPS_VOICE 0x0002#define AIM_CAPS_IMIMAGE 0x0004#define AIM_CAPS_CHAT 0x0008#define AIM_CAPS_GETFILE 0x0010#define AIM_CAPS_SENDFILE 0x0020#define AIM_CAPS_GAMES 0x0040#define AIM_CAPS_SAVESTOCKS 0x0080#define AIM_CAPS_SENDBUDDYLIST 0x0100#define AIM_CAPS_GAMES2 0x0200#define AIM_CAPS_ICQ 0x0400#define AIM_CAPS_ABINTERNAL 0x0800#define AIM_CAPS_LAST 0x8000faim_export int aim_0002_000b(aim_session_t *sess, aim_conn_t *conn, const char *sn);#define AIM_SENDMEMBLOCK_FLAG_ISREQUEST 0#define AIM_SENDMEMBLOCK_FLAG_ISHASH 1faim_export int aim_sendmemblock(aim_session_t *sess, aim_conn_t *conn, unsigned long offset, unsigned long len, const unsigned char *buf, unsigned char flag);#define AIM_GETINFO_GENERALINFO 0x00001#define AIM_GETINFO_AWAYMESSAGE 0x00003struct aim_invite_priv { char *sn; char *roomname; fu16_t exchange; fu16_t instance;};#define AIM_COOKIETYPE_UNKNOWN 0x00#define AIM_COOKIETYPE_ICBM 0x01#define AIM_COOKIETYPE_ADS 0x02#define AIM_COOKIETYPE_BOS 0x03#define AIM_COOKIETYPE_IM 0x04#define AIM_COOKIETYPE_CHAT 0x05#define AIM_COOKIETYPE_CHATNAV 0x06#define AIM_COOKIETYPE_INVITE 0x07/* we'll move OFT up a bit to give breathing room. not like it really * matters. */#define AIM_COOKIETYPE_OFTIM 0x10#define AIM_COOKIETYPE_OFTGET 0x11#define AIM_COOKIETYPE_OFTSEND 0x12#define AIM_COOKIETYPE_OFTVOICE 0x13#define AIM_COOKIETYPE_OFTIMAGE 0x14#define AIM_COOKIETYPE_OFTICON 0x15faim_export int aim_handlerendconnect(aim_session_t *sess, aim_conn_t *cur);#define AIM_TRANSFER_DENY_NOTSUPPORTED 0x0000#define AIM_TRANSFER_DENY_DECLINE 0x0001#define AIM_TRANSFER_DENY_NOTACCEPTING 0x0002faim_export int aim_denytransfer(aim_session_t *sess, const char *sender, const char *cookie, unsigned short code);faim_export aim_conn_t *aim_accepttransfer(aim_session_t *sess, aim_conn_t *conn, const char *sn, const fu8_t *cookie, const fu8_t *ip, fu16_t listingfiles, fu16_t listingtotsize, fu16_t listingsize, fu32_t listingchecksum, fu16_t rendid);faim_export int aim_getinfo(aim_session_t *, aim_conn_t *, const char *, unsigned short);faim_export int aim_sendbuddyoncoming(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *info);faim_export int aim_sendbuddyoffgoing(aim_session_t *sess, aim_conn_t *conn, const char *sn);#define AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED 0x00000001#define AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED 0x00000002/* This is what the server will give you if you don't set them yourself. */#define AIM_IMPARAM_DEFAULTS { \ 0, \ AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED, \ 512, /* !! Note how small this is. */ \ (99.9)*10, (99.9)*10, \ 1000 /* !! And how large this is. */ \}/* This is what most AIM versions use. */#define AIM_IMPARAM_REASONABLE { \ 0, \ AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED, \ 8000, \ (99.9)*10, (99.9)*10, \ 0 \}struct aim_icbmparameters { unsigned short maxchan; unsigned long flags; /* AIM_IMPARAM_FLAG_ */ unsigned short maxmsglen; /* message size that you will accept */ unsigned short maxsenderwarn; /* this and below are *10 (999=99.9%) */ unsigned short maxrecverwarn; unsigned long minmsginterval; /* in milliseconds? */};faim_export int aim_reqicbmparams(aim_session_t *sess);faim_export int aim_seticbmparam(aim_session_t *sess, struct aim_icbmparameters *params);/* auth.c */faim_export int aim_sendcookie(aim_session_t *, aim_conn_t *, const fu8_t *);faim_export int aim_admin_changepasswd(aim_session_t *, aim_conn_t *, const char *newpw, const char *curpw);faim_export int aim_admin_reqconfirm(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_admin_getinfo(aim_session_t *sess, aim_conn_t *conn, fu16_t info);faim_export int aim_admin_setemail(aim_session_t *sess, aim_conn_t *conn, const char *newemail);/* aim_buddylist.c */faim_export int aim_add_buddy(aim_session_t *, aim_conn_t *, const char *);faim_export int aim_remove_buddy(aim_session_t *, aim_conn_t *, const char *);/* aim_search.c */faim_export int aim_usersearch_address(aim_session_t *, aim_conn_t *, const char *);/* These apply to exchanges as well. */#define AIM_CHATROOM_FLAG_EVILABLE 0x0001#define AIM_CHATROOM_FLAG_NAV_ONLY 0x0002#define AIM_CHATROOM_FLAG_INSTANCING_ALLOWED 0x0004#define AIM_CHATROOM_FLAG_OCCUPANT_PEEK_ALLOWED 0x0008struct aim_chat_exchangeinfo { fu16_t number; fu16_t flags; char *name; char *charset1; char *lang1; char *charset2; char *lang2;};#define AIM_CHATFLAGS_NOREFLECT 0x0001#define AIM_CHATFLAGS_AWAY 0x0002faim_export int aim_chat_send_im(aim_session_t *sess, aim_conn_t *conn, fu16_t flags, const char *msg, int msglen);faim_export int aim_chat_join(aim_session_t *sess, aim_conn_t *conn, fu16_t exchange, const char *roomname, fu16_t instance);faim_export int aim_chat_attachname(aim_conn_t *conn, fu16_t exchange, const char *roomname, fu16_t instance);faim_export char *aim_chat_getname(aim_conn_t *conn);faim_export aim_conn_t *aim_chat_getconn(aim_session_t *, const char *name);faim_export int aim_chatnav_reqrights(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_chat_invite(aim_session_t *sess, aim_conn_t *conn, const char *sn, const char *msg, fu16_t exchange, const char *roomname, fu16_t instance);faim_export int aim_chatnav_createroom(aim_session_t *sess, aim_conn_t *conn, const char *name, fu16_t exchange);faim_export int aim_chat_leaveroom(aim_session_t *sess, const char *name);#define AIM_SSI_TYPE_BUDDY 0x0000#define AIM_SSI_TYPE_GROUP 0x0001#define AIM_SSI_TYPE_PERMITLIST 0x0002#define AIM_SSI_TYPE_DENYLIST 0x0003#define AIM_SSI_TYPE_PDINFO 0x0004#define AIM_SSI_TYPE_PRESENCEPREFS 0x0005struct aim_ssi_item { char *name; fu16_t gid; fu16_t bid; fu16_t type; void *data; struct aim_ssi_item *next;};faim_export int aim_ssi_reqrights(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_ssi_reqdata(aim_session_t *sess, aim_conn_t *conn, time_t localstamp, fu16_t localrev);faim_export int aim_ssi_enable(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_ssi_modbegin(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_ssi_modend(aim_session_t *sess, aim_conn_t *conn);struct aim_icq_offlinemsg { fu32_t sender; fu16_t year; fu8_t month, day, hour, minute; fu16_t type; char *msg;};struct aim_icq_simpleinfo { fu32_t uin; char *nick; char *first; char *last; char *email;};struct aim_icq_smsresponse { fu16_t type; char *tag; char *xml;};faim_export int aim_icq_reqofflinemsgs(aim_session_t *sess);faim_export int aim_icq_ackofflinemsgs(aim_session_t *sess);faim_export int aim_icq_getsimpleinfo(aim_session_t *sess, const char *uin);/* aim_util.c *//* * These are really ugly. You'd think this was LISP. I wish it was. * * XXX With the advent of bstream's, these should be removed to enforce * their use. * */#define aimutil_put8(buf, data) ((*(buf) = (u_char)(data)&0xff),1)#define aimutil_get8(buf) ((*(buf))&0xff)#define aimutil_put16(buf, data) ( \ (*(buf) = (u_char)((data)>>8)&0xff), \ (*((buf)+1) = (u_char)(data)&0xff), \ 2)#define aimutil_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff))#define aimutil_put32(buf, data) ( \ (*((buf)) = (u_char)((data)>>24)&0xff), \ (*((buf)+1) = (u_char)((data)>>16)&0xff), \ (*((buf)+2) = (u_char)((data)>>8)&0xff), \ (*((buf)+3) = (u_char)(data)&0xff), \ 4)#define aimutil_get32(buf) ((((*(buf))<<24)&0xff000000) + \ (((*((buf)+1))<<16)&0x00ff0000) + \ (((*((buf)+2))<< 8)&0x0000ff00) + \ (((*((buf)+3) )&0x000000ff)))/* Little-endian versions (damn ICQ) */#define aimutil_putle8(buf, data) ( \ (*(buf) = (unsigned char)(data) & 0xff), \ 1)#define aimutil_getle8(buf) ( \ (*(buf)) & 0xff \ )#define aimutil_putle16(buf, data) ( \ (*((buf)+0) = (unsigned char)((data) >> 0) & 0xff), \ (*((buf)+1) = (unsigned char)((data) >> 8) & 0xff), \ 2)#define aimutil_getle16(buf) ( \ (((*((buf)+0)) << 0) & 0x00ff) + \ (((*((buf)+1)) << 8) & 0xff00) \ )#define aimutil_putle32(buf, data) ( \ (*((buf)+0) = (unsigned char)((data) >> 0) & 0xff), \ (*((buf)+1) = (unsigned char)((data) >> 8) & 0xff), \ (*((buf)+2) = (unsigned char)((data) >> 16) & 0xff), \ (*((buf)+3) = (unsigned char)((data) >> 24) & 0xff), \ 4)#define aimutil_getle32(buf) ( \ (((*((buf)+0)) << 0) & 0x000000ff) + \ (((*((buf)+1)) << 8) & 0x0000ff00) + \ (((*((buf)+2)) << 16) & 0x00ff0000) + \ (((*((buf)+3)) << 24) & 0xff000000))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);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 */faim_export char *aim_strsep(char **pp, const char *delim);/* aim_meta.c */faim_export char *aim_getbuilddate(void);faim_export char *aim_getbuildtime(void);faim_export int aim_getbuildstring(char *buf, int buflen);#include <aim_internal.h>#endif /* __AIM_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -