From 9bf14d4477f1da6c2a5545c8e4363f198d17e888 Mon Sep 17 00:00:00 2001 From: mid Date: Wed, 14 Mar 2001 20:40:42 +0000 Subject: [PATCH] - Wed Mar 14 20:21:49 UTC 2001 - Clean up declarations of TLV functions (ie, const) - Add -o and -O to faimtest (I didn't use your patch, josh) --- CHANGES | 4 +++ include/aim.h | 38 ++++++++++----------- src/tlv.c | 69 +++++++++++++++++++-------------------- utils/faimtest/faimtest.c | 33 ++++++++++++++----- 4 files changed, 82 insertions(+), 62 deletions(-) diff --git a/CHANGES b/CHANGES index c33b1f9..353c5d1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ No release numbers ------------------ + - Wed Mar 14 20:21:49 UTC 2001 + - Clean up declarations of TLV functions (ie, const) + - Add -o and -O to faimtest (I didn't use your patch, josh) + - Wed Mar 14 03:11:03 UTC 2001 - Err...I'll commit before I go home. More faimtest crap. diff --git a/include/aim.h b/include/aim.h index 263b2a6..3cf4f13 100644 --- a/include/aim.h +++ b/include/aim.h @@ -397,28 +397,28 @@ struct aim_tlvlist_t { }; /* TLV-handling functions */ -faim_internal struct aim_tlvlist_t *aim_readtlvchain(u_char *buf, int maxlen); +faim_internal struct aim_tlvlist_t *aim_readtlvchain(const unsigned char *buf, const 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 unsigned char aim_gettlv8(struct aim_tlvlist_t *list, unsigned short type, int num); -faim_internal unsigned short aim_gettlv16(struct aim_tlvlist_t *list, unsigned short type, int num); -faim_internal unsigned long aim_gettlv32(struct aim_tlvlist_t *list, unsigned short type, int num); -faim_internal int aim_puttlv (u_char *dest, struct aim_tlv_t *newtlv); +faim_internal struct aim_tlv_t *aim_grabtlv(const unsigned char *src); +faim_internal struct aim_tlv_t *aim_grabtlvstr(const unsigned char *src); +faim_internal struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *, const unsigned short, const int); +faim_internal char *aim_gettlv_str(struct aim_tlvlist_t *, const unsigned short, const int); +faim_internal unsigned char aim_gettlv8(struct aim_tlvlist_t *list, const unsigned short type, const int num); +faim_internal unsigned short aim_gettlv16(struct aim_tlvlist_t *list, const unsigned short type, const int num); +faim_internal unsigned long aim_gettlv32(struct aim_tlvlist_t *list, const unsigned short type, const int num); +faim_internal int aim_puttlv (unsigned 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_8(unsigned char *buf, unsigned short t, unsigned char v); -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, int 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_addtlvtochain_caps(struct aim_tlvlist_t **list, unsigned short type, unsigned short caps); -faim_internal int aim_addtlvtochain_noval(struct aim_tlvlist_t **list, unsigned short type); +faim_internal int aim_puttlv_8(unsigned char *buf, const unsigned short t, const unsigned char v); +faim_internal int aim_puttlv_16(unsigned char *, const unsigned short, const unsigned short); +faim_internal int aim_puttlv_32(unsigned char *, const unsigned short, const unsigned long); +faim_internal int aim_puttlv_str(u_char *buf, const unsigned short t, const int l, const char *v); +faim_internal int aim_writetlvchain(unsigned char *buf, const int buflen, struct aim_tlvlist_t **list); +faim_internal int aim_addtlvtochain16(struct aim_tlvlist_t **list, const unsigned short type, const unsigned short val); +faim_internal int aim_addtlvtochain32(struct aim_tlvlist_t **list, const unsigned short type, const unsigned long val); +faim_internal int aim_addtlvtochain_str(struct aim_tlvlist_t **list, const unsigned short type, const char *str, const int len); +faim_internal int aim_addtlvtochain_caps(struct aim_tlvlist_t **list, const unsigned short type, const unsigned short caps); +faim_internal int aim_addtlvtochain_noval(struct aim_tlvlist_t **list, const unsigned short type); faim_internal int aim_counttlvchain(struct aim_tlvlist_t **list); #endif /* FAIM_INTERNAL */ diff --git a/src/tlv.c b/src/tlv.c index 3119a2d..5d7deee 100644 --- a/src/tlv.c +++ b/src/tlv.c @@ -13,14 +13,13 @@ * be called to free the dynamic substructures. * */ -faim_export struct aim_tlvlist_t *aim_readtlvchain(u_char *buf, int maxlen) +faim_export struct aim_tlvlist_t *aim_readtlvchain(const unsigned char *buf, const int maxlen) { int pos; struct aim_tlvlist_t *list; struct aim_tlvlist_t *cur; - u_short type; - u_short length; + unsigned short type, length; if (!buf) return NULL; @@ -156,7 +155,7 @@ faim_export int aim_sizetlvchain(struct aim_tlvlist_t **list) * to the TLV chain. * */ -faim_export int aim_addtlvtochain_str(struct aim_tlvlist_t **list, unsigned short type, char *str, int len) +faim_export int aim_addtlvtochain_str(struct aim_tlvlist_t **list, const unsigned short type, const char *str, const int len) { struct aim_tlvlist_t *newtlv; struct aim_tlvlist_t *cur; @@ -196,7 +195,7 @@ faim_export int aim_addtlvtochain_str(struct aim_tlvlist_t **list, unsigned shor * Adds a two-byte unsigned integer to a TLV chain. * */ -faim_export int aim_addtlvtochain16(struct aim_tlvlist_t **list, unsigned short type, unsigned short val) +faim_export int aim_addtlvtochain16(struct aim_tlvlist_t **list, const unsigned short type, const unsigned short val) { struct aim_tlvlist_t *newtl; struct aim_tlvlist_t *cur; @@ -236,7 +235,7 @@ faim_export int aim_addtlvtochain16(struct aim_tlvlist_t **list, unsigned short * Adds a four-byte unsigned integer to a TLV chain. * */ -faim_export int aim_addtlvtochain32(struct aim_tlvlist_t **list, unsigned short type, unsigned long val) +faim_export int aim_addtlvtochain32(struct aim_tlvlist_t **list, const unsigned short type, const unsigned long val) { struct aim_tlvlist_t *newtl; struct aim_tlvlist_t *cur; @@ -289,7 +288,7 @@ faim_export int aim_addtlvtochain32(struct aim_tlvlist_t **list, unsigned short * %AIM_CAPS_SENDFILE Supports Send File functions * */ -faim_export int aim_addtlvtochain_caps(struct aim_tlvlist_t **list, unsigned short type, unsigned short caps) +faim_export int aim_addtlvtochain_caps(struct aim_tlvlist_t **list, const unsigned short type, const unsigned short caps) { unsigned char buf[128]; /* icky fixed length buffer */ struct aim_tlvlist_t *newtl; @@ -330,7 +329,7 @@ faim_export int aim_addtlvtochain_caps(struct aim_tlvlist_t **list, unsigned sho * Adds a TLV with a zero length to a TLV chain. * */ -faim_internal int aim_addtlvtochain_noval(struct aim_tlvlist_t **list, unsigned short type) +faim_internal int aim_addtlvtochain_noval(struct aim_tlvlist_t **list, const unsigned short type) { struct aim_tlvlist_t *newtlv; struct aim_tlvlist_t *cur; @@ -369,7 +368,7 @@ faim_internal int aim_addtlvtochain_noval(struct aim_tlvlist_t **list, unsigned * by the chain structures. * */ -faim_export int aim_writetlvchain(u_char *buf, int buflen, struct aim_tlvlist_t **list) +faim_export int aim_writetlvchain(unsigned char *buf, int buflen, struct aim_tlvlist_t **list) { int goodbuflen = 0; int i = 0; @@ -411,7 +410,7 @@ faim_export int aim_writetlvchain(u_char *buf, int buflen, struct aim_tlvlist_t * in a chain. * */ -faim_export struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *list, u_short type, int nth) +faim_export struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *list, const unsigned short type, const int nth) { int i; struct aim_tlvlist_t *cur; @@ -441,7 +440,7 @@ faim_export struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *list, u_short typ * dynamic buffer and must be freed by the caller. * */ -faim_export char *aim_gettlv_str(struct aim_tlvlist_t *list, u_short type, int nth) +faim_export char *aim_gettlv_str(struct aim_tlvlist_t *list, const unsigned short type, const int nth) { struct aim_tlv_t *tlv; char *newstr; @@ -466,7 +465,7 @@ faim_export char *aim_gettlv_str(struct aim_tlvlist_t *list, u_short type, int n * 8bit integer instead of an aim_tlv_t. * */ -faim_internal unsigned char aim_gettlv8(struct aim_tlvlist_t *list, unsigned short type, int num) +faim_internal unsigned char aim_gettlv8(struct aim_tlvlist_t *list, const unsigned short type, const int num) { struct aim_tlv_t *tlv; @@ -485,7 +484,7 @@ faim_internal unsigned char aim_gettlv8(struct aim_tlvlist_t *list, unsigned sho * 16bit integer instead of an aim_tlv_t. * */ -faim_internal unsigned short aim_gettlv16(struct aim_tlvlist_t *list, unsigned short type, int num) +faim_internal unsigned short aim_gettlv16(struct aim_tlvlist_t *list, const unsigned short type, const int num) { struct aim_tlv_t *tlv; @@ -504,7 +503,7 @@ faim_internal unsigned short aim_gettlv16(struct aim_tlvlist_t *list, unsigned s * 32bit integer instead of an aim_tlv_t. * */ -faim_internal unsigned long aim_gettlv32(struct aim_tlvlist_t *list, unsigned short type, int num) +faim_internal unsigned long aim_gettlv32(struct aim_tlvlist_t *list, const unsigned short type, const int num) { struct aim_tlv_t *tlv; @@ -525,7 +524,7 @@ faim_internal unsigned long aim_gettlv32(struct aim_tlvlist_t *list, unsigned sh * must be freed by the caller if non-%NULL. * */ -faim_export struct aim_tlv_t *aim_grabtlv(u_char *src) +faim_export struct aim_tlv_t *aim_grabtlv(const unsigned char *src) { struct aim_tlv_t *dest = NULL; @@ -537,10 +536,10 @@ faim_export struct aim_tlv_t *aim_grabtlv(u_char *src) dest->length = src[2] << 8; dest->length += src[3]; - dest->value = (u_char *) malloc(dest->length*sizeof(u_char)); - memset(dest->value, 0, dest->length*sizeof(u_char)); + dest->value = (unsigned char *) malloc(dest->length); + memset(dest->value, 0, dest->length); - memcpy(dest->value, &(src[4]), dest->length*sizeof(u_char)); + memcpy(dest->value, &(src[4]), dest->length); return dest; } @@ -558,7 +557,7 @@ faim_export struct aim_tlv_t *aim_grabtlv(u_char *src) * must be freed by the caller if non-%NULL. * */ -faim_export struct aim_tlv_t *aim_grabtlvstr(u_char *src) +faim_export struct aim_tlv_t *aim_grabtlvstr(const unsigned char *src) { struct aim_tlv_t *dest = NULL; @@ -570,10 +569,10 @@ faim_export struct aim_tlv_t *aim_grabtlvstr(u_char *src) dest->length = src[2] << 8; dest->length += src[3]; - dest->value = (u_char *) malloc((dest->length+1)*sizeof(u_char)); - memset(dest->value, 0, (dest->length+1)*sizeof(u_char)); + dest->value = (unsigned char *) malloc(dest->length+1); + memset(dest->value, 0, dest->length+1); - memcpy(dest->value, &(src[4]), dest->length*sizeof(u_char)); + memcpy(dest->value, src+4, dest->length); dest->value[dest->length] = '\0'; return dest; @@ -591,7 +590,7 @@ faim_export struct aim_tlv_t *aim_grabtlvstr(u_char *src) * still be called by the caller to free the structure. * */ -faim_export int aim_puttlv(u_char *dest, struct aim_tlv_t *newtlv) +faim_export int aim_puttlv(unsigned char *dest, struct aim_tlv_t *newtlv) { int i=0; @@ -651,7 +650,7 @@ faim_export int aim_freetlv(struct aim_tlv_t **oldtlv) * Writes a TLV with a one-byte integer value portion. * */ -faim_export int aim_puttlv_8(unsigned char *buf, unsigned short t, unsigned char v) +faim_export int aim_puttlv_8(unsigned char *buf, const unsigned short t, const unsigned char v) { int curbyte=0; @@ -671,12 +670,12 @@ faim_export int aim_puttlv_8(unsigned char *buf, unsigned short t, unsigned char * Writes a TLV with a two-byte integer value portion. * */ -faim_export int aim_puttlv_16(u_char *buf, u_short t, u_short v) +faim_export int aim_puttlv_16(unsigned char *buf, const unsigned short t, const unsigned short v) { int curbyte=0; - curbyte += aimutil_put16(buf+curbyte, (u_short)(t&0xffff)); - curbyte += aimutil_put16(buf+curbyte, (u_short)0x0002); - curbyte += aimutil_put16(buf+curbyte, (u_short)(v&0xffff)); + curbyte += aimutil_put16(buf+curbyte, (unsigned short)(t&0xffff)); + curbyte += aimutil_put16(buf+curbyte, (unsigned short)0x0002); + curbyte += aimutil_put16(buf+curbyte, (unsigned short)(v&0xffff)); return curbyte; } @@ -689,12 +688,12 @@ faim_export int aim_puttlv_16(u_char *buf, u_short t, u_short v) * Writes a TLV with a four-byte integer value portion. * */ -faim_export int aim_puttlv_32(u_char *buf, u_short t, u_long v) +faim_export int aim_puttlv_32(unsigned char *buf, const unsigned short t, const unsigned long v) { int curbyte=0; - curbyte += aimutil_put16(buf+curbyte, (u_short)(t&0xffff)); - curbyte += aimutil_put16(buf+curbyte, (u_short)0x0004); - curbyte += aimutil_put32(buf+curbyte, (u_long)(v&0xffffffff)); + curbyte += aimutil_put16(buf+curbyte, (unsigned short)(t&0xffff)); + curbyte += aimutil_put16(buf+curbyte, (unsigned short)0x0004); + curbyte += aimutil_put32(buf+curbyte, (unsigned long)(v&0xffffffff)); return curbyte; } @@ -710,13 +709,13 @@ faim_export int aim_puttlv_32(u_char *buf, u_short t, u_long v) * include the terminating NULL.) * */ -faim_export int aim_puttlv_str(u_char *buf, u_short t, int l, char *v) +faim_export int aim_puttlv_str(unsigned char *buf, const unsigned short t, const int l, const char *v) { int curbyte; curbyte = 0; - curbyte += aimutil_put16(buf+curbyte, (u_short)(t&0xffff)); - curbyte += aimutil_put16(buf+curbyte, (u_short)(l&0xffff)); + curbyte += aimutil_put16(buf+curbyte, (unsigned short)(t&0xffff)); + curbyte += aimutil_put16(buf+curbyte, (unsigned short)(l&0xffff)); if (v) memcpy(buf+curbyte, (unsigned char *)v, l); curbyte += l; diff --git a/utils/faimtest/faimtest.c b/utils/faimtest/faimtest.c index e10d494..b43cb23 100644 --- a/utils/faimtest/faimtest.c +++ b/utils/faimtest/faimtest.c @@ -313,6 +313,7 @@ int main(int argc, char **argv) struct aim_conn_t *waitingconn = NULL; int i; int selstat = 0; + static int faimtest_mode = 0; screenname = getenv("SCREENNAME"); password = getenv("PASSWORD"); @@ -323,7 +324,7 @@ int main(int argc, char **argv) listingpath = getenv("LISTINGPATH"); - while ((i = getopt(argc, argv, "u:p:a:U:P:A:l:c:h")) != EOF) { + while ((i = getopt(argc, argv, "u:p:a:U:P:A:l:c:hoO")) != EOF) { switch (i) { case 'u': screenname = optarg; break; case 'p': password = optarg; break; @@ -333,6 +334,8 @@ int main(int argc, char **argv) case 'A': proxy = optarg; break; case 'l': listingpath = optarg; break; case 'c': ohcaptainmycaptain = optarg; break; + case 'o': faimtest_mode = 1; break; /* half old interface */ + case 'O': faimtest_mode = 2; break; /* full old interface */ case 'h': default: printf("faimtest\n"); @@ -345,6 +348,8 @@ int main(int argc, char **argv) printf(" -A host:port Proxy host ($SOCKSPASS)\n"); printf(" -l path Path to listing file ($LISTINGPATH)\n"); printf(" -c name Screen name of owner\n"); + printf(" -o Login at startup, then prompt\n"); + printf(" -O Login, never give prompt\n"); exit(0); } } @@ -368,8 +373,7 @@ int main(int argc, char **argv) } sprintf(listingname, "%s/listing.txt", listingpath); if( (listingfile = fopen(listingname, "r")) == NULL) { - dvprintf("Couldn't open %s... bombing.\n", listingname); - exit(-1); + dvprintf("Couldn't open %s... disabling that shit.\n", listingname); } free(listingname); @@ -377,7 +381,16 @@ int main(int argc, char **argv) faimtest_init(); - cmd_init(); + if (faimtest_mode < 2) + cmd_init(); + + if (faimtest_mode >= 1) { + if (login(screenname, password) == -1) { + if (faimtest_mode < 2) + cmd_uninit(); + exit(-1); + } + } while (keepgoing) { waitingconn = aim_select(&aimsess, NULL, &selstat); @@ -389,7 +402,7 @@ int main(int argc, char **argv) } else if (selstat == 1) { /* outgoing data pending */ aim_tx_flushqueue(&aimsess); } else if (selstat == 2) { /* incoming data pending */ - if (waitingconn->fd == STDIN_FILENO) { + if ((faimtest_mode < 2) && (waitingconn->fd == STDIN_FILENO)) { cmd_gotkey(); } else { if (waitingconn->type == AIM_CONN_TYPE_RENDEZVOUS_OUT) { @@ -410,6 +423,8 @@ int main(int argc, char **argv) aim_conn_kill(&aimsess, &waitingconn); if (!aim_getconn_type(&aimsess, AIM_CONN_TYPE_BOS)) { dprintf("major connection error\n"); + if (faimtest_mode == 2) + break; } } } @@ -420,8 +435,10 @@ int main(int argc, char **argv) /* close up all connections, dead or no */ aim_logoff(&aimsess); - printf("\n"); - cmd_uninit(); + if (faimtest_mode < 2) { + printf("\n"); + cmd_uninit(); + } /* Get out */ exit(0); @@ -793,7 +810,7 @@ int faimtest_parse_authresp(struct aim_session_t *sess, struct command_rx_struct if (errorcode || !bosip || !cookie) { dvprintf("Login Error Code 0x%04x\n", errorcode); dvprintf("Error URL: %s\n", errurl); - aim_conn_kill(sess, &command->conn); + aim_conn_kill(sess, &command->conn); return 1; } -- 2.45.1