diff options
Diffstat (limited to 'protocols/yahoo')
-rw-r--r-- | protocols/yahoo/libyahoo2.c | 2195 | ||||
-rw-r--r-- | protocols/yahoo/yahoo.c | 943 | ||||
-rw-r--r-- | protocols/yahoo/yahoo2.h | 178 | ||||
-rw-r--r-- | protocols/yahoo/yahoo2_callbacks.h | 641 | ||||
-rw-r--r-- | protocols/yahoo/yahoo2_types.h | 642 | ||||
-rw-r--r-- | protocols/yahoo/yahoo_debug.h | 22 | ||||
-rw-r--r-- | protocols/yahoo/yahoo_httplib.c | 183 | ||||
-rw-r--r-- | protocols/yahoo/yahoo_httplib.h | 24 | ||||
-rw-r--r-- | protocols/yahoo/yahoo_util.c | 37 | ||||
-rw-r--r-- | protocols/yahoo/yahoo_util.h | 38 |
10 files changed, 2600 insertions, 2303 deletions
diff --git a/protocols/yahoo/libyahoo2.c b/protocols/yahoo/libyahoo2.c index 9956514d..9188c809 100644 --- a/protocols/yahoo/libyahoo2.c +++ b/protocols/yahoo/libyahoo2.c @@ -2,13 +2,13 @@ * libyahoo2: libyahoo2.c * * Some code copyright (C) 2002-2004, Philip S Tellis <philip.tellis AT gmx.net> - * YMSG16 code copyright (C) 2009, - * Siddhesh Poyarekar <siddhesh dot poyarekar at gmail dot com> + * YMSG16 code copyright (C) 2009, + * Siddhesh Poyarekar <siddhesh dot poyarekar at gmail dot com> * * Yahoo Search copyright (C) 2003, Konstantin Klyagin <konst AT konst.org.ua> * * Much of this code was taken and adapted from the yahoo module for - * gaim released under the GNU GPL. This code is also released under the + * gaim released under the GNU GPL. This code is also released under the * GNU GPL. * * This code is derivitive of Gaim <http://gaim.sourceforge.net> @@ -29,7 +29,7 @@ * <hiro-y@kcn.ne.jp> * * YMSG16 authentication code based mostly on write-up at: - * http://www.carbonize.co.uk/ymsg16.html + * http://www.carbonize.co.uk/ymsg16.html * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,10 +59,10 @@ # define strchr index # define strrchr rindex # endif -char *strchr (), *strrchr (); +char *strchr(), *strrchr(); # if !HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) +# define memcpy(d, s, n) bcopy((s), (d), (n)) +# define memmove(d, s, n) bcopy((s), (d), (n)) # endif #endif @@ -99,9 +99,9 @@ void yahoo_register_callbacks(struct yahoo_callbacks *tyc) yc = tyc; } -#define YAHOO_CALLBACK(x) yc->x +#define YAHOO_CALLBACK(x) yc->x #else -#define YAHOO_CALLBACK(x) x +#define YAHOO_CALLBACK(x) x #endif static int yahoo_send_data(void *fd, void *data, int len); @@ -112,10 +112,11 @@ int yahoo_log_message(char *fmt, ...) { char out[1024]; va_list ap; + va_start(ap, fmt); vsnprintf(out, sizeof(out), fmt, ap); va_end(ap); - return YAHOO_CALLBACK(ext_yahoo_log) ("%s", out); + return YAHOO_CALLBACK (ext_yahoo_log) ("%s", out); } static enum yahoo_log_level log_level = YAHOO_LOG_NONE; @@ -128,16 +129,17 @@ enum yahoo_log_level yahoo_get_log_level() int yahoo_set_log_level(enum yahoo_log_level level) { enum yahoo_log_level l = log_level; + log_level = level; return l; } /* default values for servers */ -static char *default_pager_hosts[] = { "scs.msg.yahoo.com", - "scsa.msg.yahoo.com", - "scsb.msg.yahoo.com", - "scsc.msg.yahoo.com", - NULL}; +static char *default_pager_hosts[] = { "scs.msg.yahoo.com", + "scsa.msg.yahoo.com", + "scsb.msg.yahoo.com", + "scsc.msg.yahoo.com", + NULL }; static int pager_port = 5050; static int fallback_ports[] = { 23, 25, 80, 20, 119, 8001, 8002, 5050, 0 }; @@ -221,21 +223,21 @@ struct yahoo_server_settings { static void yahoo_process_ft_connection(struct yahoo_input_data *yid, int over); static void yahoo_process_filetransfer(struct yahoo_input_data *yid, - struct yahoo_packet *pkt); + struct yahoo_packet *pkt); static void yahoo_process_filetransferinfo(struct yahoo_input_data *yid, - struct yahoo_packet *pkt); + struct yahoo_packet *pkt); static void yahoo_process_filetransferaccept(struct yahoo_input_data *yid, - struct yahoo_packet *pkt); + struct yahoo_packet *pkt); static void yahoo_https_auth(struct yahoo_input_data *yid, const char *seed, const char *sn); static void *_yahoo_default_server_settings() { struct yahoo_server_settings *yss = - y_new0(struct yahoo_server_settings, 1); + y_new0(struct yahoo_server_settings, 1); /* Give preference to the default host list - * Make sure that only one of the two is set at any time + * Make sure that only one of the two is set at any time */ yss->pager_host = NULL; yss->pager_host_list = default_pager_hosts; @@ -262,8 +264,9 @@ static void *_yahoo_assign_server_settings(va_list ap) while (1) { key = va_arg(ap, char *); - if (key == NULL) + if (key == NULL) { break; + } if (!strcmp(key, "pager_host")) { svalue = va_arg(ap, char *); @@ -305,8 +308,8 @@ static void *_yahoo_assign_server_settings(va_list ap) yss->conn_type = nvalue; } else { WARNING(("Unknown key passed to yahoo_init, " - "perhaps you didn't terminate the list " - "with NULL")); + "perhaps you didn't terminate the list " + "with NULL")); } } @@ -315,8 +318,9 @@ static void *_yahoo_assign_server_settings(va_list ap) static void yahoo_free_server_settings(struct yahoo_server_settings *yss) { - if (!yss) + if (!yss) { return; + } free(yss->pager_host); free(yss->filetransfer_host); @@ -339,10 +343,12 @@ static void add_to_list(struct yahoo_data *yd) static struct yahoo_data *find_conn_by_id(int id) { YList *l; + for (l = conns; l; l = y_list_next(l)) { struct yahoo_data *yd = l->data; - if (yd->client_id == id) + if (yd->client_id == id) { return yd; + } } return NULL; } @@ -356,44 +362,48 @@ static void del_from_list(struct yahoo_data *yd) /* static struct yahoo_input_data * find_input_by_id(int id) { - YList *l; - for(l = inputs; l; l = y_list_next(l)) { - struct yahoo_input_data *yid = l->data; - if(yid->yd->client_id == id) - return yid; - } - return NULL; + YList *l; + for(l = inputs; l; l = y_list_next(l)) { + struct yahoo_input_data *yid = l->data; + if(yid->yd->client_id == id) + return yid; + } + return NULL; } */ #if 0 static struct yahoo_input_data *find_input_by_id_and_webcam_user(int id, - const char *who) + const char *who) { YList *l; + LOG(("find_input_by_id_and_webcam_user")); for (l = inputs; l; l = y_list_next(l)) { struct yahoo_input_data *yid = l->data; if (yid->type == YAHOO_CONNECTION_WEBCAM - && yid->yd->client_id == id && yid->wcm && ((who - && yid->wcm->user - && !strcmp(who, yid->wcm->user)) - || !(yid->wcm->user && !who))) + && yid->yd->client_id == id && yid->wcm && ((who + && yid->wcm->user + && !strcmp(who, yid->wcm->user)) + || !(yid->wcm->user && !who))) { return yid; + } } return NULL; } #endif static struct yahoo_input_data *find_input_by_id_and_type(int id, - enum yahoo_connection_type type) + enum yahoo_connection_type type) { YList *l; + LOG(("find_input_by_id_and_type")); for (l = inputs; l; l = y_list_next(l)) { struct yahoo_input_data *yid = l->data; - if (yid->type == type && yid->yd->client_id == id) + if (yid->type == type && yid->yd->client_id == id) { return yid; + } } return NULL; } @@ -401,11 +411,13 @@ static struct yahoo_input_data *find_input_by_id_and_type(int id, static struct yahoo_input_data *find_input_by_id_and_fd(int id, void *fd) { YList *l; + LOG(("find_input_by_id_and_fd")); for (l = inputs; l; l = y_list_next(l)) { struct yahoo_input_data *yid = l->data; - if (yid->fd == fd && yid->yd->client_id == id) + if (yid->fd == fd && yid->yd->client_id == id) { return yid; + } } return NULL; } @@ -414,11 +426,13 @@ static int count_inputs_with_id(int id) { int c = 0; YList *l; + LOG(("counting %d", id)); for (l = inputs; l; l = y_list_next(l)) { struct yahoo_input_data *yid = l->data; - if (yid->yd->client_id == id) + if (yid->yd->client_id == id) { c++; + } } LOG(("%d", c)); return c; @@ -431,8 +445,9 @@ static void yahoo_free_buddies(YList *list) for (l = list; l; l = l->next) { struct yahoo_buddy *bud = l->data; - if (!bud) + if (!bud) { continue; + } FREE(bud->group); FREE(bud->id); @@ -502,7 +517,7 @@ static void yahoo_free_data(struct yahoo_data *yd) #define YAHOO_PACKET_HDRLEN (4 + 2 + 2 + 2 + 2 + 4 + 4) static struct yahoo_packet *yahoo_packet_new(enum yahoo_service service, - enum ypacket_status status, int id) + enum ypacket_status status, int id) { struct yahoo_packet *pkt = y_new0(struct yahoo_packet, 1); @@ -514,9 +529,10 @@ static struct yahoo_packet *yahoo_packet_new(enum yahoo_service service, } static void yahoo_packet_hash(struct yahoo_packet *pkt, int key, - const char *value) + const char *value) { struct yahoo_pair *pair = y_new0(struct yahoo_pair, 1); + pair->key = key; pair->value = strdup(value); pkt->hash = y_list_append(pkt->hash, pair); @@ -544,23 +560,23 @@ static int yahoo_packet_length(struct yahoo_packet *pkt) } #define yahoo_put16(buf, data) ( \ - (*(buf) = (unsigned char)((data)>>8)&0xff), \ - (*((buf)+1) = (unsigned char)(data)&0xff), \ - 2) -#define yahoo_get16(buf) ((((*(buf))&0xff)<<8) + ((*((buf)+1)) & 0xff)) + (*(buf) = (unsigned char) ((data) >> 8) & 0xff), \ + (*((buf) + 1) = (unsigned char) (data) & 0xff), \ + 2) +#define yahoo_get16(buf) ((((*(buf)) & 0xff) << 8) + ((*((buf) + 1)) & 0xff)) #define yahoo_put32(buf, data) ( \ - (*((buf)) = (unsigned char)((data)>>24)&0xff), \ - (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \ - (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \ - (*((buf)+3) = (unsigned char)(data)&0xff), \ - 4) -#define yahoo_get32(buf) ((((*(buf) )&0xff)<<24) + \ - (((*((buf)+1))&0xff)<<16) + \ - (((*((buf)+2))&0xff)<< 8) + \ - (((*((buf)+3))&0xff))) + (*((buf)) = (unsigned char) ((data) >> 24) & 0xff), \ + (*((buf) + 1) = (unsigned char) ((data) >> 16) & 0xff), \ + (*((buf) + 2) = (unsigned char) ((data) >> 8) & 0xff), \ + (*((buf) + 3) = (unsigned char) (data) & 0xff), \ + 4) +#define yahoo_get32(buf) ((((*(buf)) & 0xff) << 24) + \ + (((*((buf) + 1)) & 0xff) << 16) + \ + (((*((buf) + 2)) & 0xff) << 8) + \ + (((*((buf) + 3)) & 0xff))) static void yahoo_packet_read(struct yahoo_packet *pkt, unsigned char *data, - int len) + int len) { int pos = 0; @@ -574,47 +590,52 @@ static void yahoo_packet_read(struct yahoo_packet *pkt, unsigned char *data, key = malloc(len + 1); x = 0; while (pos + 1 < len) { - if (data[pos] == 0xc0 && data[pos + 1] == 0x80) + if (data[pos] == 0xc0 && data[pos + 1] == 0x80) { break; + } key[x++] = data[pos++]; } key[x] = 0; pos += 2; pair->key = strtol(key, NULL, 10); free(key); - + /* Libyahoo2 developer(s) don't seem to have the time to fix this problem, so for now try to work around it: - + Sometimes we receive an invalid packet with not any more data at this point. I don't know how to handle this in a clean way, but let's hope this is clean enough: */ - + if (pos + 1 < len) { - accept = x; + accept = x; /* if x is 0 there was no key, so don't accept it */ - if (accept) + if (accept) { value = malloc(len - pos + 1); + } x = 0; while (pos + 1 < len) { - if (data[pos] == 0xc0 && data[pos + 1] == 0x80) + if (data[pos] == 0xc0 && data[pos + 1] == 0x80) { break; - if (accept) + } + if (accept) { value[x++] = data[pos++]; + } } - if (accept) + if (accept) { value[x] = 0; + } pos += 2; } else { accept = 0; } - + if (accept) { pair->value = strdup(value); FREE(value); pkt->hash = y_list_append(pkt->hash, pair); DEBUG_MSG(("Key: %d \tValue: %s", pair->key, - pair->value)); + pair->value)); } else { FREE(pair); } @@ -630,13 +651,13 @@ static void yahoo_packet_write(struct yahoo_packet *pkt, unsigned char *data) struct yahoo_pair *pair = l->data; unsigned char buf[100]; - snprintf((char *)buf, sizeof(buf), "%d", pair->key); - strcpy((char *)data + pos, (char *)buf); - pos += strlen((char *)buf); + snprintf((char *) buf, sizeof(buf), "%d", pair->key); + strcpy((char *) data + pos, (char *) buf); + pos += strlen((char *) buf); data[pos++] = 0xc0; data[pos++] = 0x80; - strcpy((char *)data + pos, pair->value); + strcpy((char *) data + pos, pair->value); pos += strlen(pair->value); data[pos++] = 0xc0; data[pos++] = 0x80; @@ -659,24 +680,29 @@ static void yahoo_packet_dump(unsigned char *data, int len) if (yahoo_get_log_level() >= YAHOO_LOG_DEBUG) { int i; for (i = 0; i < len; i++) { - if ((i % 8 == 0) && i) - YAHOO_CALLBACK(ext_yahoo_log) (" "); - if ((i % 16 == 0) && i) - YAHOO_CALLBACK(ext_yahoo_log) ("\n"); - YAHOO_CALLBACK(ext_yahoo_log) ("%02x ", data[i]); + if ((i % 8 == 0) && i) { + YAHOO_CALLBACK (ext_yahoo_log) (" "); + } + if ((i % 16 == 0) && i) { + YAHOO_CALLBACK (ext_yahoo_log) ("\n"); + } + YAHOO_CALLBACK (ext_yahoo_log) ("%02x ", data[i]); } - YAHOO_CALLBACK(ext_yahoo_log) ("\n"); + YAHOO_CALLBACK (ext_yahoo_log) ("\n"); for (i = 0; i < len; i++) { - if ((i % 8 == 0) && i) - YAHOO_CALLBACK(ext_yahoo_log) (" "); - if ((i % 16 == 0) && i) - YAHOO_CALLBACK(ext_yahoo_log) ("\n"); - if (isprint(data[i])) - YAHOO_CALLBACK(ext_yahoo_log) (" %c ", data[i]); - else - YAHOO_CALLBACK(ext_yahoo_log) (" . "); + if ((i % 8 == 0) && i) { + YAHOO_CALLBACK (ext_yahoo_log) (" "); + } + if ((i % 16 == 0) && i) { + YAHOO_CALLBACK (ext_yahoo_log) ("\n"); + } + if (isprint(data[i])) { + YAHOO_CALLBACK (ext_yahoo_log) (" %c ", data[i]); + } else { + YAHOO_CALLBACK (ext_yahoo_log) (" . "); + } } - YAHOO_CALLBACK(ext_yahoo_log) ("\n"); + YAHOO_CALLBACK (ext_yahoo_log) ("\n"); } } @@ -702,51 +728,55 @@ static void to_y64(unsigned char *out, const unsigned char *in, int inlen) } static void yahoo_add_to_send_queue(struct yahoo_input_data *yid, void *data, - int length) + int length) { struct data_queue *tx = y_new0(struct data_queue, 1); + tx->queue = y_new0(unsigned char, length); tx->len = length; memcpy(tx->queue, data, length); yid->txqueues = y_list_append(yid->txqueues, tx); - if (!yid->write_tag) + if (!yid->write_tag) { yid->write_tag = - YAHOO_CALLBACK(ext_yahoo_add_handler) (yid->yd-> - client_id, yid->fd, YAHOO_INPUT_WRITE, yid); + YAHOO_CALLBACK (ext_yahoo_add_handler) (yid->yd-> + client_id, yid->fd, YAHOO_INPUT_WRITE, yid); + } } static void yahoo_send_packet(struct yahoo_input_data *yid, - struct yahoo_packet *pkt, int extra_pad) + struct yahoo_packet *pkt, int extra_pad) { int pktlen = yahoo_packet_length(pkt); int len = YAHOO_PACKET_HDRLEN + pktlen; unsigned char *data; int pos = 0; - if (yid->fd < 0) + if (yid->fd < 0) { return; + } data = y_new0(unsigned char, len + 1); memcpy(data + pos, "YMSG", 4); pos += 4; - pos += yahoo_put16(data + pos, YAHOO_PROTO_VER); /* version [latest 12 0x000c] */ - pos += yahoo_put16(data + pos, 0x0000); /* HIWORD pkt length??? */ - pos += yahoo_put16(data + pos, pktlen + extra_pad); /* LOWORD pkt length? */ - pos += yahoo_put16(data + pos, pkt->service); /* service */ - pos += yahoo_put32(data + pos, pkt->status); /* status [4bytes] */ - pos += yahoo_put32(data + pos, pkt->id); /* session [4bytes] */ + pos += yahoo_put16(data + pos, YAHOO_PROTO_VER); /* version [latest 12 0x000c] */ + pos += yahoo_put16(data + pos, 0x0000); /* HIWORD pkt length??? */ + pos += yahoo_put16(data + pos, pktlen + extra_pad); /* LOWORD pkt length? */ + pos += yahoo_put16(data + pos, pkt->service); /* service */ + pos += yahoo_put32(data + pos, pkt->status); /* status [4bytes] */ + pos += yahoo_put32(data + pos, pkt->id); /* session [4bytes] */ yahoo_packet_write(pkt, data + pos); yahoo_packet_dump(data, len); - if (yid->type == YAHOO_CONNECTION_FT) + if (yid->type == YAHOO_CONNECTION_FT) { yahoo_send_data(yid->fd, data, len); - else + } else { yahoo_add_to_send_queue(yid, data, len); + } FREE(data); } @@ -769,13 +799,14 @@ static int yahoo_send_data(void *fd, void *data, int len) int ret; int e; - if (fd == NULL) + if (fd == NULL) { return -1; + } yahoo_packet_dump(data, len); do { - ret = YAHOO_CALLBACK(ext_yahoo_write) (fd, data, len); + ret = YAHOO_CALLBACK (ext_yahoo_write) (fd, data, len); } while (ret == -1 && errno == EINTR); e = errno; @@ -792,14 +823,17 @@ static int yahoo_send_data(void *fd, void *data, int len) void yahoo_close(int id) { struct yahoo_data *yd = find_conn_by_id(id); - if (!yd) + + if (!yd) { return; + } del_from_list(yd); yahoo_free_data(yd); - if (id == last_id) + if (id == last_id) { last_id--; + } } static void yahoo_input_close(struct yahoo_input_data *yid) @@ -807,14 +841,15 @@ static void yahoo_input_close(struct yahoo_input_data *yid) inputs = y_list_remove(inputs, yid); LOG(("yahoo_input_close(read)")); - YAHOO_CALLBACK(ext_yahoo_remove_handler) (yid->yd->client_id, - yid->read_tag); + YAHOO_CALLBACK (ext_yahoo_remove_handler) (yid->yd->client_id, + yid->read_tag); LOG(("yahoo_input_close(write)")); - YAHOO_CALLBACK(ext_yahoo_remove_handler) (yid->yd->client_id, - yid->write_tag); + YAHOO_CALLBACK (ext_yahoo_remove_handler) (yid->yd->client_id, + yid->write_tag); yid->read_tag = yid->write_tag = 0; - if (yid->fd) - YAHOO_CALLBACK(ext_yahoo_close) (yid->fd); + if (yid->fd) { + YAHOO_CALLBACK (ext_yahoo_close) (yid->fd); + } yid->fd = 0; FREE(yid->rxqueue); if (count_inputs_with_id(yid->yd->client_id) == 0) { @@ -822,8 +857,9 @@ static void yahoo_input_close(struct yahoo_input_data *yid) yahoo_close(yid->yd->client_id); } yahoo_free_webcam(yid->wcm); - if (yid->wcd) + if (yid->wcd) { FREE(yid->wcd); + } if (yid->ys) { FREE(yid->ys->lsearch_text); FREE(yid->ys); @@ -845,14 +881,16 @@ static char *getcookie(char *rawcookie) char *tmpcookie; char *cookieend; - if (strlen(rawcookie) < 2) + if (strlen(rawcookie) < 2) { return NULL; + } tmpcookie = strdup(rawcookie + 2); cookieend = strchr(tmpcookie, ';'); - if (cookieend) + if (cookieend) { *cookieend = '\0'; + } cookie = strdup(tmpcookie); FREE(tmpcookie); @@ -871,8 +909,9 @@ static char *getlcookie(char *cookie) if (tmpend) { tmp = strdup(tmpend + 2); tmpend = strchr(tmp, '&'); - if (tmpend) + if (tmpend) { *tmpend = '\0'; + } login_cookie = strdup(tmp); FREE(tmp); } @@ -881,7 +920,7 @@ static char *getlcookie(char *cookie) } static void yahoo_process_notify(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *msg = NULL; @@ -891,52 +930,61 @@ static void yahoo_process_notify(struct yahoo_input_data *yid, int accept = 0; char *ind = NULL; YList *l; + for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 4) + if (pair->key == 4) { from = pair->value; - if (pair->key == 5) + } + if (pair->key == 5) { to = pair->value; - if (pair->key == 49) + } + if (pair->key == 49) { msg = pair->value; - if (pair->key == 13) + } + if (pair->key == 13) { stat = atoi(pair->value); - if (pair->key == 14) + } + if (pair->key == 14) { ind = pair->value; - if (pair->key == 16) { /* status == -1 */ + } + if (pair->key == 16) { /* status == -1 */ NOTICE((pair->value)); return; } } - if (!msg) + if (!msg) { return; + } - if (!strncasecmp(msg, "TYPING", strlen("TYPING"))) - YAHOO_CALLBACK(ext_yahoo_typing_notify) (yd->client_id, to, - from, stat); - else if (!strncasecmp(msg, "GAME", strlen("GAME"))) - YAHOO_CALLBACK(ext_yahoo_game_notify) (yd->client_id, to, from, - stat, ind); - else if (!strncasecmp(msg, "WEBCAMINVITE", strlen("WEBCAMINVITE"))) { + if (!strncasecmp(msg, "TYPING", strlen("TYPING"))) { + YAHOO_CALLBACK (ext_yahoo_typing_notify) (yd->client_id, to, + from, stat); + } else if (!strncasecmp(msg, "GAME", strlen("GAME"))) { + YAHOO_CALLBACK (ext_yahoo_game_notify) (yd->client_id, to, from, + stat, ind); + } else if (!strncasecmp(msg, "WEBCAMINVITE", strlen("WEBCAMINVITE"))) { if (!strcmp(ind, " ")) { - YAHOO_CALLBACK(ext_yahoo_webcam_invite) (yd->client_id, - to, from); + YAHOO_CALLBACK (ext_yahoo_webcam_invite) (yd->client_id, + to, from); } else { accept = atoi(ind); /* accept the invitation (-1 = deny 1 = accept) */ - if (accept < 0) + if (accept < 0) { accept = 0; - YAHOO_CALLBACK(ext_yahoo_webcam_invite_reply) (yd-> - client_id, to, from, accept); + } + YAHOO_CALLBACK (ext_yahoo_webcam_invite_reply) (yd-> + client_id, to, from, accept); } - } else + } else { LOG(("Got unknown notification: %s", msg)); + } } static void yahoo_process_conference(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *msg = NULL; @@ -950,97 +998,120 @@ static void yahoo_process_conference(struct yahoo_input_data *yid, for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 50) + if (pair->key == 50) { host = pair->value; + } - if (pair->key == 52) { /* invite */ + if (pair->key == 52) { /* invite */ members = y_list_append(members, strdup(pair->value)); } - if (pair->key == 53) /* logon */ + if (pair->key == 53) { /* logon */ who = pair->value; - if (pair->key == 54) /* decline */ + } + if (pair->key == 54) { /* decline */ who = pair->value; - if (pair->key == 55) /* unavailable (status == 2) */ + } + if (pair->key == 55) { /* unavailable (status == 2) */ who = pair->value; - if (pair->key == 56) /* logoff */ + } + if (pair->key == 56) { /* logoff */ who = pair->value; + } - if (pair->key == 57) + if (pair->key == 57) { room = pair->value; + } - if (pair->key == 58) /* join message */ + if (pair->key == 58) { /* join message */ msg = pair->value; - if (pair->key == 14) /* decline/conf message */ + } + if (pair->key == 14) { /* decline/conf message */ msg = pair->value; + } - if (pair->key == 13) + if (pair->key == 13) { ; - if (pair->key == 16) /* error */ + } + if (pair->key == 16) { /* error */ msg = pair->value; + } - if (pair->key == 1) /* my id */ + if (pair->key == 1) { /* my id */ id = pair->value; - if (pair->key == 3) /* message sender */ + } + if (pair->key == 3) { /* message sender */ who = pair->value; + } - if (pair->key == 97) + if (pair->key == 97) { utf8 = atoi(pair->value); + } } - if (!room) + if (!room) { return; + } if (host) { for (l = members; l; l = l->next) { char *w = l->data; - if (!strcmp(w, host)) + if (!strcmp(w, host)) { break; + } } - if (!l) + if (!l) { members = y_list_append(members, strdup(host)); + } } /* invite, decline, join, left, message -> status == 1 */ switch (pkt->service) { case YAHOO_SERVICE_CONFINVITE: - if (pkt->status == 2) ; - else if (members) - YAHOO_CALLBACK(ext_yahoo_got_conf_invite) (yd-> - client_id, id, host, room, msg, members); - else if (msg) - YAHOO_CALLBACK(ext_yahoo_error) (yd->client_id, msg, 0, - E_CONFNOTAVAIL); + if (pkt->status == 2) { + ; + } else if (members) { + YAHOO_CALLBACK (ext_yahoo_got_conf_invite) (yd-> + client_id, id, host, room, msg, members); + } else if (msg) { + YAHOO_CALLBACK (ext_yahoo_error) (yd->client_id, msg, 0, + E_CONFNOTAVAIL); + } break; case YAHOO_SERVICE_CONFADDINVITE: - if (pkt->status == 1) - YAHOO_CALLBACK(ext_yahoo_got_conf_invite) (yd-> - client_id, id, host, room, msg, members); + if (pkt->status == 1) { + YAHOO_CALLBACK (ext_yahoo_got_conf_invite) (yd-> + client_id, id, host, room, msg, members); + } break; case YAHOO_SERVICE_CONFDECLINE: - if (who) - YAHOO_CALLBACK(ext_yahoo_conf_userdecline) (yd-> - client_id, id, who, room, msg); + if (who) { + YAHOO_CALLBACK (ext_yahoo_conf_userdecline) (yd-> + client_id, id, who, room, msg); + } break; case YAHOO_SERVICE_CONFLOGON: - if (who) - YAHOO_CALLBACK(ext_yahoo_conf_userjoin) (yd->client_id, - id, who, room); + if (who) { + YAHOO_CALLBACK (ext_yahoo_conf_userjoin) (yd->client_id, + id, who, room); + } break; case YAHOO_SERVICE_CONFLOGOFF: - if (who) - YAHOO_CALLBACK(ext_yahoo_conf_userleave) (yd->client_id, - id, who, room); + if (who) { + YAHOO_CALLBACK (ext_yahoo_conf_userleave) (yd->client_id, + id, who, room); + } break; case YAHOO_SERVICE_CONFMSG: - if (who) - YAHOO_CALLBACK(ext_yahoo_conf_message) (yd->client_id, - id, who, room, msg, utf8); + if (who) { + YAHOO_CALLBACK (ext_yahoo_conf_message) (yd->client_id, + id, who, room, msg, utf8); + } break; } } static void yahoo_process_chat(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { char *msg = NULL; char *id = NULL; @@ -1086,7 +1157,7 @@ static void yahoo_process_chat(struct yahoo_input_data *yid, if (pkt->service == YAHOO_SERVICE_CHATJOIN) { currentmember = - y_new0(struct yahoo_chat_member, 1); + y_new0(struct yahoo_chat_member, 1); currentmember->id = strdup(pair->value); members = y_list_append(members, currentmember); } @@ -1094,26 +1165,30 @@ static void yahoo_process_chat(struct yahoo_input_data *yid, if (pair->key == 110) { /* age */ - if (pkt->service == YAHOO_SERVICE_CHATJOIN) + if (pkt->service == YAHOO_SERVICE_CHATJOIN) { currentmember->age = atoi(pair->value); + } } if (pair->key == 113) { /* attribs */ - if (pkt->service == YAHOO_SERVICE_CHATJOIN) + if (pkt->service == YAHOO_SERVICE_CHATJOIN) { currentmember->attribs = atoi(pair->value); + } } if (pair->key == 141) { /* alias */ - if (pkt->service == YAHOO_SERVICE_CHATJOIN) + if (pkt->service == YAHOO_SERVICE_CHATJOIN) { currentmember->alias = strdup(pair->value); + } } if (pair->key == 142) { /* location */ - if (pkt->service == YAHOO_SERVICE_CHATJOIN) + if (pkt->service == YAHOO_SERVICE_CHATJOIN) { currentmember->location = strdup(pair->value); + } } if (pair->key == 130) { @@ -1138,14 +1213,14 @@ static void yahoo_process_chat(struct yahoo_input_data *yid, } if (!room) { - if (pkt->service == YAHOO_SERVICE_CHATLOGOUT) { /* yahoo originated chat logout */ - YAHOO_CALLBACK(ext_yahoo_chat_yahoologout) (yid->yd-> - client_id, id); + if (pkt->service == YAHOO_SERVICE_CHATLOGOUT) { /* yahoo originated chat logout */ + YAHOO_CALLBACK (ext_yahoo_chat_yahoologout) (yid->yd-> + client_id, id); return; } if (pkt->service == YAHOO_SERVICE_COMMENT && chaterr) { - YAHOO_CALLBACK(ext_yahoo_chat_yahooerror) (yid->yd-> - client_id, id); + YAHOO_CALLBACK (ext_yahoo_chat_yahooerror) (yid->yd-> + client_id, id); return; } @@ -1159,8 +1234,8 @@ static void yahoo_process_chat(struct yahoo_input_data *yid, WARNING(("Count of members doesn't match No. of members we got")); } if (firstjoin && members) { - YAHOO_CALLBACK(ext_yahoo_chat_join) (yid->yd->client_id, - id, room, topic, members, yid->fd); + YAHOO_CALLBACK (ext_yahoo_chat_join) (yid->yd->client_id, + id, room, topic, members, yid->fd); } else if (who) { if (y_list_length(members) != 1) { WARNING(("Got more than 1 member on a normal join")); @@ -1169,8 +1244,8 @@ static void yahoo_process_chat(struct yahoo_input_data *yid, while (members) { YList *n = members->next; currentmember = members->data; - YAHOO_CALLBACK(ext_yahoo_chat_userjoin) (yid-> - yd->client_id, id, room, currentmember); + YAHOO_CALLBACK (ext_yahoo_chat_userjoin) (yid-> + yd->client_id, id, room, currentmember); y_list_free_1(members); members = n; } @@ -1178,21 +1253,21 @@ static void yahoo_process_chat(struct yahoo_input_data *yid, break; case YAHOO_SERVICE_CHATEXIT: if (who) { - YAHOO_CALLBACK(ext_yahoo_chat_userleave) (yid->yd-> - client_id, id, room, who); + YAHOO_CALLBACK (ext_yahoo_chat_userleave) (yid->yd-> + client_id, id, room, who); } break; case YAHOO_SERVICE_COMMENT: if (who) { - YAHOO_CALLBACK(ext_yahoo_chat_message) (yid->yd-> - client_id, id, who, room, msg, msgtype, utf8); + YAHOO_CALLBACK (ext_yahoo_chat_message) (yid->yd-> + client_id, id, who, room, msg, msgtype, utf8); } break; } } static void yahoo_process_message(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; YList *l; @@ -1212,30 +1287,35 @@ static void yahoo_process_message(struct yahoo_input_data *yid, for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; if (pair->key == 1 || pair->key == 4) { - if (!message->from) + if (!message->from) { message->from = pair->value; - } else if (pair->key == 5) + } + } else if (pair->key == 5) { message->to = pair->value; - else if (pair->key == 15) + } else if (pair->key == 15) { message->tm = strtol(pair->value, NULL, 10); - else if (pair->key == 97) + } else if (pair->key == 97) { message->utf8 = atoi(pair->value); + } /* This comes when the official client sends us a message */ - else if (pair->key == 429) + else if (pair->key == 429) { message->gunk = pair->value; + } /* user message *//* sys message */ - else if (pair->key == 14 || pair->key == 16) + else if (pair->key == 14 || pair->key == 16) { message->msg = pair->value; - else if (pair->key == 31) { + } else if (pair->key == 31) { if (message->i_31) { messages = y_list_append(messages, message); message = y_new0(struct m, 1); } message->i_31 = atoi(pair->value); - } else if (pair->key == 32) + } else if (pair->key == 32) { message->i_32 = atoi(pair->value); - else - LOG(("yahoo_process_message: status: %d, key: %d, value: %s", pkt->status, pair->key, pair->value)); + } else { + LOG(("yahoo_process_message: status: %d, key: %d, value: %s", pkt->status, pair->key, + pair->value)); + } } messages = y_list_append(messages, message); @@ -1243,15 +1323,15 @@ static void yahoo_process_message(struct yahoo_input_data *yid, for (l = messages; l; l = l->next) { message = l->data; if (pkt->service == YAHOO_SERVICE_SYSMESSAGE) { - YAHOO_CALLBACK(ext_yahoo_system_message) (yd->client_id, - message->to, message->from, message->msg); + YAHOO_CALLBACK (ext_yahoo_system_message) (yd->client_id, + message->to, message->from, message->msg); } else if (pkt->status <= 2 || pkt->status == 5) { /* Confirm message receipt if we got the gunk */ - if(message->gunk) { + if (message->gunk) { struct yahoo_packet *outpkt; - + outpkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE_CONFIRM, - YPACKET_STATUS_DEFAULT, 0); + YPACKET_STATUS_DEFAULT, 0); yahoo_packet_hash(outpkt, 1, yd->user); yahoo_packet_hash(outpkt, 5, message->from); yahoo_packet_hash(outpkt, 302, "430"); @@ -1259,20 +1339,21 @@ static void yahoo_process_message(struct yahoo_input_data *yid, yahoo_packet_hash(outpkt, 303, "430"); yahoo_packet_hash(outpkt, 450, "0"); yahoo_send_packet(yid, outpkt, 0); - + yahoo_packet_free(outpkt); } - if (!strcmp(message->msg, "<ding>")) - YAHOO_CALLBACK(ext_yahoo_got_buzz) (yd->client_id, - message->to, message->from, message->tm); - else - YAHOO_CALLBACK(ext_yahoo_got_im) (yd->client_id, - message->to, message->from, message->msg, - message->tm, pkt->status, message->utf8); + if (!strcmp(message->msg, "<ding>")) { + YAHOO_CALLBACK (ext_yahoo_got_buzz) (yd->client_id, + message->to, message->from, message->tm); + } else { + YAHOO_CALLBACK (ext_yahoo_got_im) (yd->client_id, + message->to, message->from, message->msg, + message->tm, pkt->status, message->utf8); + } } else if (pkt->status == 0xffffffff) { - YAHOO_CALLBACK(ext_yahoo_error) (yd->client_id, - message->msg, 0, E_SYSTEM); + YAHOO_CALLBACK (ext_yahoo_error) (yd->client_id, + message->msg, 0, E_SYSTEM); } FREE(message); } @@ -1285,26 +1366,26 @@ static void yahoo_process_message(struct yahoo_input_data *yid, * * 3 level: * ======= - * + * * 302 (318) - Beginning level 1 - * 300 (318) - Begin level 2 - * 302 (319) - End level 2 header - * 300 (319) - Begin level 3 - * 301 (319) - End level 3 - * 303 (319) - End level 2 + * 300 (318) - Begin level 2 + * 302 (319) - End level 2 header + * 300 (319) - Begin level 3 + * 301 (319) - End level 3 + * 303 (319) - End level 2 * 303 (318) - End level 1 * * 2 level: * ======= * * 302 (315) - Beginning level 1 - * 300 (315) - Begin level 2 - * 301 (315) - End level 2 + * 300 (315) - Begin level 2 + * 301 (315) - End level 2 * 303 (315) - End level 1 * */ static void yahoo_process_status(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { YList *l; struct yahoo_data *yd = yid->yd; @@ -1314,15 +1395,15 @@ static void yahoo_process_status(struct yahoo_input_data *yid, YList *users = 0; if (pkt->service == YAHOO_SERVICE_LOGOFF && pkt->status == -1) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, - YAHOO_LOGIN_DUPL, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, + YAHOO_LOGIN_DUPL, NULL); return; } - /* - * Status updates may be spread accross multiple packets and not - * even on buddy boundaries, so keeping some state is important. - * So, continue where we left off, and only add a user entry to + /* + * Status updates may be spread accross multiple packets and not + * even on buddy boundaries, so keeping some state is important. + * So, continue where we left off, and only add a user entry to * the list once it's complete (301-315 End buddy). */ u = yd->half_user; @@ -1331,37 +1412,39 @@ static void yahoo_process_status(struct yahoo_input_data *yid, struct yahoo_pair *pair = l->data; switch (pair->key) { - case 300: /* Begin buddy */ + case 300: /* Begin buddy */ if (!strcmp(pair->value, "315") && !u) { u = yd->half_user = y_new0(struct yahoo_process_status_entry, 1); } break; - case 301: /* End buddy */ + case 301: /* End buddy */ if (!strcmp(pair->value, "315") && u) { /* Sometimes user info comes in an odd format with no "begin buddy" but *with* an "end buddy". Don't add it twice. */ - if (!y_list_find(users, u)) + if (!y_list_find(users, u)) { users = y_list_prepend(users, u); + } u = yd->half_user = NULL; } break; - case 0: /* we won't actually do anything with this */ + case 0: /* we won't actually do anything with this */ NOTICE(("key %d:%s", pair->key, pair->value)); break; - case 1: /* we don't get the full buddy list here. */ + case 1: /* we don't get the full buddy list here. */ if (!yd->logged_in) { yd->logged_in = 1; - if (yd->current_status < 0) + if (yd->current_status < 0) { yd->current_status = yd->initial_status; - YAHOO_CALLBACK(ext_yahoo_login_response) (yd-> - client_id, YAHOO_LOGIN_OK, NULL); + } + YAHOO_CALLBACK (ext_yahoo_login_response) (yd-> + client_id, YAHOO_LOGIN_OK, NULL); } break; - case 8: /* how many online buddies we have */ + case 8: /* how many online buddies we have */ NOTICE(("key %d:%s", pair->key, pair->value)); break; - case 7: /* the current buddy */ + case 7: /* the current buddy */ if (!u) { /* This will only happen in case of a single level message */ u = y_new0(struct yahoo_process_status_entry, 1); @@ -1369,28 +1452,28 @@ static void yahoo_process_status(struct yahoo_input_data *yid, } u->name = pair->value; break; - case 10: /* state */ + case 10: /* state */ u->state = strtol(pair->value, NULL, 10); break; - case 19: /* custom status message */ + case 19: /* custom status message */ u->msg = pair->value; break; - case 47: /* is it an away message or not. Not applicable for YMSG16 anymore */ + case 47: /* is it an away message or not. Not applicable for YMSG16 anymore */ u->away = atoi(pair->value); break; - case 137: /* seconds idle */ + case 137: /* seconds idle */ u->idle = atoi(pair->value); break; - case 11: /* this is the buddy's session id */ + case 11: /* this is the buddy's session id */ u->buddy_session = atoi(pair->value); break; - case 17: /* in chat? */ + case 17: /* in chat? */ u->f17 = atoi(pair->value); break; - case 13: /* bitmask, bit 0 = pager, bit 1 = chat, bit 2 = game */ + case 13: /* bitmask, bit 0 = pager, bit 1 = chat, bit 2 = game */ u->flags = atoi(pair->value); break; - case 60: /* SMS -> 1 MOBILE USER */ + case 60: /* SMS -> 1 MOBILE USER */ /* sometimes going offline makes this 2, but invisible never sends it */ u->mobile = atoi(pair->value); break; @@ -1421,13 +1504,13 @@ static void yahoo_process_status(struct yahoo_input_data *yid, case 213: u->f213 = atoi(pair->value); break; - case 16: /* Custom error message */ - YAHOO_CALLBACK(ext_yahoo_error) (yd->client_id, - pair->value, 0, E_CUSTOM); + case 16: /* Custom error message */ + YAHOO_CALLBACK (ext_yahoo_error) (yd->client_id, + pair->value, 0, E_CUSTOM); break; default: WARNING(("unknown status key %d:%s", pair->key, - pair->value)); + pair->value)); break; } } @@ -1438,21 +1521,22 @@ static void yahoo_process_status(struct yahoo_input_data *yid, if (u->name != NULL) { if (pkt->service == - YAHOO_SERVICE_LOGOFF - /*|| u->flags == 0 No flags for YMSG16 */ ) { - YAHOO_CALLBACK(ext_yahoo_status_changed) (yd-> - client_id, u->name, - YAHOO_STATUS_OFFLINE, NULL, 1, 0, 0); + YAHOO_SERVICE_LOGOFF + /*|| u->flags == 0 No flags for YMSG16 */) { + YAHOO_CALLBACK (ext_yahoo_status_changed) (yd-> + client_id, u->name, + YAHOO_STATUS_OFFLINE, NULL, 1, 0, 0); } else { /* Key 47 always seems to be 1 for YMSG16 */ - if (!u->state) + if (!u->state) { u->away = 0; - else + } else { u->away = 1; + } - YAHOO_CALLBACK(ext_yahoo_status_changed) (yd-> - client_id, u->name, u->state, u->msg, - u->away, u->idle, u->mobile); + YAHOO_CALLBACK (ext_yahoo_status_changed) (yd-> + client_id, u->name, u->state, u->msg, + u->away, u->idle, u->mobile); } } @@ -1463,7 +1547,7 @@ static void yahoo_process_status(struct yahoo_input_data *yid, } static void yahoo_process_buddy_list(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; YList *l; @@ -1479,10 +1563,11 @@ static void yahoo_process_buddy_list(struct yahoo_input_data *yid, case 300: case 301: case 302: - break; /* Separators. Our logic does not need them */ + break; /* Separators. Our logic does not need them */ case 303: - if (318 == atoi(pair->value)) + if (318 == atoi(pair->value)) { last_packet = 1; + } break; case 65: cur_group = strdup(pair->value); @@ -1490,16 +1575,17 @@ static void yahoo_process_buddy_list(struct yahoo_input_data *yid, case 7: newbud = y_new0(struct yahoo_buddy, 1); newbud->id = strdup(pair->value); - if (cur_group) + if (cur_group) { newbud->group = strdup(cur_group); - else if (yd->buddies) { + } else if (yd->buddies) { struct yahoo_buddy *lastbud = - (struct yahoo_buddy *)y_list_nth(yd-> - buddies, - y_list_length(yd->buddies) - 1)->data; + (struct yahoo_buddy *) y_list_nth(yd-> + buddies, + y_list_length(yd->buddies) - 1)->data; newbud->group = strdup(lastbud->group); - } else + } else { newbud->group = strdup("Buddies"); + } yd->buddies = y_list_append(yd->buddies, newbud); @@ -1508,22 +1594,24 @@ static void yahoo_process_buddy_list(struct yahoo_input_data *yid, } /* we could be getting multiple packets here */ - if (pkt->hash && !last_packet) + if (pkt->hash && !last_packet) { return; + } - YAHOO_CALLBACK(ext_yahoo_got_buddies) (yd->client_id, yd->buddies); + YAHOO_CALLBACK (ext_yahoo_got_buddies) (yd->client_id, yd->buddies); /* Logged in */ if (!yd->logged_in) { yd->logged_in = 1; - if (yd->current_status < 0) + if (yd->current_status < 0) { yd->current_status = yd->initial_status; - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, - YAHOO_LOGIN_OK, NULL); + } + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, + YAHOO_LOGIN_OK, NULL); /* yahoo_set_away(yd->client_id, yd->initial_status, NULL, - (yd->initial_status == YAHOO_STATUS_AVAILABLE) ? 0 : 1); + (yd->initial_status == YAHOO_STATUS_AVAILABLE) ? 0 : 1); yahoo_get_yab(yd->client_id); */ @@ -1532,7 +1620,7 @@ static void yahoo_process_buddy_list(struct yahoo_input_data *yid, } static void yahoo_process_list(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; YList *l; @@ -1542,21 +1630,22 @@ static void yahoo_process_list(struct yahoo_input_data *yid, struct yahoo_pair *pair = l->data; switch (pair->key) { - case 89: /* identities */ - { - char **identities = - y_strsplit(pair->value, ",", -1); - int i; - for (i = 0; identities[i]; i++) - yd->identities = - y_list_append(yd->identities, - strdup(identities[i])); - y_strfreev(identities); + case 89: /* identities */ + { + char **identities = + y_strsplit(pair->value, ",", -1); + int i; + for (i = 0; identities[i]; i++) { + yd->identities = + y_list_append(yd->identities, + strdup(identities[i])); } - YAHOO_CALLBACK(ext_yahoo_got_identities) (yd->client_id, - yd->identities); + y_strfreev(identities); + } + YAHOO_CALLBACK (ext_yahoo_got_identities) (yd->client_id, + yd->identities); break; - case 59: /* cookies */ + case 59: /* cookies */ if (pair->value[0] == 'Y') { FREE(yd->cookie_y); FREE(yd->login_cookie); @@ -1574,34 +1663,35 @@ static void yahoo_process_list(struct yahoo_input_data *yid, } break; - case 3: /* my id */ - case 90: /* 1 */ - case 100: /* 0 */ - case 101: /* NULL */ - case 102: /* NULL */ - case 93: /* 86400/1440 */ + case 3: /* my id */ + case 90: /* 1 */ + case 100: /* 0 */ + case 101: /* NULL */ + case 102: /* NULL */ + case 93: /* 86400/1440 */ break; } } - if (yd->cookie_y && yd->cookie_t) /* We don't get cookie_c anymore */ - YAHOO_CALLBACK(ext_yahoo_got_cookies) (yd->client_id); + if (yd->cookie_y && yd->cookie_t) { /* We don't get cookie_c anymore */ + YAHOO_CALLBACK (ext_yahoo_got_cookies) (yd->client_id); + } } static void yahoo_process_verify(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; if (pkt->status != 0x01) { DEBUG_MSG(("expected status: 0x01, got: %d", pkt->status)); - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, - YAHOO_LOGIN_LOCK, ""); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, + YAHOO_LOGIN_LOCK, ""); return; } pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_send_packet(yid, pkt, 0); @@ -1611,7 +1701,7 @@ static void yahoo_process_verify(struct yahoo_input_data *yid, } static void yahoo_process_picture_checksum(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *from = NULL; @@ -1637,12 +1727,12 @@ static void yahoo_process_picture_checksum(struct yahoo_input_data *yid, } } - YAHOO_CALLBACK(ext_yahoo_got_buddyicon_checksum) (yd->client_id, to, - from, checksum); + YAHOO_CALLBACK (ext_yahoo_got_buddyicon_checksum) (yd->client_id, to, + from, checksum); } static void yahoo_process_picture(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *url = NULL; @@ -1657,63 +1747,64 @@ static void yahoo_process_picture(struct yahoo_input_data *yid, switch (pair->key) { case 1: - case 4: /* sender */ + case 4: /* sender */ from = pair->value; break; - case 5: /* we */ + case 5: /* we */ to = pair->value; break; - case 13: /* request / sending */ + case 13: /* request / sending */ status = atoi(pair->value); break; - case 20: /* url */ + case 20: /* url */ url = pair->value; break; - case 192: /*checksum */ + case 192: /*checksum */ checksum = atoi(pair->value); break; } } switch (status) { - case 1: /* this is a request, ignore for now */ - YAHOO_CALLBACK(ext_yahoo_got_buddyicon_request) (yd->client_id, - to, from); + case 1: /* this is a request, ignore for now */ + YAHOO_CALLBACK (ext_yahoo_got_buddyicon_request) (yd->client_id, + to, from); break; - case 2: /* this is cool - we get a picture :) */ - YAHOO_CALLBACK(ext_yahoo_got_buddyicon) (yd->client_id, to, - from, url, checksum); + case 2: /* this is cool - we get a picture :) */ + YAHOO_CALLBACK (ext_yahoo_got_buddyicon) (yd->client_id, to, + from, url, checksum); break; } } static void yahoo_process_picture_upload(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; YList *l; char *url = NULL; - if (pkt->status != 1) - return; /* something went wrong */ + if (pkt->status != 1) { + return; /* something went wrong */ + } for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; switch (pair->key) { - case 5: /* we */ + case 5: /* we */ break; - case 20: /* url */ + case 20: /* url */ url = pair->value; break; - case 27: /* local filename */ + case 27: /* local filename */ break; - case 38: /* time */ + case 38: /* time */ break; } } - YAHOO_CALLBACK(ext_yahoo_buddyicon_uploaded) (yd->client_id, url); + YAHOO_CALLBACK (ext_yahoo_buddyicon_uploaded) (yd->client_id, url); } void yahoo_login(int id, int initial) @@ -1726,6 +1817,7 @@ void yahoo_login(int id, int initial) char *host; struct yahoo_input_data *yid = y_new0(struct yahoo_input_data, 1); + yid->yd = yd; yid->type = YAHOO_CONNECTION_PAGER; inputs = y_list_prepend(inputs, yid); @@ -1738,25 +1830,26 @@ void yahoo_login(int id, int initial) host = yss->pager_host; - if (!host) + if (!host) { host = yss->pager_host_list[0]; + } - tag = YAHOO_CALLBACK(ext_yahoo_connect_async) (yd->client_id, - host, yss->pager_port, yahoo_connected, ccd, 0); + tag = YAHOO_CALLBACK (ext_yahoo_connect_async) (yd->client_id, + host, yss->pager_port, yahoo_connected, ccd, 0); /* * if tag <= 0, then callback has already been called * so ccd will have been freed */ - if (tag > 0) + if (tag > 0) { ccd->tag = tag; - else if (tag < 0) - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, - YAHOO_LOGIN_SOCK, NULL); + } else if (tag < 0) { + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, + YAHOO_LOGIN_SOCK, NULL); + } } -struct yahoo_https_auth_data -{ +struct yahoo_https_auth_data { struct yahoo_input_data *yid; char *token; char *chal; @@ -1773,42 +1866,43 @@ static char *yahoo_ha_find_key(char *response, char *key) { char *s, *end; int len = strlen(key); - + s = response; do { if (strncmp(s, key, len) == 0 && s[len] == '=') { s += len + 1; - if ((end = strchr(s, '\r'))) + if ((end = strchr(s, '\r'))) { return g_strndup(s, end - s); - else + } else { return g_strdup(s); + } + } + + if ((s = strchr(s, '\n'))) { + s++; } - - if ((s = strchr(s, '\n'))) - s ++; } while (s && *s); - + return NULL; } static enum yahoo_status yahoo_https_status_parse(int code) { - switch (code) - { - case 1212: return (enum yahoo_status) YAHOO_LOGIN_PASSWD; - case 1213: return (enum yahoo_status) YAHOO_LOGIN_LOCK; - case 1235: return (enum yahoo_status) YAHOO_LOGIN_UNAME; - default: return (enum yahoo_status) code; + switch (code) { + case 1212: return (enum yahoo_status) YAHOO_LOGIN_PASSWD; + case 1213: return (enum yahoo_status) YAHOO_LOGIN_LOCK; + case 1235: return (enum yahoo_status) YAHOO_LOGIN_UNAME; + default: return (enum yahoo_status) code; } } static void yahoo_https_auth(struct yahoo_input_data *yid, const char *seed, const char *sn) { struct yahoo_https_auth_data *had = g_new0(struct yahoo_https_auth_data, 1); - + had->yid = yid; had->chal = g_strdup(seed); - + yahoo_https_auth_token_init(had); } @@ -1818,19 +1912,19 @@ static void yahoo_https_auth_token_init(struct yahoo_https_auth_data *had) struct yahoo_data *yd = yid->yd; char *login, *passwd, *chal; char *url; - + login = g_strndup(yd->user, 3 * strlen(yd->user)); http_encode(login); passwd = g_strndup(yd->password, 3 * strlen(yd->password)); http_encode(passwd); chal = g_strndup(had->chal, 3 * strlen(had->chal)); http_encode(chal); - + url = g_strdup_printf("https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=%d&login=%s&passwd=%s&chal=%s", - (int) time(NULL), login, passwd, chal); - + (int) time(NULL), login, passwd, chal); + http_dorequest_url(url, yahoo_https_auth_token_finish, had); - + g_free(url); g_free(chal); g_free(passwd); @@ -1843,31 +1937,32 @@ static void yahoo_https_auth_token_finish(struct http_request *req) struct yahoo_input_data *yid; struct yahoo_data *yd; int st; - - if (y_list_find(inputs, had->yid) == NULL) + + if (y_list_find(inputs, had->yid) == NULL) { return; - + } + yid = had->yid; yd = yid->yd; - + if (req->status_code != 200) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, 2000 + req->status_code, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, 2000 + req->status_code, NULL); goto fail; } - + if (sscanf(req->reply_body, "%d", &st) != 1 || st != 0) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, yahoo_https_status_parse(st), NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, yahoo_https_status_parse(st), NULL); goto fail; } - + if ((had->token = yahoo_ha_find_key(req->reply_body, "ymsgr")) == NULL) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, 3001, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, 3001, NULL); goto fail; } - + yahoo_https_auth_init(had); return; - + fail: g_free(had->token); g_free(had->chal); @@ -1877,12 +1972,12 @@ fail: static void yahoo_https_auth_init(struct yahoo_https_auth_data *had) { char *url; - + url = g_strdup_printf("https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=%d&token=%s", (int) time(NULL), had->token); - + http_dorequest_url(url, yahoo_https_auth_finish, had); - + g_free(url); } @@ -1894,38 +1989,39 @@ static void yahoo_https_auth_finish(struct http_request *req) struct yahoo_packet *pack; char *crumb = NULL; int st; - - if (y_list_find(inputs, had->yid) == NULL) + + if (y_list_find(inputs, had->yid) == NULL) { return; - + } + yid = had->yid; yd = yid->yd; - + md5_byte_t result[16]; md5_state_t ctx; - + unsigned char yhash[32]; if (req->status_code != 200) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, 2000 + req->status_code, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, 2000 + req->status_code, NULL); goto fail; } - + if (sscanf(req->reply_body, "%d", &st) != 1 || st != 0) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, yahoo_https_status_parse(st), NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, yahoo_https_status_parse(st), NULL); goto fail; } - + if ((yd->cookie_y = yahoo_ha_find_key(req->reply_body, "Y")) == NULL || (yd->cookie_t = yahoo_ha_find_key(req->reply_body, "T")) == NULL || (crumb = yahoo_ha_find_key(req->reply_body, "crumb")) == NULL) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, 3002, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, 3002, NULL); goto fail; } - - md5_init(&ctx); - md5_append(&ctx, (unsigned char*) crumb, 11); - md5_append(&ctx, (unsigned char*) had->chal, strlen(had->chal)); + + md5_init(&ctx); + md5_append(&ctx, (unsigned char *) crumb, 11); + md5_append(&ctx, (unsigned char *) had->chal, strlen(had->chal)); md5_finish(&ctx, result); to_y64(yhash, result, 16); @@ -1934,17 +2030,17 @@ static void yahoo_https_auth_finish(struct http_request *req) yahoo_packet_hash(pack, 0, yd->user); yahoo_packet_hash(pack, 277, yd->cookie_y); yahoo_packet_hash(pack, 278, yd->cookie_t); - yahoo_packet_hash(pack, 307, (char*) yhash); + yahoo_packet_hash(pack, 307, (char *) yhash); yahoo_packet_hash(pack, 244, "524223"); yahoo_packet_hash(pack, 2, yd->user); yahoo_packet_hash(pack, 2, "1"); yahoo_packet_hash(pack, 98, "us"); yahoo_packet_hash(pack, 135, "7.5.0.647"); - + yahoo_send_packet(yid, pack, 0); - + yahoo_packet_free(pack); - + fail: g_free(crumb); g_free(had->token); @@ -1953,7 +2049,7 @@ fail: } static void yahoo_process_auth(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { char *seed = NULL; char *sn = NULL; @@ -1978,21 +2074,22 @@ static void yahoo_process_auth(struct yahoo_input_data *yid, l = l->next; } - if (!seed) + if (!seed) { return; + } - if (m==2) + if (m == 2) { yahoo_https_auth(yid, seed, sn); - else { + } else { /* call error */ WARNING(("unknown auth type %d", m)); - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, - YAHOO_LOGIN_UNKNOWN, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, + YAHOO_LOGIN_UNKNOWN, NULL); } } static void yahoo_process_auth_resp(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *url = NULL; @@ -2002,25 +2099,26 @@ static void yahoo_process_auth_resp(struct yahoo_input_data *yid, for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 0) + if (pair->key == 0) { ; /* login_id */ - else if (pair->key == 1) + } else if (pair->key == 1) { ; /* handle */ - else if (pair->key == 20) + } else if (pair->key == 20) { url = pair->value; - else if (pair->key == 66) + } else if (pair->key == 66) { login_status = atoi(pair->value); + } } if (pkt->status == YPACKET_STATUS_DISCONNECTED) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, - login_status, url); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, + login_status, url); /* yahoo_logoff(yd->client_id); */ } } static void yahoo_process_mail(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *who = NULL; @@ -2031,30 +2129,32 @@ static void yahoo_process_mail(struct yahoo_input_data *yid, for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 9) + if (pair->key == 9) { count = strtol(pair->value, NULL, 10); - else if (pair->key == 43) + } else if (pair->key == 43) { who = pair->value; - else if (pair->key == 42) + } else if (pair->key == 42) { email = pair->value; - else if (pair->key == 18) + } else if (pair->key == 18) { subj = pair->value; - else + } else { LOG(("key: %d => value: %s", pair->key, pair->value)); + } } if (who && email && subj) { char from[1024]; snprintf(from, sizeof(from), "%s (%s)", who, email); - YAHOO_CALLBACK(ext_yahoo_mail_notify) (yd->client_id, from, - subj, count); - } else if (count > 0) - YAHOO_CALLBACK(ext_yahoo_mail_notify) (yd->client_id, NULL, - NULL, count); + YAHOO_CALLBACK (ext_yahoo_mail_notify) (yd->client_id, from, + subj, count); + } else if (count > 0) { + YAHOO_CALLBACK (ext_yahoo_mail_notify) (yd->client_id, NULL, + NULL, count); + } } static void yahoo_process_new_contact(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *me = NULL; @@ -2066,26 +2166,28 @@ static void yahoo_process_new_contact(struct yahoo_input_data *yid, for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 4) + if (pair->key == 4) { who = pair->value; - else if (pair->key == 5) + } else if (pair->key == 5) { me = pair->value; - else if (pair->key == 14) + } else if (pair->key == 14) { msg = pair->value; - else if (pair->key == 13) + } else if (pair->key == 13) { online = strtol(pair->value, NULL, 10); + } } - if (who && online < 0) - YAHOO_CALLBACK(ext_yahoo_contact_added) (yd->client_id, me, who, - msg); - else if (online == 2) - YAHOO_CALLBACK(ext_yahoo_rejected) (yd->client_id, who, msg); + if (who && online < 0) { + YAHOO_CALLBACK (ext_yahoo_contact_added) (yd->client_id, me, who, + msg); + } else if (online == 2) { + YAHOO_CALLBACK (ext_yahoo_rejected) (yd->client_id, who, msg); + } } /* UNUSED? */ static void yahoo_process_contact(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *id = NULL; @@ -2101,41 +2203,43 @@ static void yahoo_process_contact(struct yahoo_input_data *yid, for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 1) + if (pair->key == 1) { id = pair->value; - else if (pair->key == 3) + } else if (pair->key == 3) { who = pair->value; - else if (pair->key == 14) + } else if (pair->key == 14) { msg = pair->value; - else if (pair->key == 7) + } else if (pair->key == 7) { name = pair->value; - else if (pair->key == 10) + } else if (pair->key == 10) { state = strtol(pair->value, NULL, 10); - else if (pair->key == 15) + } else if (pair->key == 15) { ; /* tm */ - else if (pair->key == 13) + } else if (pair->key == 13) { ; /* online */ - else if (pair->key == 47) + } else if (pair->key == 47) { away = strtol(pair->value, NULL, 10); - else if (pair->key == 137) + } else if (pair->key == 137) { idle = strtol(pair->value, NULL, 10); - else if (pair->key == 60) + } else if (pair->key == 60) { mobile = strtol(pair->value, NULL, 10); + } } - if (id) - YAHOO_CALLBACK(ext_yahoo_contact_added) (yd->client_id, id, who, - msg); - else if (name) - YAHOO_CALLBACK(ext_yahoo_status_changed) (yd->client_id, name, - state, msg, away, idle, mobile); - else if (pkt->status == 0x07) - YAHOO_CALLBACK(ext_yahoo_rejected) (yd->client_id, who, msg); + if (id) { + YAHOO_CALLBACK (ext_yahoo_contact_added) (yd->client_id, id, who, + msg); + } else if (name) { + YAHOO_CALLBACK (ext_yahoo_status_changed) (yd->client_id, name, + state, msg, away, idle, mobile); + } else if (pkt->status == 0x07) { + YAHOO_CALLBACK (ext_yahoo_rejected) (yd->client_id, who, msg); + } } static void yahoo_process_buddyadd(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *who = NULL; @@ -2145,22 +2249,29 @@ static void yahoo_process_buddyadd(struct yahoo_input_data *yid, struct yahoo_buddy *bud = NULL; YList *l; + for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 1) + if (pair->key == 1) { ; /* Me... don't care */ - if (pair->key == 7) + } + if (pair->key == 7) { who = pair->value; - if (pair->key == 65) + } + if (pair->key == 65) { where = pair->value; - if (pair->key == 66) + } + if (pair->key == 66) { status = strtol(pair->value, NULL, 10); + } } - if (!who) + if (!who) { return; - if (!where) + } + if (!where) { where = "Unknown"; + } bud = y_new0(struct yahoo_buddy, 1); bud->id = strdup(who); @@ -2180,26 +2291,26 @@ static void yahoo_process_buddyadd(struct yahoo_input_data *yid, will be a separate "went online" packet when the auth. request is accepted. Couldn't find any test account that doesn't require auth. unfortunately (if there is even such a thing?) */ - - /* A non-zero status (i've seen 2) seems to mean the buddy is already + + /* A non-zero status (i've seen 2) seems to mean the buddy is already * added and is online */ if (status) { LOG(("Setting online see packet for info")); yahoo_dump_unhandled(pkt); - YAHOO_CALLBACK(ext_yahoo_status_changed) (yd->client_id, who, - YAHOO_STATUS_AVAILABLE, NULL, 0, 0, 0); + YAHOO_CALLBACK (ext_yahoo_status_changed) (yd->client_id, who, + YAHOO_STATUS_AVAILABLE, NULL, 0, 0, 0); } #endif /* BitlBee: Need ACK of added buddy, if it was successful. */ if (status == 0) { YList *tmp = y_list_append(NULL, bud); - YAHOO_CALLBACK(ext_yahoo_got_buddies) (yd->client_id, tmp); + YAHOO_CALLBACK (ext_yahoo_got_buddies) (yd->client_id, tmp); y_list_free(tmp); } } static void yahoo_process_buddydel(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { struct yahoo_data *yd = yid->yd; char *who = NULL; @@ -2209,23 +2320,26 @@ static void yahoo_process_buddydel(struct yahoo_input_data *yid, YList *buddy; YList *l; + for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 1) + if (pair->key == 1) { ; /* Me... don't care */ - else if (pair->key == 7) + } else if (pair->key == 7) { who = pair->value; - else if (pair->key == 65) + } else if (pair->key == 65) { where = pair->value; - else if (pair->key == 66) + } else if (pair->key == 66) { ; /* unk_66 */ - else + } else { DEBUG_MSG(("unknown key: %d = %s", pair->key, - pair->value)); + pair->value)); + } } - if (!who || !where) + if (!who || !where) { return; + } bud = y_new0(struct yahoo_buddy, 1); bud->id = strdup(who); @@ -2252,19 +2366,24 @@ static void yahoo_process_buddydel(struct yahoo_input_data *yid, } static void yahoo_process_ignore(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { YList *l; + for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 0) + if (pair->key == 0) { ; /* who */ - if (pair->key == 1) + } + if (pair->key == 1) { ; /* Me... don't care */ - if (pair->key == 13) /* 1 == ignore, 2 == unignore */ + } + if (pair->key == 13) { /* 1 == ignore, 2 == unignore */ ; - if (pair->key == 66) + } + if (pair->key == 66) { ; /* status */ + } } /* @@ -2276,33 +2395,38 @@ static void yahoo_process_ignore(struct yahoo_input_data *yid, */ /* if(status) - YAHOO_CALLBACK(ext_yahoo_error)(yd->client_id, who, 0, status); + YAHOO_CALLBACK(ext_yahoo_error)(yd->client_id, who, 0, status); */ } static void yahoo_process_voicechat(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { char *who = NULL; char *me = NULL; char *room = NULL; YList *l; + for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 4) + if (pair->key == 4) { who = pair->value; - if (pair->key == 5) + } + if (pair->key == 5) { me = pair->value; - if (pair->key == 13) + } + if (pair->key == 13) { ; /* voice room */ - if (pair->key == 57) + } + if (pair->key == 57) { room = pair->value; + } } NOTICE(("got voice chat invite from %s in %s to identity %s", who, room, - me)); - /* + me)); + /* * send: s:0 1:me 5:who 57:room 13:1 * ???? s:4 5:who 10:99 19:-1615114531 * gotr: s:4 5:who 10:99 19:-1615114615 @@ -2314,23 +2438,25 @@ static void yahoo_process_voicechat(struct yahoo_input_data *yid, } static void yahoo_process_ping(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { char *errormsg = NULL; YList *l; + for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 16) + if (pair->key == 16) { errormsg = pair->value; + } } NOTICE(("got ping packet")); - YAHOO_CALLBACK(ext_yahoo_got_ping) (yid->yd->client_id, errormsg); + YAHOO_CALLBACK (ext_yahoo_got_ping) (yid->yd->client_id, errormsg); } static void yahoo_process_buddy_change_group(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { YList *l; char *me = NULL; @@ -2340,18 +2466,22 @@ static void yahoo_process_buddy_change_group(struct yahoo_input_data *yid, for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 1) + if (pair->key == 1) { me = pair->value; - if (pair->key == 7) + } + if (pair->key == 7) { who = pair->value; - if (pair->key == 224) + } + if (pair->key == 224) { old_group = pair->value; - if (pair->key == 264) + } + if (pair->key == 264) { new_group = pair->value; + } } - YAHOO_CALLBACK(ext_yahoo_got_buddy_change_group) (yid->yd->client_id, - me, who, old_group, new_group); + YAHOO_CALLBACK (ext_yahoo_got_buddy_change_group) (yid->yd->client_id, + me, who, old_group, new_group); } static void _yahoo_webcam_get_server_connected(void *fd, int error, void *d) @@ -2375,10 +2505,11 @@ static void _yahoo_webcam_get_server_connected(void *fd, int error, void *d) inputs = y_list_prepend(inputs, yid); /* send initial packet */ - if (who) + if (who) { data = strdup("<RVWCFG>"); - else + } else { data = strdup("<RUPCFG>"); + } yahoo_add_to_send_queue(yid, data, strlen(data)); FREE(data); @@ -2403,12 +2534,12 @@ static void _yahoo_webcam_get_server_connected(void *fd, int error, void *d) FREE(data); yid->read_tag = - YAHOO_CALLBACK(ext_yahoo_add_handler) (yid->yd->client_id, fd, - YAHOO_INPUT_READ, yid); + YAHOO_CALLBACK (ext_yahoo_add_handler) (yid->yd->client_id, fd, + YAHOO_INPUT_READ, yid); } static void yahoo_webcam_get_server(struct yahoo_input_data *y, char *who, - char *key) + char *key) { struct yahoo_input_data *yid = y_new0(struct yahoo_input_data, 1); struct yahoo_server_settings *yss = y->yd->server_settings; @@ -2420,32 +2551,36 @@ static void yahoo_webcam_get_server(struct yahoo_input_data *y, char *who, yid->wcm->direction = who ? YAHOO_WEBCAM_DOWNLOAD : YAHOO_WEBCAM_UPLOAD; yid->wcm->key = strdup(key); - YAHOO_CALLBACK(ext_yahoo_connect_async) (yid->yd->client_id, - yss->webcam_host, yss->webcam_port, - _yahoo_webcam_get_server_connected, yid, 0); + YAHOO_CALLBACK (ext_yahoo_connect_async) (yid->yd->client_id, + yss->webcam_host, yss->webcam_port, + _yahoo_webcam_get_server_connected, yid, 0); } static YList *webcam_queue = NULL; static void yahoo_process_webcam_key(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { char *key = NULL; char *who = NULL; YList *l; + yahoo_dump_unhandled(pkt); for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; - if (pair->key == 5) + if (pair->key == 5) { ; /* me */ - if (pair->key == 61) + } + if (pair->key == 61) { key = pair->value; + } } l = webcam_queue; - if (!l) + if (!l) { return; + } who = l->data; webcam_queue = y_list_remove_link(webcam_queue, webcam_queue); y_list_free_1(l); @@ -2454,7 +2589,7 @@ static void yahoo_process_webcam_key(struct yahoo_input_data *yid, } static void yahoo_packet_process(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { DEBUG_MSG(("yahoo_packet_process: 0x%02x", pkt->service)); switch (pkt->service) { @@ -2576,7 +2711,7 @@ static void yahoo_packet_process(struct yahoo_input_data *yid, case YAHOO_SERVICE_PICTURE_UPLOAD: yahoo_process_picture_upload(yid, pkt); break; - case YAHOO_SERVICE_Y8_LIST: /* Buddy List */ + case YAHOO_SERVICE_Y8_LIST: /* Buddy List */ yahoo_process_buddy_list(yid, pkt); break; default: @@ -2593,8 +2728,9 @@ static struct yahoo_packet *yahoo_getdata(struct yahoo_input_data *yid) int pos = 0; int pktlen; - if (!yd) + if (!yd) { return NULL; + } DEBUG_MSG(("rxlen is %d", yid->rxlen)); if (yid->rxlen < YAHOO_PACKET_HDRLEN) { @@ -2602,7 +2738,7 @@ static struct yahoo_packet *yahoo_getdata(struct yahoo_input_data *yid) return NULL; } - pos += 4; /* YMSG */ + pos += 4; /* YMSG */ pos += 2; pos += 2; @@ -2625,7 +2761,7 @@ static struct yahoo_packet *yahoo_getdata(struct yahoo_input_data *yid) pkt->status = yahoo_get32(yid->rxqueue + pos); pos += 4; DEBUG_MSG(("Yahoo Service: 0x%02x Status: %d", pkt->service, - pkt->status)); + pkt->status)); pkt->id = yahoo_get32(yid->rxqueue + pos); pos += 4; @@ -2637,11 +2773,11 @@ static struct yahoo_packet *yahoo_getdata(struct yahoo_input_data *yid) DEBUG_MSG(("rxlen == %d, rxqueue == %p", yid->rxlen, yid->rxqueue)); if (yid->rxlen > 0) { unsigned char *tmp = y_memdup(yid->rxqueue + YAHOO_PACKET_HDRLEN - + pktlen, yid->rxlen); + + pktlen, yid->rxlen); FREE(yid->rxqueue); yid->rxqueue = tmp; DEBUG_MSG(("new rxlen == %d, rxqueue == %p", yid->rxlen, - yid->rxqueue)); + yid->rxqueue)); } else { DEBUG_MSG(("freed rxqueue == %p", yid->rxqueue)); FREE(yid->rxqueue); @@ -2654,7 +2790,7 @@ static struct yahoo_packet *yahoo_getdata(struct yahoo_input_data *yid) static struct yab *yahoo_yab_read(unsigned char *d, int len) { char *st, *en; - char *data = (char *)d; + char *data = (char *) d; struct yab *yab = NULL; data[len] = '\0'; @@ -2670,8 +2806,9 @@ static struct yab *yahoo_yab_read(unsigned char *d, int len) yab->email = yahoo_xmldecode(st); } - if (!en) + if (!en) { return NULL; + } st = strstr(en, "id=\""); if (st) { @@ -2754,44 +2891,50 @@ static struct yab *yahoo_getyab(struct yahoo_input_data *yid) int pos = 0, end = 0; struct yahoo_data *yd = yid->yd; - if (!yd) + if (!yd) { return NULL; + } do { DEBUG_MSG(("rxlen is %d", yid->rxlen)); - if (yid->rxlen <= strlen("<ct")) + if (yid->rxlen <= strlen("<ct")) { return NULL; + } /* start with <ct */ while (pos < yid->rxlen - strlen("<ct") + 1 - && memcmp(yid->rxqueue + pos, "<ct", strlen("<ct"))) + && memcmp(yid->rxqueue + pos, "<ct", strlen("<ct"))) { pos++; + } - if (pos >= yid->rxlen - 1) + if (pos >= yid->rxlen - 1) { return NULL; + } end = pos + 2; /* end with > */ while (end < yid->rxlen - strlen(">") - && memcmp(yid->rxqueue + end, ">", strlen(">"))) + && memcmp(yid->rxqueue + end, ">", strlen(">"))) { end++; + } - if (end >= yid->rxlen - 1) + if (end >= yid->rxlen - 1) { return NULL; + } yab = yahoo_yab_read(yid->rxqueue + pos, end + 2 - pos); yid->rxlen -= end + 1; DEBUG_MSG(("rxlen == %d, rxqueue == %p", yid->rxlen, - yid->rxqueue)); + yid->rxqueue)); if (yid->rxlen > 0) { unsigned char *tmp = - y_memdup(yid->rxqueue + end + 1, yid->rxlen); + y_memdup(yid->rxqueue + end + 1, yid->rxlen); FREE(yid->rxqueue); yid->rxqueue = tmp; DEBUG_MSG(("new rxlen == %d, rxqueue == %p", yid->rxlen, - yid->rxqueue)); + yid->rxqueue)); } else { DEBUG_MSG(("freed rxqueue == %p", yid->rxqueue)); FREE(yid->rxqueue); @@ -2811,25 +2954,27 @@ static char *yahoo_getwebcam_master(struct yahoo_input_data *yid) char *server = NULL; struct yahoo_data *yd = yid->yd; - if (!yid || !yd) + if (!yid || !yd) { return NULL; + } DEBUG_MSG(("rxlen is %d", yid->rxlen)); len = yid->rxqueue[pos++]; - if (yid->rxlen < len) + if (yid->rxlen < len) { return NULL; + } /* extract status (0 = ok, 6 = webcam not online) */ status = yid->rxqueue[pos++]; if (status == 0) { - pos += 2; /* skip next 2 bytes */ + pos += 2; /* skip next 2 bytes */ server = y_memdup(yid->rxqueue + pos, 16); pos += 16; } else if (status == 6) { - YAHOO_CALLBACK(ext_yahoo_webcam_closed) - (yd->client_id, yid->wcm->user, 4); + YAHOO_CALLBACK (ext_yahoo_webcam_closed) + (yd->client_id, yid->wcm->user, 4); } /* skip rest of the data */ @@ -2841,7 +2986,7 @@ static char *yahoo_getwebcam_master(struct yahoo_input_data *yid) FREE(yid->rxqueue); yid->rxqueue = tmp; DEBUG_MSG(("new rxlen == %d, rxqueue == %p", yid->rxlen, - yid->rxqueue)); + yid->rxqueue)); } else { DEBUG_MSG(("freed rxqueue == %p", yid->rxqueue)); FREE(yid->rxqueue); @@ -2862,11 +3007,13 @@ static int yahoo_get_webcam_data(struct yahoo_input_data *yid) int connect = 0; struct yahoo_data *yd = yid->yd; - if (!yd) + if (!yd) { return -1; + } - if (!yid->wcm || !yid->wcd || !yid->rxlen) + if (!yid->wcm || !yid->wcd || !yid->rxlen) { return -1; + } DEBUG_MSG(("rxlen is %d", yid->rxlen)); @@ -2875,8 +3022,9 @@ static int yahoo_get_webcam_data(struct yahoo_input_data *yid) header_len = yid->rxqueue[pos++]; yid->wcd->packet_type = 0; - if (yid->rxlen < header_len) + if (yid->rxlen < header_len) { return 0; + } if (header_len >= 8) { reason = yid->rxqueue[pos++]; @@ -2898,8 +3046,9 @@ static int yahoo_get_webcam_data(struct yahoo_input_data *yid) begin = pos; pos += yid->wcd->to_read; - if (pos > yid->rxlen) + if (pos > yid->rxlen) { pos = yid->rxlen; + } /* if it is not an image then make sure we have the whole packet */ if (yid->wcd->packet_type != 0x02) { @@ -2912,22 +3061,24 @@ static int yahoo_get_webcam_data(struct yahoo_input_data *yid) } DEBUG_MSG(("packet type %.2X, data length %d", yid->wcd->packet_type, - yid->wcd->data_size)); + yid->wcd->data_size)); /* find out what kind of packet we got */ switch (yid->wcd->packet_type) { case 0x00: /* user requests to view webcam (uploading) */ if (yid->wcd->data_size && - yid->wcm->direction == YAHOO_WEBCAM_UPLOAD) { + yid->wcm->direction == YAHOO_WEBCAM_UPLOAD) { end = begin; - while (end <= yid->rxlen && yid->rxqueue[end++] != 13) ; + while (end <= yid->rxlen && yid->rxqueue[end++] != 13) { + ; + } if (end > begin) { who = y_memdup(yid->rxqueue + begin, - end - begin); + end - begin); who[end - begin - 1] = 0; - YAHOO_CALLBACK(ext_yahoo_webcam_viewer) (yd-> - client_id, who + 2, 2); + YAHOO_CALLBACK (ext_yahoo_webcam_viewer) (yd-> + client_id, who + 2, 2); FREE(who); } } @@ -2937,58 +3088,59 @@ static int yahoo_get_webcam_data(struct yahoo_input_data *yid) /* 0 = declined viewing permission */ /* 1 = accepted viewing permission */ if (yid->wcd->timestamp == 0) { - YAHOO_CALLBACK(ext_yahoo_webcam_closed) (yd-> - client_id, yid->wcm->user, 3); + YAHOO_CALLBACK (ext_yahoo_webcam_closed) (yd-> + client_id, yid->wcm->user, 3); } } break; - case 0x01: /* status packets?? */ + case 0x01: /* status packets?? */ /* timestamp contains status info */ /* 00 00 00 01 = we have data?? */ break; - case 0x02: /* image data */ - YAHOO_CALLBACK(ext_yahoo_got_webcam_image) (yd->client_id, - yid->wcm->user, yid->rxqueue + begin, - yid->wcd->data_size, pos - begin, yid->wcd->timestamp); + case 0x02: /* image data */ + YAHOO_CALLBACK (ext_yahoo_got_webcam_image) (yd->client_id, + yid->wcm->user, yid->rxqueue + begin, + yid->wcd->data_size, pos - begin, yid->wcd->timestamp); break; - case 0x05: /* response packets when uploading */ + case 0x05: /* response packets when uploading */ if (!yid->wcd->data_size) { - YAHOO_CALLBACK(ext_yahoo_webcam_data_request) (yd-> - client_id, yid->wcd->timestamp); + YAHOO_CALLBACK (ext_yahoo_webcam_data_request) (yd-> + client_id, yid->wcd->timestamp); } break; - case 0x07: /* connection is closing */ + case 0x07: /* connection is closing */ switch (reason) { - case 0x01: /* user closed connection */ + case 0x01: /* user closed connection */ closed = 1; break; - case 0x0F: /* user cancelled permission */ + case 0x0F: /* user cancelled permission */ closed = 2; break; } - YAHOO_CALLBACK(ext_yahoo_webcam_closed) (yd->client_id, - yid->wcm->user, closed); + YAHOO_CALLBACK (ext_yahoo_webcam_closed) (yd->client_id, + yid->wcm->user, closed); break; - case 0x0C: /* user connected */ - case 0x0D: /* user disconnected */ + case 0x0C: /* user connected */ + case 0x0D: /* user disconnected */ if (yid->wcd->data_size) { who = y_memdup(yid->rxqueue + begin, pos - begin + 1); who[pos - begin] = 0; - if (yid->wcd->packet_type == 0x0C) + if (yid->wcd->packet_type == 0x0C) { connect = 1; - else + } else { connect = 0; - YAHOO_CALLBACK(ext_yahoo_webcam_viewer) (yd->client_id, - who, connect); + } + YAHOO_CALLBACK (ext_yahoo_webcam_viewer) (yd->client_id, + who, connect); FREE(who); } break; - case 0x13: /* user data */ + case 0x13: /* user data */ /* i=user_ip (ip of the user we are viewing) */ /* j=user_ext_ip (external ip of the user we */ /* are viewing) */ break; - case 0x17: /* ?? */ + case 0x17: /* ?? */ break; } yid->wcd->to_read -= pos - begin; @@ -3000,15 +3152,16 @@ static int yahoo_get_webcam_data(struct yahoo_input_data *yid) FREE(yid->rxqueue); yid->rxqueue = tmp; DEBUG_MSG(("new rxlen == %d, rxqueue == %p", yid->rxlen, - yid->rxqueue)); + yid->rxqueue)); } else { DEBUG_MSG(("freed rxqueue == %p", yid->rxqueue)); FREE(yid->rxqueue); } /* If we read a complete packet return success */ - if (!yid->wcd->to_read) + if (!yid->wcd->to_read) { return 1; + } return 0; } @@ -3020,15 +3173,17 @@ int yahoo_write_ready(int id, void *fd, void *data) struct data_queue *tx; LOG(("write callback: id=%d fd=%p data=%p", id, fd, data)); - if (!yid || !yid->txqueues) + if (!yid || !yid->txqueues) { return -2; + } tx = yid->txqueues->data; LOG(("writing %d bytes", tx->len)); len = yahoo_send_data(fd, tx->queue, MIN(1024, tx->len)); - if (len == -1 && errno == EAGAIN) + if (len == -1 && errno == EAGAIN) { return 1; + } if (len <= 0) { int e = errno; @@ -3039,12 +3194,12 @@ int yahoo_write_ready(int id, void *fd, void *data) free(tx->queue); free(tx); yid->txqueues = - y_list_remove_link(yid->txqueues, - yid->txqueues); + y_list_remove_link(yid->txqueues, + yid->txqueues); y_list_free_1(l); } LOG(("yahoo_write_ready(%d, %p) len < 0", id, fd)); - YAHOO_CALLBACK(ext_yahoo_remove_handler) (id, yid->write_tag); + YAHOO_CALLBACK (ext_yahoo_remove_handler) (id, yid->write_tag); yid->write_tag = 0; errno = e; return 0; @@ -3061,16 +3216,16 @@ int yahoo_write_ready(int id, void *fd, void *data) free(tx->queue); free(tx); yid->txqueues = - y_list_remove_link(yid->txqueues, yid->txqueues); + y_list_remove_link(yid->txqueues, yid->txqueues); y_list_free_1(l); /* - if(!yid->txqueues) + if(!yid->txqueues) LOG(("yahoo_write_ready(%d, %d) !yxqueues", id, fd)); */ if (!yid->txqueues) { LOG(("yahoo_write_ready(%d, %p) !txqueues", id, fd)); - YAHOO_CALLBACK(ext_yahoo_remove_handler) (id, - yid->write_tag); + YAHOO_CALLBACK (ext_yahoo_remove_handler) (id, + yid->write_tag); yid->write_tag = 0; } } @@ -3079,17 +3234,18 @@ int yahoo_write_ready(int id, void *fd, void *data) } static void yahoo_process_pager_connection(struct yahoo_input_data *yid, - int over) + int over) { struct yahoo_packet *pkt; struct yahoo_data *yd = yid->yd; int id = yd->client_id; - if (over) + if (over) { return; + } while (find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER) - && (pkt = yahoo_getdata(yid)) != NULL) { + && (pkt = yahoo_getdata(yid)) != NULL) { yahoo_packet_process(yid, pkt); @@ -3098,14 +3254,15 @@ static void yahoo_process_pager_connection(struct yahoo_input_data *yid, } static void yahoo_process_chatcat_connection(struct yahoo_input_data *yid, - int over) + int over) { - if (over) + if (over) { return; + } - if (strstr((char *)yid->rxqueue + (yid->rxlen - 20), "</content>")) { - YAHOO_CALLBACK(ext_yahoo_chat_cat_xml) (yid->yd->client_id, - (char *)yid->rxqueue); + if (strstr((char *) yid->rxqueue + (yid->rxlen - 20), "</content>")) { + YAHOO_CALLBACK (ext_yahoo_chat_cat_xml) (yid->yd->client_id, + (char *) yid->rxqueue); } } @@ -3121,13 +3278,15 @@ static void yahoo_process_yab_connection(struct yahoo_input_data *yid, int over) LOG(("Got data for YAB")); - if (over) + if (over) { return; + } while (find_input_by_id_and_type(id, YAHOO_CONNECTION_YAB) - && (yab = yahoo_getyab(yid)) != NULL) { - if (!yab->id) + && (yab = yahoo_getyab(yid)) != NULL) { + if (!yab->id) { continue; + } changed = 1; yab_used = 0; @@ -3140,14 +3299,14 @@ static void yahoo_process_yab_connection(struct yahoo_input_data *yid, int over) bud->real_name = strdup(yab->nname); } else if (yab->fname && yab->lname) { bud->real_name = y_new0(char, - strlen(yab->fname) + - strlen(yab->lname) + 2); + strlen(yab->fname) + + strlen(yab->lname) + 2); sprintf(bud->real_name, "%s %s", - yab->fname, yab->lname); + yab->fname, yab->lname); } else if (yab->fname) { bud->real_name = strdup(yab->fname); } - break; /* for */ + break; /* for */ } } @@ -3165,26 +3324,28 @@ static void yahoo_process_yab_connection(struct yahoo_input_data *yid, int over) } - if (changed) - YAHOO_CALLBACK(ext_yahoo_got_buddies) (yd->client_id, - yd->buddies); + if (changed) { + YAHOO_CALLBACK (ext_yahoo_got_buddies) (yd->client_id, + yd->buddies); + } } #endif static void yahoo_process_search_connection(struct yahoo_input_data *yid, - int over) + int over) { struct yahoo_found_contact *yct = NULL; - char *p = (char *)yid->rxqueue, *np, *cp; + char *p = (char *) yid->rxqueue, *np, *cp; int k, n; int start = 0, found = 0, total = 0; YList *contacts = NULL; struct yahoo_input_data *pyid = - find_input_by_id_and_type(yid->yd->client_id, - YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(yid->yd->client_id, + YAHOO_CONNECTION_PAGER); - if (!over || !pyid) + if (!over || !pyid) { return; + } if (p && (p = strstr(p, "\r\n\r\n"))) { p += 4; @@ -3205,25 +3366,27 @@ static void yahoo_process_search_connection(struct yahoo_input_data *yid, } } - if (p) + if (p) { p++; + } k = 0; while (p && *p) { cp = p; np = strchr(p, 4); - if (!np) + if (!np) { break; + } *np = 0; p = np + 1; switch (k++) { case 1: if (strlen(cp) > 2 - && y_list_length(contacts) < total) { + && y_list_length(contacts) < total) { yct = y_new0(struct yahoo_found_contact, - 1); + 1); contacts = y_list_append(contacts, yct); yct->id = cp + 2; } else { @@ -3241,16 +3404,17 @@ static void yahoo_process_search_connection(struct yahoo_input_data *yid, break; case 5: /* not worth the context switch for strcmp */ - if (cp[0] != '\005' || cp[1] != '\000') + if (cp[0] != '\005' || cp[1] != '\000') { yct->location = cp; + } k = 0; break; } } } - YAHOO_CALLBACK(ext_yahoo_got_search_result) (yid->yd->client_id, found, - start, total, contacts); + YAHOO_CALLBACK (ext_yahoo_got_search_result) (yid->yd->client_id, found, + start, total, contacts); while (contacts) { YList *node = contacts; @@ -3356,8 +3520,8 @@ static void _yahoo_webcam_connected(void *fd, int error, void *d) FREE(data); yid->read_tag = - YAHOO_CALLBACK(ext_yahoo_add_handler) (yid->yd->client_id, - yid->fd, YAHOO_INPUT_READ, yid); + YAHOO_CALLBACK (ext_yahoo_add_handler) (yid->yd->client_id, + yid->fd, YAHOO_INPUT_READ, yid); } static void yahoo_webcam_connect(struct yahoo_input_data *y) @@ -3365,8 +3529,9 @@ static void yahoo_webcam_connect(struct yahoo_input_data *y) struct yahoo_webcam *wcm = y->wcm; struct yahoo_input_data *yid; - if (!wcm || !wcm->server || !wcm->key) + if (!wcm || !wcm->server || !wcm->key) { return; + } yid = y_new0(struct yahoo_input_data, 1); yid->type = YAHOO_CONNECTION_WEBCAM; @@ -3379,19 +3544,20 @@ static void yahoo_webcam_connect(struct yahoo_input_data *y) yid->wcd = y_new0(struct yahoo_webcam_data, 1); LOG(("Connecting to: %s:%d", wcm->server, wcm->port)); - YAHOO_CALLBACK(ext_yahoo_connect_async) (y->yd->client_id, wcm->server, - wcm->port, _yahoo_webcam_connected, yid, 0); + YAHOO_CALLBACK (ext_yahoo_connect_async) (y->yd->client_id, wcm->server, + wcm->port, _yahoo_webcam_connected, yid, 0); } static void yahoo_process_webcam_master_connection(struct yahoo_input_data *yid, - int over) + int over) { char *server; struct yahoo_server_settings *yss; - if (over) + if (over) { return; + } server = yahoo_getwebcam_master(yid); @@ -3401,35 +3567,40 @@ static void yahoo_process_webcam_master_connection(struct yahoo_input_data *yid, yid->wcm->port = yss->webcam_port; yid->wcm->conn_type = yss->conn_type; yid->wcm->my_ip = strdup(yss->local_host); - if (yid->wcm->direction == YAHOO_WEBCAM_UPLOAD) + if (yid->wcm->direction == YAHOO_WEBCAM_UPLOAD) { yid->wcm->description = strdup(yss->webcam_description); + } yahoo_webcam_connect(yid); FREE(server); } } static void yahoo_process_webcam_connection(struct yahoo_input_data *yid, - int over) + int over) { int id = yid->yd->client_id; void *fd = yid->fd; - if (over) + if (over) { return; + } /* as long as we still have packets available keep processing them */ while (find_input_by_id_and_fd(id, fd) - && yahoo_get_webcam_data(yid) == 1) ; + && yahoo_get_webcam_data(yid) == 1) { + ; + } } -static void (*yahoo_process_connection[]) (struct yahoo_input_data *, - int over) = { -yahoo_process_pager_connection, yahoo_process_ft_connection, - NULL, /*yahoo_process_yab_connection, */ - yahoo_process_webcam_master_connection, - yahoo_process_webcam_connection, - yahoo_process_chatcat_connection, - yahoo_process_search_connection}; +static void(*yahoo_process_connection[]) (struct yahoo_input_data *, + int over) = { + yahoo_process_pager_connection, yahoo_process_ft_connection, + NULL, /*yahoo_process_yab_connection, */ + yahoo_process_webcam_master_connection, + yahoo_process_webcam_connection, + yahoo_process_chatcat_connection, + yahoo_process_search_connection +}; int yahoo_read_ready(int id, void *fd, void *data) { @@ -3438,31 +3609,34 @@ int yahoo_read_ready(int id, void *fd, void *data) int len; LOG(("read callback: id=%d fd=%p data=%p", id, fd, data)); - if (!yid) + if (!yid) { return -2; + } do { - len = YAHOO_CALLBACK(ext_yahoo_read) (fd, buf, sizeof(buf)); + len = YAHOO_CALLBACK (ext_yahoo_read) (fd, buf, sizeof(buf)); } while (len == -1 && errno == EINTR); - if (len == -1 && (errno == EAGAIN || errno == EINTR)) /* we'll try again later */ + if (len == -1 && (errno == EAGAIN || errno == EINTR)) { /* we'll try again later */ return 1; + } if (len <= 0) { int e = errno; DEBUG_MSG(("len == %d (<= 0)", len)); if (yid->type == YAHOO_CONNECTION_PAGER) { - YAHOO_CALLBACK(ext_yahoo_login_response) (yid->yd-> - client_id, YAHOO_LOGIN_SOCK, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yid->yd-> + client_id, YAHOO_LOGIN_SOCK, NULL); } yahoo_process_connection[yid->type] (yid, 1); yahoo_input_close(yid); /* no need to return an error, because we've already fixed it */ - if (len == 0) + if (len == 0) { return 1; + } errno = e; LOG(("read error: %s", strerror(errno))); @@ -3470,7 +3644,7 @@ int yahoo_read_ready(int id, void *fd, void *data) } yid->rxqueue = - y_renew(unsigned char, yid->rxqueue, len + yid->rxlen + 1); + y_renew(unsigned char, yid->rxqueue, len + yid->rxlen + 1); memcpy(yid->rxqueue + yid->rxlen, buf, len); yid->rxlen += len; yid->rxqueue[yid->rxlen] = 0; @@ -3487,8 +3661,9 @@ int yahoo_init_with_attributes(const char *username, const char *password, ...) yd = y_new0(struct yahoo_data, 1); - if (!yd) + if (!yd) { return 0; + } yd->user = strdup(username); yd->password = strdup(password); @@ -3525,18 +3700,20 @@ static void yahoo_connected(void *fd, int error, void *data) if (fallback_ports[ccd->i]) { char *host = yss->pager_host; - if (!host) + if (!host) { host = yss->pager_host_list[ccd->server_i]; + } yss->pager_port = fallback_ports[ccd->i++]; - tag = YAHOO_CALLBACK(ext_yahoo_connect_async) (yd-> - client_id, host, yss->pager_port, - yahoo_connected, ccd, 0); + tag = YAHOO_CALLBACK (ext_yahoo_connect_async) (yd-> + client_id, host, yss->pager_port, + yahoo_connected, ccd, 0); - if (tag > 0) + if (tag > 0) { ccd->tag = tag; + } } else if (yss->pager_host_list - && yss->pager_host_list[ccd->server_i]) { + && yss->pager_host_list[ccd->server_i]) { /* Get back to the default port */ yss->pager_port = pager_port; @@ -3544,13 +3721,14 @@ static void yahoo_connected(void *fd, int error, void *data) LOG(("Fallback: Connecting to %s:%d", yss->pager_host_list[ccd->server_i], yss->pager_port)); ccd->i = 0; - tag = YAHOO_CALLBACK(ext_yahoo_connect_async) (yd->client_id, - yss->pager_host_list[ccd->server_i], yss->pager_port, - yahoo_connected, ccd, 0); + tag = YAHOO_CALLBACK (ext_yahoo_connect_async) (yd->client_id, + yss->pager_host_list[ccd->server_i], + yss->pager_port, + yahoo_connected, ccd, 0); } else { FREE(ccd); - YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id, - YAHOO_LOGIN_SOCK, NULL); + YAHOO_CALLBACK (ext_yahoo_login_response) (yd->client_id, + YAHOO_LOGIN_SOCK, NULL); } return; } @@ -3558,11 +3736,12 @@ static void yahoo_connected(void *fd, int error, void *data) FREE(ccd); /* fd == NULL && error == 0 means connect was cancelled */ - if (!fd) + if (!fd) { return; + } pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); NOTICE(("Sending initial packet")); yahoo_packet_hash(pkt, 1, yd->user); @@ -3575,18 +3754,20 @@ static void yahoo_connected(void *fd, int error, void *data) yahoo_packet_free(pkt); yid->read_tag = - YAHOO_CALLBACK(ext_yahoo_add_handler) (yid->yd->client_id, - yid->fd, YAHOO_INPUT_READ, yid); + YAHOO_CALLBACK (ext_yahoo_add_handler) (yid->yd->client_id, + yid->fd, YAHOO_INPUT_READ, yid); } void *yahoo_get_fd(int id) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); - if (!yid) + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + + if (!yid) { return 0; - else + } else { return yid->fd; + } } #if 0 @@ -3597,34 +3778,37 @@ void yahoo_send_buzz(int id, const char *from, const char *who) #endif void yahoo_send_im(int id, const char *from, const char *who, const char *what, - int utf8, int picture) + int utf8, int picture) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_packet *pkt = NULL; struct yahoo_data *yd; char pic_str[10]; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, (enum ypacket_status) YAHOO_STATUS_OFFLINE, - yd->session_id); + yd->session_id); snprintf(pic_str, sizeof(pic_str), "%d", picture); - if (from && strcmp(from, yd->user)) + if (from && strcmp(from, yd->user)) { yahoo_packet_hash(pkt, 0, yd->user); + } yahoo_packet_hash(pkt, 1, from ? from : yd->user); yahoo_packet_hash(pkt, 5, who); yahoo_packet_hash(pkt, 14, what); - if (utf8) + if (utf8) { yahoo_packet_hash(pkt, 97, "1"); + } - yahoo_packet_hash(pkt, 63, ";0"); /* imvironment name; or ;0 */ + yahoo_packet_hash(pkt, 63, ";0"); /* imvironment name; or ;0 */ yahoo_packet_hash(pkt, 64, "0"); yahoo_packet_hash(pkt, 206, pic_str); @@ -3636,15 +3820,17 @@ void yahoo_send_im(int id, const char *from, const char *who, const char *what, void yahoo_send_typing(int id, const char *from, const char *who, int typ) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YPACKET_STATUS_NOTIFY, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 5, who); yahoo_packet_hash(pkt, 1, from ? from : yd->user); @@ -3660,14 +3846,15 @@ void yahoo_send_typing(int id, const char *from, const char *who, int typ) void yahoo_set_away(int id, enum yahoo_status state, const char *msg, int away) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; int old_status; char s[4]; - if (!yid) + if (!yid) { return; + } yd = yid->yd; @@ -3677,7 +3864,7 @@ void yahoo_set_away(int id, enum yahoo_status state, const char *msg, int away) /* Thank you libpurple :) */ if (yd->current_status == YAHOO_STATUS_INVISIBLE) { pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, - (enum ypacket_status) YAHOO_STATUS_AVAILABLE, 0); + (enum ypacket_status) YAHOO_STATUS_AVAILABLE, 0); yahoo_packet_hash(pkt, 13, "2"); yahoo_send_packet(yid, pkt, 0); yahoo_packet_free(pkt); @@ -3686,17 +3873,17 @@ void yahoo_set_away(int id, enum yahoo_status state, const char *msg, int away) } pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, - yd->current_status, yd->session_id); + yd->current_status, yd->session_id); snprintf(s, sizeof(s), "%d", yd->current_status); yahoo_packet_hash(pkt, 10, s); yahoo_packet_hash(pkt, 19, msg && state == YAHOO_STATUS_CUSTOM ? msg : ""); - yahoo_packet_hash(pkt, 47, (away == 2)? "2": (away) ?"1":"0"); + yahoo_packet_hash(pkt, 47, (away == 2) ? "2" : (away) ? "1" : "0"); yahoo_send_packet(yid, pkt, 0); yahoo_packet_free(pkt); if (old_status == YAHOO_STATUS_INVISIBLE) { pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, - (enum ypacket_status) YAHOO_STATUS_AVAILABLE, 0); + (enum ypacket_status) YAHOO_STATUS_AVAILABLE, 0); yahoo_packet_hash(pkt, 13, "1"); yahoo_send_packet(yid, pkt, 0); yahoo_packet_free(pkt); @@ -3706,12 +3893,13 @@ void yahoo_set_away(int id, enum yahoo_status state, const char *msg, int away) void yahoo_logoff(int id) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; LOG(("yahoo_logoff: current status: %d", yd->current_status)); @@ -3721,7 +3909,7 @@ void yahoo_logoff(int id) get to do this so it'll just leak memory. And the TCP connection reset will hopefully be clear enough. */ pkt = yahoo_packet_new(YAHOO_SERVICE_LOGOFF, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yd->current_status = -1; if (pkt) { @@ -3731,8 +3919,8 @@ void yahoo_logoff(int id) } /* do { - yahoo_input_close(yid); - } while((yid = find_input_by_id(id)));*/ + yahoo_input_close(yid); + } while((yid = find_input_by_id(id)));*/ } @@ -3740,16 +3928,17 @@ void yahoo_logoff(int id) void yahoo_get_list(int id) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_LIST, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); if (pkt) { yahoo_send_packet(yid, pkt, 0); @@ -3761,6 +3950,7 @@ void yahoo_get_list(int id) static void _yahoo_http_connected(int id, void *fd, int error, void *data) { struct yahoo_input_data *yid = data; + if (fd == NULL || error) { inputs = y_list_remove(inputs, yid); FREE(yid); @@ -3769,8 +3959,8 @@ static void _yahoo_http_connected(int id, void *fd, int error, void *data) yid->fd = fd; yid->read_tag = - YAHOO_CALLBACK(ext_yahoo_add_handler) (yid->yd->client_id, fd, - YAHOO_INPUT_READ, yid); + YAHOO_CALLBACK (ext_yahoo_add_handler) (yid->yd->client_id, fd, + YAHOO_INPUT_READ, yid); } #if 0 @@ -3782,8 +3972,9 @@ void yahoo_get_yab(int id) char url[1024]; char buff[2048]; - if (!yd) + if (!yd) { return; + } yid = y_new0(struct yahoo_input_data, 1); yid->yd = yd; @@ -3792,15 +3983,15 @@ void yahoo_get_yab(int id) LOG(("Sending request for Address Book")); snprintf(url, 1024, - "http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us" - "&diffs=1&t=0&tags=short&rt=0&prog-ver=8.1.0.249&useutf8=1&legenc=codepage-1252"); + "http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us" + "&diffs=1&t=0&tags=short&rt=0&prog-ver=8.1.0.249&useutf8=1&legenc=codepage-1252"); snprintf(buff, sizeof(buff), "Y=%s; T=%s", yd->cookie_y, yd->cookie_t); inputs = y_list_prepend(inputs, yid); yahoo_http_get(yid->yd->client_id, url, buff, 0, 0, - _yahoo_http_connected, yid); + _yahoo_http_connected, yid); } struct yahoo_post_data { @@ -3820,12 +4011,12 @@ static void _yahoo_http_post_connected(int id, void *fd, int error, void *data) return; } - YAHOO_CALLBACK(ext_yahoo_write) (fd, buff, strlen(buff)); + YAHOO_CALLBACK (ext_yahoo_write) (fd, buff, strlen(buff)); yid->fd = fd; yid->read_tag = - YAHOO_CALLBACK(ext_yahoo_add_handler) (yid->yd->client_id, fd, - YAHOO_INPUT_READ, yid); + YAHOO_CALLBACK (ext_yahoo_add_handler) (yid->yd->client_id, fd, + YAHOO_INPUT_READ, yid); FREE(buff); FREE(yad); @@ -3842,53 +4033,56 @@ void yahoo_set_yab(int id, struct yab *yab) char post[1024]; int size = 0; - if (!yd) + if (!yd) { return; + } yid = y_new0(struct yahoo_input_data, 1); yid->type = YAHOO_CONNECTION_YAB; yid->yd = yd; - if(yab->yid) + if (yab->yid) { size = snprintf(post, sizeof(post), "<?xml version=\"1.0\" encoding=\"utf-8\"?>" - "<ab k=\"%s\" cc=\"%d\">" - "<ct id=\"%d\" e=\"1\" yi=\"%s\" nn=\"%s\" />" - "</ab>", yd->user, 9, yab->yid, /* Don't know why */ - yab->id, yab->nname?yab->nname:""); - else + "<ab k=\"%s\" cc=\"%d\">" + "<ct id=\"%d\" e=\"1\" yi=\"%s\" nn=\"%s\" />" + "</ab>", yd->user, 9, yab->yid, /* Don't know why */ + yab->id, yab->nname ? yab->nname : ""); + } else { size = snprintf(post, sizeof(post), "<?xml version=\"1.0\" encoding=\"utf-8\"?>" - "<ab k=\"%s\" cc=\"%d\">" - "<ct a=\"1\" yi=\"%s\" nn=\"%s\" />" - "</ab>", yd->user, 1, /* Don't know why */ - yab->id, yab->nname?yab->nname:""); + "<ab k=\"%s\" cc=\"%d\">" + "<ct a=\"1\" yi=\"%s\" nn=\"%s\" />" + "</ab>", yd->user, 1, /* Don't know why */ + yab->id, yab->nname ? yab->nname : ""); + } yad->yid = yid; yad->data = strdup(post); strcpy(url, "http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us" - "&sync=1&tags=short&noclear=1&useutf8=1&legenc=codepage-1252"); + "&sync=1&tags=short&noclear=1&useutf8=1&legenc=codepage-1252"); snprintf(buff, sizeof(buff), "Y=%s; T=%s", yd->cookie_y, yd->cookie_t); inputs = y_list_prepend(inputs, yid); yahoo_http_post(yid->yd->client_id, url, buff, size, - _yahoo_http_post_connected, yad); + _yahoo_http_post_connected, yad); } void yahoo_set_identity_status(int id, const char *identity, int active) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(active ? YAHOO_SERVICE_IDACT : - YAHOO_SERVICE_IDDEACT, YPACKET_STATUS_DEFAULT, yd->session_id); + YAHOO_SERVICE_IDDEACT, YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 3, identity); if (pkt) { yahoo_send_packet(yid, pkt, 0); @@ -3899,16 +4093,17 @@ void yahoo_set_identity_status(int id, const char *identity, int active) void yahoo_refresh(int id) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_USERSTAT, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); if (pkt) { yahoo_send_packet(yid, pkt, 0); yahoo_packet_free(pkt); @@ -3919,15 +4114,17 @@ void yahoo_refresh(int id) void yahoo_keepalive(int id) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_PING, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_send_packet(yid, pkt, 0); yahoo_packet_free(pkt); } @@ -3936,43 +4133,47 @@ void yahoo_keepalive(int id) void yahoo_chat_keepalive(int id) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CHATPING, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_send_packet(yid, pkt, 0); yahoo_packet_free(pkt); } #endif void yahoo_add_buddy(int id, const char *who, const char *group, - const char *msg) + const char *msg) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; - if (!yd->logged_in) + if (!yd->logged_in) { return; + } pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YPACKET_STATUS_DEFAULT, - yd->session_id); - if (msg != NULL) /* add message/request "it's me add me" */ + yd->session_id); + if (msg != NULL) { /* add message/request "it's me add me" */ yahoo_packet_hash(pkt, 14, msg); - else + } else { yahoo_packet_hash(pkt, 14, ""); + } yahoo_packet_hash(pkt, 65, group); yahoo_packet_hash(pkt, 97, "1"); yahoo_packet_hash(pkt, 1, yd->user); @@ -3989,16 +4190,17 @@ void yahoo_add_buddy(int id, const char *who, const char *group, void yahoo_remove_buddy(int id, const char *who, const char *group) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 7, who); @@ -4010,24 +4212,26 @@ void yahoo_remove_buddy(int id, const char *who, const char *group) void yahoo_confirm_buddy(int id, const char *who, int reject, const char *msg) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; - if (!yd->logged_in) + if (!yd->logged_in) { return; + } pkt = yahoo_packet_new(YAHOO_SERVICE_Y7_AUTHORIZATION, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 5, who); - if (reject) + if (reject) { yahoo_packet_hash(pkt, 13, "2"); - else { + } else { yahoo_packet_hash(pkt, 241, "0"); yahoo_packet_hash(pkt, 13, "1"); } @@ -4047,19 +4251,21 @@ void yahoo_confirm_buddy(int id, const char *who, int reject, const char *msg) void yahoo_ignore_buddy(int id, const char *who, int unignore) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; - if (!yd->logged_in) + if (!yd->logged_in) { return; + } pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 7, who); yahoo_packet_hash(pkt, 13, unignore ? "2" : "1"); @@ -4070,19 +4276,21 @@ void yahoo_ignore_buddy(int id, const char *who, int unignore) void yahoo_stealth_buddy(int id, const char *who, int unstealth) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; - if (!yd->logged_in) + if (!yd->logged_in) { return; + } pkt = yahoo_packet_new(YAHOO_SERVICE_STEALTH_PERM, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 7, who); yahoo_packet_hash(pkt, 31, unstealth ? "2" : "1"); @@ -4093,19 +4301,20 @@ void yahoo_stealth_buddy(int id, const char *who, int unstealth) #endif void yahoo_change_buddy_group(int id, const char *who, const char *old_group, - const char *new_group) + const char *new_group) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_Y7_CHANGE_GROUP, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 302, "240"); yahoo_packet_hash(pkt, 300, "240"); @@ -4123,16 +4332,17 @@ void yahoo_change_buddy_group(int id, const char *who, const char *old_group, void yahoo_group_rename(int id, const char *old_group, const char *new_group) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt = NULL; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_GROUPRENAME, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 65, old_group); yahoo_packet_hash(pkt, 67, new_group); @@ -4142,19 +4352,20 @@ void yahoo_group_rename(int id, const char *old_group, const char *new_group) } void yahoo_conference_addinvite(int id, const char *from, const char *who, - const char *room, const YList *members, const char *msg) + const char *room, const YList *members, const char *msg) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CONFADDINVITE, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 51, who); @@ -4162,8 +4373,8 @@ void yahoo_conference_addinvite(int id, const char *from, const char *who, yahoo_packet_hash(pkt, 58, msg); yahoo_packet_hash(pkt, 13, "0"); for (; members; members = members->next) { - yahoo_packet_hash(pkt, 52, (char *)members->data); - yahoo_packet_hash(pkt, 53, (char *)members->data); + yahoo_packet_hash(pkt, 52, (char *) members->data); + yahoo_packet_hash(pkt, 53, (char *) members->data); } /* 52, 53 -> other members? */ @@ -4174,24 +4385,25 @@ void yahoo_conference_addinvite(int id, const char *from, const char *who, #endif void yahoo_conference_invite(int id, const char *from, YList *who, - const char *room, const char *msg) + const char *room, const char *msg) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CONFINVITE, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 50, yd->user); for (; who; who = who->next) { - yahoo_packet_hash(pkt, 52, (char *)who->data); + yahoo_packet_hash(pkt, 52, (char *) who->data); } yahoo_packet_hash(pkt, 57, room); yahoo_packet_hash(pkt, 58, msg); @@ -4203,25 +4415,27 @@ void yahoo_conference_invite(int id, const char *from, YList *who, } void yahoo_conference_logon(int id, const char *from, YList *who, - const char *room) + const char *room) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CONFLOGON, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 3, (from ? from : yd->user)); yahoo_packet_hash(pkt, 57, room); - for (; who; who = who->next) - yahoo_packet_hash(pkt, 3, (char *)who->data); + for (; who; who = who->next) { + yahoo_packet_hash(pkt, 3, (char *) who->data); + } yahoo_send_packet(yid, pkt, 0); @@ -4229,24 +4443,26 @@ void yahoo_conference_logon(int id, const char *from, YList *who, } void yahoo_conference_decline(int id, const char *from, YList *who, - const char *room, const char *msg) + const char *room, const char *msg) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CONFDECLINE, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 3, (from ? from : yd->user)); - for (; who; who = who->next) - yahoo_packet_hash(pkt, 3, (char *)who->data); + for (; who; who = who->next) { + yahoo_packet_hash(pkt, 3, (char *) who->data); + } yahoo_packet_hash(pkt, 57, room); yahoo_packet_hash(pkt, 14, msg); @@ -4256,24 +4472,26 @@ void yahoo_conference_decline(int id, const char *from, YList *who, } void yahoo_conference_logoff(int id, const char *from, YList *who, - const char *room) + const char *room) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CONFLOGOFF, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 3, (from ? from : yd->user)); - for (; who; who = who->next) - yahoo_packet_hash(pkt, 3, (char *)who->data); + for (; who; who = who->next) { + yahoo_packet_hash(pkt, 3, (char *) who->data); + } yahoo_packet_hash(pkt, 57, room); @@ -4283,30 +4501,33 @@ void yahoo_conference_logoff(int id, const char *from, YList *who, } void yahoo_conference_message(int id, const char *from, YList *who, - const char *room, const char *msg, int utf8) + const char *room, const char *msg, int utf8) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CONFMSG, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 53, (from ? from : yd->user)); - for (; who; who = who->next) - yahoo_packet_hash(pkt, 53, (char *)who->data); + for (; who; who = who->next) { + yahoo_packet_hash(pkt, 53, (char *) who->data); + } yahoo_packet_hash(pkt, 57, room); yahoo_packet_hash(pkt, 14, msg); - if (utf8) + if (utf8) { yahoo_packet_hash(pkt, 97, "1"); + } yahoo_send_packet(yid, pkt, 0); @@ -4321,8 +4542,9 @@ void yahoo_get_chatrooms(int id, int chatroomid) char url[1024]; char buff[1024]; - if (!yd) + if (!yd) { return; + } yid = y_new0(struct yahoo_input_data, 1); yid->yd = yd; @@ -4330,11 +4552,11 @@ void yahoo_get_chatrooms(int id, int chatroomid) if (chatroomid == 0) { snprintf(url, 1024, - "http://insider.msg.yahoo.com/ycontent/?chatcat=0"); + "http://insider.msg.yahoo.com/ycontent/?chatcat=0"); } else { snprintf(url, 1024, - "http://insider.msg.yahoo.com/ycontent/?chatroom_%d=0", - chatroomid); + "http://insider.msg.yahoo.com/ycontent/?chatroom_%d=0", + chatroomid); } snprintf(buff, sizeof(buff), "Y=%s; T=%s", yd->cookie_y, yd->cookie_t); @@ -4342,24 +4564,25 @@ void yahoo_get_chatrooms(int id, int chatroomid) inputs = y_list_prepend(inputs, yid); yahoo_http_get(yid->yd->client_id, url, buff, 0, 0, - _yahoo_http_connected, yid); + _yahoo_http_connected, yid); } void yahoo_chat_logon(int id, const char *from, const char *room, - const char *roomid) + const char *roomid) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CHATONLINE, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 109, yd->user); @@ -4370,12 +4593,12 @@ void yahoo_chat_logon(int id, const char *from, const char *room, yahoo_packet_free(pkt); pkt = yahoo_packet_new(YAHOO_SERVICE_CHATJOIN, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 104, room); yahoo_packet_hash(pkt, 129, roomid); - yahoo_packet_hash(pkt, 62, "2"); /* ??? */ + yahoo_packet_hash(pkt, 62, "2"); /* ??? */ yahoo_send_packet(yid, pkt, 0); @@ -4383,21 +4606,22 @@ void yahoo_chat_logon(int id, const char *from, const char *room, } void yahoo_chat_message(int id, const char *from, const char *room, - const char *msg, const int msgtype, const int utf8) + const char *msg, const int msgtype, const int utf8) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; char buf[2]; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_COMMENT, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); yahoo_packet_hash(pkt, 104, room); @@ -4406,8 +4630,9 @@ void yahoo_chat_message(int id, const char *from, const char *room, snprintf(buf, sizeof(buf), "%d", msgtype); yahoo_packet_hash(pkt, 124, buf); - if (utf8) + if (utf8) { yahoo_packet_hash(pkt, 97, "1"); + } yahoo_send_packet(yid, pkt, 0); @@ -4417,17 +4642,18 @@ void yahoo_chat_message(int id, const char *from, const char *room, void yahoo_chat_logoff(int id, const char *from) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_CHATLOGOUT, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, (from ? from : yd->user)); @@ -4439,17 +4665,18 @@ void yahoo_chat_logoff(int id, const char *from) void yahoo_buddyicon_request(int id, const char *who) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YPACKET_STATUS_DEFAULT, - 0); + 0); yahoo_packet_hash(pkt, 4, yd->user); yahoo_packet_hash(pkt, 5, who); yahoo_packet_hash(pkt, 13, "1"); @@ -4459,23 +4686,24 @@ void yahoo_buddyicon_request(int id, const char *who) } void yahoo_send_picture_info(int id, const char *who, const char *url, - int checksum) + int checksum) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; char checksum_str[10]; - if (!yid) + if (!yid) { return; + } yd = yid->yd; snprintf(checksum_str, sizeof(checksum_str), "%d", checksum); pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YPACKET_STATUS_DEFAULT, - 0); + 0); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 4, yd->user); yahoo_packet_hash(pkt, 5, who); @@ -4490,20 +4718,21 @@ void yahoo_send_picture_info(int id, const char *who, const char *url, void yahoo_send_picture_update(int id, const char *who, int type) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; char type_str[10]; - if (!yid) + if (!yid) { return; + } yd = yid->yd; snprintf(type_str, sizeof(type_str), "%d", type); pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE_UPDATE, - YPACKET_STATUS_DEFAULT, 0); + YPACKET_STATUS_DEFAULT, 0); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 5, who); yahoo_packet_hash(pkt, 206, type_str); @@ -4515,23 +4744,25 @@ void yahoo_send_picture_update(int id, const char *who, int type) void yahoo_send_picture_checksum(int id, const char *who, int checksum) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; char checksum_str[10]; - if (!yid) + if (!yid) { return; + } yd = yid->yd; snprintf(checksum_str, sizeof(checksum_str), "%d", checksum); pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE_CHECKSUM, - YPACKET_STATUS_DEFAULT, 0); + YPACKET_STATUS_DEFAULT, 0); yahoo_packet_hash(pkt, 1, yd->user); - if (who != 0) + if (who != 0) { yahoo_packet_hash(pkt, 5, who); + } yahoo_packet_hash(pkt, 192, checksum_str); yahoo_packet_hash(pkt, 212, "1"); yahoo_send_packet(yid, pkt, 0); @@ -4542,26 +4773,28 @@ void yahoo_send_picture_checksum(int id, const char *who, int checksum) void yahoo_webcam_close_feed(int id, const char *who) { struct yahoo_input_data *yid = - find_input_by_id_and_webcam_user(id, who); + find_input_by_id_and_webcam_user(id, who); - if (yid) + if (yid) { yahoo_input_close(yid); + } } void yahoo_webcam_get_feed(int id, const char *who) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_data *yd; struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } - /* + /* * add the user to the queue. this is a dirty hack, since * the yahoo server doesn't tell us who's key it's returning, - * we have to just hope that it sends back keys in the same + * we have to just hope that it sends back keys in the same * order that we request them. * The queue is popped in yahoo_process_webcam_key */ @@ -4570,69 +4803,73 @@ void yahoo_webcam_get_feed(int id, const char *who) yd = yid->yd; pkt = yahoo_packet_new(YAHOO_SERVICE_WEBCAM, YPACKET_STATUS_DEFAULT, - yd->session_id); + yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); - if (who != NULL) + if (who != NULL) { yahoo_packet_hash(pkt, 5, who); + } yahoo_send_packet(yid, pkt, 0); yahoo_packet_free(pkt); } void yahoo_webcam_send_image(int id, unsigned char *image, unsigned int length, - unsigned int timestamp) + unsigned int timestamp) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_WEBCAM); + find_input_by_id_and_type(id, YAHOO_CONNECTION_WEBCAM); unsigned char *packet; unsigned char header_len = 13; unsigned int pos = 0; - if (!yid) + if (!yid) { return; + } packet = y_new0(unsigned char, header_len); packet[pos++] = header_len; packet[pos++] = 0; - packet[pos++] = 5; /* version byte?? */ + packet[pos++] = 5; /* version byte?? */ packet[pos++] = 0; pos += yahoo_put32(packet + pos, length); - packet[pos++] = 2; /* packet type, image */ + packet[pos++] = 2; /* packet type, image */ pos += yahoo_put32(packet + pos, timestamp); yahoo_add_to_send_queue(yid, packet, header_len); FREE(packet); - if (length) + if (length) { yahoo_add_to_send_queue(yid, image, length); + } } void yahoo_webcam_accept_viewer(int id, const char *who, int accept) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_WEBCAM); + find_input_by_id_and_type(id, YAHOO_CONNECTION_WEBCAM); char *packet = NULL; char *data = NULL; unsigned char header_len = 13; unsigned int pos = 0; unsigned int len = 0; - if (!yid) + if (!yid) { return; + } data = strdup("u="); - data = y_string_append(data, (char *)who); + data = y_string_append(data, (char *) who); data = y_string_append(data, "\r\n"); len = strlen(data); packet = y_new0(char, header_len + len); packet[pos++] = header_len; packet[pos++] = 0; - packet[pos++] = 5; /* version byte?? */ + packet[pos++] = 5; /* version byte?? */ packet[pos++] = 0; pos += yahoo_put32(packet + pos, len); - packet[pos++] = 0; /* packet type */ + packet[pos++] = 0; /* packet type */ pos += yahoo_put32(packet + pos, accept); memcpy(packet + pos, data, len); FREE(data); @@ -4643,14 +4880,15 @@ void yahoo_webcam_accept_viewer(int id, const char *who, int accept) void yahoo_webcam_invite(int id, const char *who) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_packet *pkt; - if (!yid) + if (!yid) { return; + } pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YPACKET_STATUS_NOTIFY, - yid->yd->session_id); + yid->yd->session_id); yahoo_packet_hash(pkt, 49, "WEBCAMINVITE"); yahoo_packet_hash(pkt, 14, " "); @@ -4663,7 +4901,7 @@ void yahoo_webcam_invite(int id, const char *who) } static void yahoo_search_internal(int id, int t, const char *text, int g, - int ar, int photo, int yahoo_only, int startpos, int total) + int ar, int photo, int yahoo_only, int startpos, int total) { struct yahoo_data *yd = find_conn_by_id(id); struct yahoo_input_data *yid; @@ -4671,8 +4909,9 @@ static void yahoo_search_internal(int id, int t, const char *text, int g, char buff[1024]; char *ctext, *p; - if (!yd) + if (!yd) { return; + } yid = y_new0(struct yahoo_input_data, 1); yid->yd = yd; @@ -4684,16 +4923,17 @@ static void yahoo_search_internal(int id, int t, const char *text, int g, */ snprintf(buff, sizeof(buff), "&.sq=%%20&.tt=%d&.ss=%d", total, - startpos); + startpos); ctext = strdup(text); - while ((p = strchr(ctext, ' '))) + while ((p = strchr(ctext, ' '))) { *p = '+'; + } snprintf(url, 1024, - "http://members.yahoo.com/interests?.oc=m&.kw=%s&.sb=%d&.g=%d&.ar=0%s%s%s", - ctext, t, g, photo ? "&.p=y" : "", yahoo_only ? "&.pg=y" : "", - startpos ? buff : ""); + "http://members.yahoo.com/interests?.oc=m&.kw=%s&.sb=%d&.g=%d&.ar=0%s%s%s", + ctext, t, g, photo ? "&.p=y" : "", yahoo_only ? "&.pg=y" : "", + startpos ? buff : ""); FREE(ctext); @@ -4701,22 +4941,24 @@ static void yahoo_search_internal(int id, int t, const char *text, int g, inputs = y_list_prepend(inputs, yid); yahoo_http_get(yid->yd->client_id, url, buff, 0, 0, - _yahoo_http_connected, yid); + _yahoo_http_connected, yid); } void yahoo_search(int id, enum yahoo_search_type t, const char *text, - enum yahoo_search_gender g, enum yahoo_search_agerange ar, int photo, - int yahoo_only) + enum yahoo_search_gender g, enum yahoo_search_agerange ar, int photo, + int yahoo_only) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_search_state *yss; - if (!yid) + if (!yid) { return; + } - if (!yid->ys) + if (!yid->ys) { yid->ys = y_new0(struct yahoo_search_state, 1); + } yss = yid->ys; @@ -4734,25 +4976,27 @@ void yahoo_search(int id, enum yahoo_search_type t, const char *text, void yahoo_search_again(int id, int start) { struct yahoo_input_data *yid = - find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); + find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); struct yahoo_search_state *yss; - if (!yid || !yid->ys) + if (!yid || !yid->ys) { return; + } yss = yid->ys; - if (start == -1) + if (start == -1) { start = yss->lsearch_nstart + yss->lsearch_nfound; + } yahoo_search_internal(id, yss->lsearch_type, yss->lsearch_text, - yss->lsearch_gender, yss->lsearch_agerange, - yss->lsearch_photo, yss->lsearch_yahoo_only, - start, yss->lsearch_ntotal); + yss->lsearch_gender, yss->lsearch_agerange, + yss->lsearch_photo, yss->lsearch_yahoo_only, + start, yss->lsearch_ntotal); } void yahoo_send_picture(int id, const char *name, unsigned long size, - yahoo_get_fd_callback callback, void *data) + yahoo_get_fd_callback callback, void *data) { /* Not Implemented */ } @@ -4795,19 +5039,21 @@ static char *yahoo_get_random(void) out[24] = '\0'; out[23] = '$'; out[22] = '$'; - + for (i = 0; i < 22; i++) { - if(r == 0) + if (r == 0) { r = rand(); + } - c = r%61; + c = r % 61; - if(c<26) + if (c < 26) { out[i] = c + 'a'; - else if (c<52) + } else if (c < 52) { out[i] = c - 26 + 'A'; - else + } else { out[i] = c - 52 + '0'; + } r /= 61; } @@ -4818,36 +5064,39 @@ static char *yahoo_get_random(void) static int _are_same_id(const void *sfd1, const void *id) { - return strcmp(((struct send_file_data *)sfd1)->id, (char *)id); + return strcmp(((struct send_file_data *) sfd1)->id, (char *) id); } static int _are_same_yid(const void *sfd1, const void *yid) { - if(((struct send_file_data *)sfd1)->yid == yid) + if (((struct send_file_data *) sfd1)->yid == yid) { return 0; - else + } else { return 1; + } } static struct send_file_data *yahoo_get_active_transfer(char *id) { YList *l = y_list_find_custom(active_file_transfers, id, - _are_same_id); + _are_same_id); + + if (l) { + return (struct send_file_data *) l->data; + } - if(l) - return (struct send_file_data *)l->data; - return NULL; } static struct send_file_data *yahoo_get_active_transfer_with_yid(void *yid) { YList *l = y_list_find_custom(active_file_transfers, yid, - _are_same_yid); + _are_same_yid); + + if (l) { + return (struct send_file_data *) l->data; + } - if(l) - return (struct send_file_data *)l->data; - return NULL; } @@ -4858,9 +5107,10 @@ static void yahoo_add_active_transfer(struct send_file_data *sfd) static void yahoo_remove_active_transfer(struct send_file_data *sfd) { - if (sfd == NULL) + if (sfd == NULL) { return; - + } + active_file_transfers = y_list_remove(active_file_transfers, sfd); free(sfd->id); free(sfd->who); @@ -4884,12 +5134,12 @@ static void _yahoo_ft_upload_connected(int id, void *fd, int error, void *data) yid->fd = fd; yid->read_tag = - YAHOO_CALLBACK(ext_yahoo_add_handler) (yid->yd->client_id, fd, - YAHOO_INPUT_READ, yid); + YAHOO_CALLBACK (ext_yahoo_add_handler) (yid->yd->client_id, fd, + YAHOO_INPUT_READ, yid); } static void yahoo_file_transfer_upload(struct yahoo_data *yd, - struct send_file_data *sfd) + struct send_file_data *sfd) { char url[256]; char buff[4096]; @@ -4908,14 +5158,14 @@ static void yahoo_file_transfer_upload(struct yahoo_data *yd, sender_enc = yahoo_urlencode(yd->user); recv_enc = yahoo_urlencode(sfd->who); - snprintf(url, sizeof(url), - "http://%s/relay?token=%s&sender=%s&recver=%s", sfd->ip_addr, - token_enc, sender_enc, recv_enc); + snprintf(url, sizeof(url), + "http://%s/relay?token=%s&sender=%s&recver=%s", sfd->ip_addr, + token_enc, sender_enc, recv_enc); snprintf(buff, sizeof(buff), "T=%s; Y=%s", yd->cookie_t, yd->cookie_y); yahoo_http_post(yd->client_id, url, buff, sfd->size, - _yahoo_ft_upload_connected, sfd); + _yahoo_ft_upload_connected, sfd); FREE(token_enc); FREE(sender_enc); @@ -4923,7 +5173,7 @@ static void yahoo_file_transfer_upload(struct yahoo_data *yd, } static void yahoo_init_ft_recv(struct yahoo_data *yd, - struct send_file_data *sfd) + struct send_file_data *sfd) { char url[256]; char buff[1024]; @@ -4942,14 +5192,14 @@ static void yahoo_init_ft_recv(struct yahoo_data *yd, sender_enc = yahoo_urlencode(sfd->who); recv_enc = yahoo_urlencode(yd->user); - snprintf(url, sizeof(url), - "http://%s/relay?token=%s&sender=%s&recver=%s", sfd->ip_addr, - token_enc, sender_enc, recv_enc); + snprintf(url, sizeof(url), + "http://%s/relay?token=%s&sender=%s&recver=%s", sfd->ip_addr, + token_enc, sender_enc, recv_enc); snprintf(buff, sizeof(buff), "Y=%s; T=%s", yd->cookie_y, yd->cookie_t); yahoo_http_head(yid->yd->client_id, url, buff, 0, NULL, - _yahoo_http_connected, yid); + _yahoo_http_connected, yid); FREE(token_enc); FREE(sender_enc); @@ -4957,12 +5207,12 @@ static void yahoo_init_ft_recv(struct yahoo_data *yd, } static void yahoo_file_transfer_accept(struct yahoo_input_data *yid, - struct send_file_data *sfd) + struct send_file_data *sfd) { struct yahoo_packet *pkt; pkt = yahoo_packet_new(YAHOO_SERVICE_Y7_FILETRANSFERACCEPT, - YPACKET_STATUS_DEFAULT, yid->yd->session_id); + YPACKET_STATUS_DEFAULT, yid->yd->session_id); yahoo_packet_hash(pkt, 1, yid->yd->user); yahoo_packet_hash(pkt, 5, sfd->who); @@ -4979,7 +5229,7 @@ static void yahoo_file_transfer_accept(struct yahoo_input_data *yid, } static void yahoo_process_filetransferaccept(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { YList *l; struct send_file_data *sfd; @@ -5015,18 +5265,17 @@ static void yahoo_process_filetransferaccept(struct yahoo_input_data *yid, sfd->token = strdup(token); yahoo_file_transfer_upload(yid->yd, sfd); - } - else { - YAHOO_CALLBACK(ext_yahoo_file_transfer_done) - (yid->yd->client_id, YAHOO_FILE_TRANSFER_UNKNOWN, - sfd ? sfd->data : NULL); + } else { + YAHOO_CALLBACK (ext_yahoo_file_transfer_done) + (yid->yd->client_id, YAHOO_FILE_TRANSFER_UNKNOWN, + sfd ? sfd->data : NULL); yahoo_remove_active_transfer(sfd); } } static void yahoo_process_filetransferinfo(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { YList *l; char *id = NULL; @@ -5069,28 +5318,27 @@ static void yahoo_process_filetransferinfo(struct yahoo_input_data *yid, sfd->ip_addr = strdup(ip_addr); yahoo_file_transfer_accept(yid, sfd); - } - else { - YAHOO_CALLBACK(ext_yahoo_file_transfer_done) - (yid->yd->client_id, YAHOO_FILE_TRANSFER_UNKNOWN, - sfd ? sfd->data : NULL); + } else { + YAHOO_CALLBACK (ext_yahoo_file_transfer_done) + (yid->yd->client_id, YAHOO_FILE_TRANSFER_UNKNOWN, + sfd ? sfd->data : NULL); yahoo_remove_active_transfer(sfd); } } static void yahoo_send_filetransferinfo(struct yahoo_data *yd, - struct send_file_data *sfd) + struct send_file_data *sfd) { struct yahoo_input_data *yid; struct yahoo_packet *pkt; yid = find_input_by_id_and_type(yd->client_id, YAHOO_CONNECTION_PAGER); - sfd->ip_addr = YAHOO_CALLBACK(ext_yahoo_get_ip_addr)("relay.yahoo.com"); + sfd->ip_addr = YAHOO_CALLBACK (ext_yahoo_get_ip_addr)("relay.yahoo.com"); if (!sfd->ip_addr) { - YAHOO_CALLBACK(ext_yahoo_file_transfer_done) - (yd->client_id, YAHOO_FILE_TRANSFER_RELAY, sfd->data); + YAHOO_CALLBACK (ext_yahoo_file_transfer_done) + (yd->client_id, YAHOO_FILE_TRANSFER_RELAY, sfd->data); yahoo_remove_active_transfer(sfd); @@ -5098,7 +5346,7 @@ static void yahoo_send_filetransferinfo(struct yahoo_data *yd, } pkt = yahoo_packet_new(YAHOO_SERVICE_Y7_FILETRANSFERINFO, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); yahoo_packet_hash(pkt, 1, yd->user); yahoo_packet_hash(pkt, 5, sfd->who); @@ -5113,7 +5361,7 @@ static void yahoo_send_filetransferinfo(struct yahoo_data *yd, } static void yahoo_process_filetransfer(struct yahoo_input_data *yid, - struct yahoo_packet *pkt) + struct yahoo_packet *pkt) { YList *l; char *who = NULL; @@ -5166,29 +5414,27 @@ static void yahoo_process_filetransfer(struct yahoo_input_data *yid, if (action == YAHOO_FILE_TRANSFER_INIT) { /* Received a FT request from buddy */ sfd = y_new0(struct send_file_data, 1); - + sfd->client_id = yd->client_id; sfd->id = strdup(id); sfd->who = strdup(who); sfd->filename = strdup(filename); sfd->size = size; - + yahoo_add_active_transfer(sfd); - YAHOO_CALLBACK(ext_yahoo_got_file) (yd->client_id, yd->user, - who, msg, filename, size, sfd->id); - } - else { + YAHOO_CALLBACK (ext_yahoo_got_file) (yd->client_id, yd->user, + who, msg, filename, size, sfd->id); + } else { /* Response to our request */ sfd = yahoo_get_active_transfer(id); if (sfd && action == YAHOO_FILE_TRANSFER_ACCEPT) { yahoo_send_filetransferinfo(yd, sfd); - } - else if (!sfd || action == YAHOO_FILE_TRANSFER_REJECT) { - YAHOO_CALLBACK(ext_yahoo_file_transfer_done) - (yd->client_id, YAHOO_FILE_TRANSFER_REJECT, - sfd ? sfd->data : NULL); + } else if (!sfd || action == YAHOO_FILE_TRANSFER_REJECT) { + YAHOO_CALLBACK (ext_yahoo_file_transfer_done) + (yd->client_id, YAHOO_FILE_TRANSFER_REJECT, + sfd ? sfd->data : NULL); yahoo_remove_active_transfer(sfd); } @@ -5197,15 +5443,15 @@ static void yahoo_process_filetransfer(struct yahoo_input_data *yid, #if 0 void yahoo_send_file(int id, const char *who, const char *msg, - const char *name, unsigned long size, - yahoo_get_fd_callback callback, void *data) + const char *name, unsigned long size, + yahoo_get_fd_callback callback, void *data) { struct yahoo_packet *pkt = NULL; char size_str[10]; struct yahoo_input_data *yid; struct yahoo_data *yd; struct send_file_data *sfd; - + yid = find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER); yd = find_conn_by_id(id); sfd = y_new0(struct send_file_data, 1); @@ -5220,11 +5466,12 @@ void yahoo_send_file(int id, const char *who, const char *msg, yahoo_add_active_transfer(sfd); - if (!yd) + if (!yd) { return; + } pkt = yahoo_packet_new(YAHOO_SERVICE_Y7_FILETRANSFER, - YPACKET_STATUS_DEFAULT, yd->session_id); + YPACKET_STATUS_DEFAULT, yd->session_id); snprintf(size_str, sizeof(size_str), "%ld", size); @@ -5250,7 +5497,7 @@ void yahoo_send_file_transfer_response(int client_id, int response, char *id, vo struct yahoo_packet *pkt = NULL; char resp[2]; struct yahoo_input_data *yid; - + struct send_file_data *sfd = yahoo_get_active_transfer(id); sfd->data = data; @@ -5258,7 +5505,7 @@ void yahoo_send_file_transfer_response(int client_id, int response, char *id, vo yid = find_input_by_id_and_type(client_id, YAHOO_CONNECTION_PAGER); pkt = yahoo_packet_new(YAHOO_SERVICE_Y7_FILETRANSFER, - YPACKET_STATUS_DEFAULT, yid->yd->session_id); + YPACKET_STATUS_DEFAULT, yid->yd->session_id); snprintf(resp, sizeof(resp), "%d", response); @@ -5271,8 +5518,9 @@ void yahoo_send_file_transfer_response(int client_id, int response, char *id, vo yahoo_packet_free(pkt); - if(response == YAHOO_FILE_TRANSFER_REJECT) + if (response == YAHOO_FILE_TRANSFER_REJECT) { yahoo_remove_active_transfer(sfd); + } } #endif @@ -5280,7 +5528,7 @@ static void yahoo_process_ft_connection(struct yahoo_input_data *yid, int over) { struct send_file_data *sfd; struct yahoo_data *yd = yid->yd; - + sfd = yahoo_get_active_transfer_with_yid(yid); if (!sfd) { @@ -5288,14 +5536,15 @@ static void yahoo_process_ft_connection(struct yahoo_input_data *yid, int over) return; } - /* + /* * We want to handle only the complete data with HEAD since we don't * want a situation where both the GET and HEAD are active. * With SEND, we really can't do much with partial response */ - if ((sfd->state == FT_STATE_HEAD || sfd->state == FT_STATE_SEND) - && !over) + if ((sfd->state == FT_STATE_HEAD || sfd->state == FT_STATE_SEND) + && !over) { return; + } if (sfd->state == FT_STATE_HEAD) { /* Do a GET */ @@ -5303,12 +5552,12 @@ static void yahoo_process_ft_connection(struct yahoo_input_data *yid, int over) char buff[1024]; char *sender_enc = NULL, *recv_enc = NULL, *token_enc = NULL; - struct yahoo_input_data *yid_ft = - y_new0(struct yahoo_input_data, 1); - + struct yahoo_input_data *yid_ft = + y_new0(struct yahoo_input_data, 1); + yid_ft->yd = yid->yd; yid_ft->type = YAHOO_CONNECTION_FT; - + inputs = y_list_prepend(inputs, yid_ft); sfd->yid = yid_ft; sfd->state = FT_STATE_RECV; @@ -5316,71 +5565,72 @@ static void yahoo_process_ft_connection(struct yahoo_input_data *yid, int over) token_enc = yahoo_urlencode(sfd->token); sender_enc = yahoo_urlencode(sfd->who); recv_enc = yahoo_urlencode(yd->user); - - snprintf(url, sizeof(url), - "http://%s/relay?token=%s&sender=%s&recver=%s", sfd->ip_addr, - token_enc, sender_enc, recv_enc); + + snprintf(url, sizeof(url), + "http://%s/relay?token=%s&sender=%s&recver=%s", sfd->ip_addr, + token_enc, sender_enc, recv_enc); snprintf(buff, sizeof(buff), "Y=%s; T=%s", yd->cookie_y, - yd->cookie_t); + yd->cookie_t); yahoo_http_get(yd->client_id, url, buff, 1, 1, - _yahoo_http_connected, yid_ft); + _yahoo_http_connected, yid_ft); FREE(token_enc); FREE(sender_enc); FREE(recv_enc); - } - else if (sfd->state == FT_STATE_RECV || - sfd->state == FT_STATE_RECV_START) { + } else if (sfd->state == FT_STATE_RECV || + sfd->state == FT_STATE_RECV_START) { unsigned char *data_begin = NULL; - if (yid->rxlen == 0) + if (yid->rxlen == 0) { yahoo_remove_active_transfer(sfd); + } if (sfd->state != FT_STATE_RECV_START && - (data_begin = - (unsigned char *)strstr((char *)yid->rxqueue, - "\r\n\r\n"))) { + (data_begin = + (unsigned char *) strstr((char *) yid->rxqueue, + "\r\n\r\n"))) { sfd->state = FT_STATE_RECV_START; - yid->rxlen -= 4+(data_begin-yid->rxqueue)/sizeof(char); + yid->rxlen -= 4 + (data_begin - yid->rxqueue) / sizeof(char); data_begin += 4; - if (yid->rxlen > 0) - YAHOO_CALLBACK(ext_yahoo_got_ft_data) - (yd->client_id, data_begin, - yid->rxlen, sfd->data); + if (yid->rxlen > 0) { + YAHOO_CALLBACK (ext_yahoo_got_ft_data) + (yd->client_id, data_begin, + yid->rxlen, sfd->data); + } + } else if (sfd->state == FT_STATE_RECV_START) { + YAHOO_CALLBACK (ext_yahoo_got_ft_data) (yd->client_id, + yid->rxqueue, yid->rxlen, sfd->data); } - else if (sfd->state == FT_STATE_RECV_START) - YAHOO_CALLBACK(ext_yahoo_got_ft_data) (yd->client_id, - yid->rxqueue, yid->rxlen, sfd->data); FREE(yid->rxqueue); yid->rxqueue = NULL; yid->rxlen = 0; - } - else if (sfd->state == FT_STATE_SEND) { + } else if (sfd->state == FT_STATE_SEND) { /* Sent file completed */ int len = 0; - char *off = strstr((char *)yid->rxqueue, "Content-Length: "); + char *off = strstr((char *) yid->rxqueue, "Content-Length: "); if (off) { off += 16; len = atoi(off); } - if (len < sfd->size) - YAHOO_CALLBACK(ext_yahoo_file_transfer_done) - (yd->client_id, - YAHOO_FILE_TRANSFER_FAILED, sfd->data); - else - YAHOO_CALLBACK(ext_yahoo_file_transfer_done) - (yd->client_id, - YAHOO_FILE_TRANSFER_DONE, sfd->data); + if (len < sfd->size) { + YAHOO_CALLBACK (ext_yahoo_file_transfer_done) + (yd->client_id, + YAHOO_FILE_TRANSFER_FAILED, sfd->data); + } else { + YAHOO_CALLBACK (ext_yahoo_file_transfer_done) + (yd->client_id, + YAHOO_FILE_TRANSFER_DONE, sfd->data); + } yahoo_remove_active_transfer(sfd); } @@ -5392,50 +5642,65 @@ static void yahoo_process_ft_connection(struct yahoo_input_data *yid, int over) enum yahoo_status yahoo_current_status(int id) { struct yahoo_data *yd = find_conn_by_id(id); - if (!yd) + + if (!yd) { return YAHOO_STATUS_OFFLINE; + } return yd->current_status; } const YList *yahoo_get_buddylist(int id) { struct yahoo_data *yd = find_conn_by_id(id); - if (!yd) + + if (!yd) { return NULL; + } return yd->buddies; } const YList *yahoo_get_ignorelist(int id) { struct yahoo_data *yd = find_conn_by_id(id); - if (!yd) + + if (!yd) { return NULL; + } return yd->ignore; } const YList *yahoo_get_identities(int id) { struct yahoo_data *yd = find_conn_by_id(id); - if (!yd) + + if (!yd) { return NULL; + } return yd->identities; } const char *yahoo_get_cookie(int id, const char *which) { struct yahoo_data *yd = find_conn_by_id(id); - if (!yd) + + if (!yd) { return NULL; - if (!strncasecmp(which, "y", 1)) + } + if (!strncasecmp(which, "y", 1)) { return yd->cookie_y; - if (!strncasecmp(which, "b", 1)) + } + if (!strncasecmp(which, "b", 1)) { return yd->cookie_b; - if (!strncasecmp(which, "t", 1)) + } + if (!strncasecmp(which, "t", 1)) { return yd->cookie_t; - if (!strncasecmp(which, "c", 1)) + } + if (!strncasecmp(which, "c", 1)) { return yd->cookie_c; - if (!strncasecmp(which, "login", 5)) + } + if (!strncasecmp(which, "login", 5)) { return yd->login_cookie; + } return NULL; } #endif diff --git a/protocols/yahoo/yahoo.c b/protocols/yahoo/yahoo.c index a736b05b..8048ef8f 100644 --- a/protocols/yahoo/yahoo.c +++ b/protocols/yahoo/yahoo.c @@ -34,28 +34,24 @@ #define BYAHOO_DEFAULT_GROUP "Buddies" /* A hack to handle removal of buddies not in the group "Buddies" correctly */ -struct byahoo_buddygroups -{ +struct byahoo_buddygroups { char *buddy; char *group; }; -struct byahoo_data -{ +struct byahoo_data { int y2_id; int current_status; gboolean logged_in; GSList *buddygroups; }; -struct byahoo_input_data -{ +struct byahoo_input_data { int h; void *d; }; -struct byahoo_conf_invitation -{ +struct byahoo_conf_invitation { char *name; struct groupchat *c; int yid; @@ -66,325 +62,321 @@ struct byahoo_conf_invitation static GSList *byahoo_inputs = NULL; static int byahoo_chat_id = 0; -static char *byahoo_strip( const char *in ) +static char *byahoo_strip(const char *in) { int len; - + /* This should get rid of the markup noise at the beginning of the string. */ - while( *in ) - { - if( g_strncasecmp( in, "<font", 5 ) == 0 || - g_strncasecmp( in, "<fade", 5 ) == 0 || - g_strncasecmp( in, "<alt", 4 ) == 0 ) - { - char *s = strchr( in, '>' ); - if( !s ) + while (*in) { + if (g_strncasecmp(in, "<font", 5) == 0 || + g_strncasecmp(in, "<fade", 5) == 0 || + g_strncasecmp(in, "<alt", 4) == 0) { + char *s = strchr(in, '>'); + if (!s) { break; - + } + in = s + 1; - } - else if( strncmp( in, "\e[", 2 ) == 0 ) - { + } else if (strncmp(in, "\e[", 2) == 0) { const char *s; - - for( s = in + 2; *s && *s != 'm'; s ++ ); - - if( *s != 'm' ) + + for (s = in + 2; *s && *s != 'm'; s++) { + ; + } + + if (*s != 'm') { break; - + } + in = s + 1; - } - else - { + } else { break; } } - + /* This is supposed to get rid of the noise at the end of the line. */ - len = strlen( in ); - while( len > 0 && ( in[len-1] == '>' || in[len-1] == 'm' ) ) - { + len = strlen(in); + while (len > 0 && (in[len - 1] == '>' || in[len - 1] == 'm')) { int blen = len; const char *search; - - if( in[len-1] == '>' ) + + if (in[len - 1] == '>') { search = "</"; - else + } else { search = "\e["; - + } + len -= 3; - while( len > 0 && strncmp( in + len, search, 2 ) != 0 ) - len --; - - if( len <= 0 && strncmp( in, search, 2 ) != 0 ) - { + while (len > 0 && strncmp(in + len, search, 2) != 0) { + len--; + } + + if (len <= 0 && strncmp(in, search, 2) != 0) { len = blen; break; } } - - return( g_strndup( in, len ) ); + + return(g_strndup(in, len)); } -static void byahoo_init( account_t *acc ) +static void byahoo_init(account_t *acc) { - set_add( &acc->set, "mail_notifications", "false", set_eval_bool, acc ); - + set_add(&acc->set, "mail_notifications", "false", set_eval_bool, acc); + acc->flags |= ACC_FLAG_AWAY_MESSAGE | ACC_FLAG_STATUS_MESSAGE; } -static void byahoo_login( account_t *acc ) +static void byahoo_login(account_t *acc) { - struct im_connection *ic = imcb_new( acc ); - struct byahoo_data *yd = ic->proto_data = g_new0( struct byahoo_data, 1 ); + struct im_connection *ic = imcb_new(acc); + struct byahoo_data *yd = ic->proto_data = g_new0(struct byahoo_data, 1); char *s; - + yd->logged_in = FALSE; yd->current_status = YAHOO_STATUS_AVAILABLE; - - if( ( s = strchr( acc->user, '@' ) ) && g_strcasecmp( s, "@yahoo.com" ) == 0 ) - imcb_error( ic, "Your Yahoo! username should just be a username. " - "Do not include any @domain part." ); - - imcb_log( ic, "Connecting" ); - yd->y2_id = yahoo_init( acc->user, acc->pass ); - yahoo_login( yd->y2_id, yd->current_status ); + + if ((s = strchr(acc->user, '@')) && g_strcasecmp(s, "@yahoo.com") == 0) { + imcb_error(ic, "Your Yahoo! username should just be a username. " + "Do not include any @domain part."); + } + + imcb_log(ic, "Connecting"); + yd->y2_id = yahoo_init(acc->user, acc->pass); + yahoo_login(yd->y2_id, yd->current_status); } -static void byahoo_logout( struct im_connection *ic ) +static void byahoo_logout(struct im_connection *ic) { struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data; GSList *l; - - while( ic->groupchats ) - imcb_chat_free( ic->groupchats->data ); - - for( l = yd->buddygroups; l; l = l->next ) - { + + while (ic->groupchats) { + imcb_chat_free(ic->groupchats->data); + } + + for (l = yd->buddygroups; l; l = l->next) { struct byahoo_buddygroups *bg = l->data; - - g_free( bg->buddy ); - g_free( bg->group ); - g_free( bg ); + + g_free(bg->buddy); + g_free(bg->group); + g_free(bg); } - g_slist_free( yd->buddygroups ); - - yahoo_logoff( yd->y2_id ); - - g_free( yd ); + g_slist_free(yd->buddygroups); + + yahoo_logoff(yd->y2_id); + + g_free(yd); } -static void byahoo_get_info(struct im_connection *ic, char *who) +static void byahoo_get_info(struct im_connection *ic, char *who) { /* Just make an URL and let the user fetch the info */ - imcb_log(ic, "%s\n%s: %s%s", _("User Info"), - _("For now, fetch yourself"), yahoo_get_profile_url(), - who); + imcb_log(ic, "%s\n%s: %s%s", _("User Info"), + _("For now, fetch yourself"), yahoo_get_profile_url(), + who); } -static int byahoo_buddy_msg( struct im_connection *ic, char *who, char *what, int flags ) +static int byahoo_buddy_msg(struct im_connection *ic, char *who, char *what, int flags) { struct byahoo_data *yd = ic->proto_data; - - yahoo_send_im( yd->y2_id, NULL, who, what, 1, 0 ); - + + yahoo_send_im(yd->y2_id, NULL, who, what, 1, 0); + return 1; } -static int byahoo_send_typing( struct im_connection *ic, char *who, int typing ) +static int byahoo_send_typing(struct im_connection *ic, char *who, int typing) { struct byahoo_data *yd = ic->proto_data; - - yahoo_send_typing( yd->y2_id, NULL, who, ( typing & OPT_TYPING ) != 0 ); - + + yahoo_send_typing(yd->y2_id, NULL, who, (typing & OPT_TYPING) != 0); + return 1; } -static void byahoo_set_away( struct im_connection *ic, char *state, char *msg ) +static void byahoo_set_away(struct im_connection *ic, char *state, char *msg) { struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data; - - if( state && msg == NULL ) - { + + if (state && msg == NULL) { /* Use these states only if msg doesn't contain additional info since away messages are only supported with CUSTOM. */ - if( g_strcasecmp( state, "Be Right Back" ) == 0 ) + if (g_strcasecmp(state, "Be Right Back") == 0) { yd->current_status = YAHOO_STATUS_BRB; - else if( g_strcasecmp( state, "Busy" ) == 0 ) + } else if (g_strcasecmp(state, "Busy") == 0) { yd->current_status = YAHOO_STATUS_BUSY; - else if( g_strcasecmp( state, "Not At Home" ) == 0 ) + } else if (g_strcasecmp(state, "Not At Home") == 0) { yd->current_status = YAHOO_STATUS_NOTATHOME; - else if( g_strcasecmp( state, "Not At Desk" ) == 0 ) + } else if (g_strcasecmp(state, "Not At Desk") == 0) { yd->current_status = YAHOO_STATUS_NOTATDESK; - else if( g_strcasecmp( state, "Not In Office" ) == 0 ) + } else if (g_strcasecmp(state, "Not In Office") == 0) { yd->current_status = YAHOO_STATUS_NOTINOFFICE; - else if( g_strcasecmp( state, "On Phone" ) == 0 ) + } else if (g_strcasecmp(state, "On Phone") == 0) { yd->current_status = YAHOO_STATUS_ONPHONE; - else if( g_strcasecmp( state, "On Vacation" ) == 0 ) + } else if (g_strcasecmp(state, "On Vacation") == 0) { yd->current_status = YAHOO_STATUS_ONVACATION; - else if( g_strcasecmp( state, "Out To Lunch" ) == 0 ) + } else if (g_strcasecmp(state, "Out To Lunch") == 0) { yd->current_status = YAHOO_STATUS_OUTTOLUNCH; - else if( g_strcasecmp( state, "Stepped Out" ) == 0 ) + } else if (g_strcasecmp(state, "Stepped Out") == 0) { yd->current_status = YAHOO_STATUS_STEPPEDOUT; - else if( g_strcasecmp( state, "Invisible" ) == 0 ) + } else if (g_strcasecmp(state, "Invisible") == 0) { yd->current_status = YAHOO_STATUS_INVISIBLE; - else + } else { yd->current_status = YAHOO_STATUS_CUSTOM; - } - else if( msg ) + } + } else if (msg) { yd->current_status = YAHOO_STATUS_CUSTOM; - else + } else { yd->current_status = YAHOO_STATUS_AVAILABLE; - - yahoo_set_away( yd->y2_id, yd->current_status, msg, state ? 2 : 0 ); + } + + yahoo_set_away(yd->y2_id, yd->current_status, msg, state ? 2 : 0); } -static GList *byahoo_away_states( struct im_connection *ic ) +static GList *byahoo_away_states(struct im_connection *ic) { static GList *m = NULL; - if( m == NULL ) - { - m = g_list_append( m, "Be Right Back" ); - m = g_list_append( m, "Busy" ); - m = g_list_append( m, "Not At Home" ); - m = g_list_append( m, "Not At Desk" ); - m = g_list_append( m, "Not In Office" ); - m = g_list_append( m, "On Phone" ); - m = g_list_append( m, "On Vacation" ); - m = g_list_append( m, "Out To Lunch" ); - m = g_list_append( m, "Stepped Out" ); - m = g_list_append( m, "Invisible" ); - } - + if (m == NULL) { + m = g_list_append(m, "Be Right Back"); + m = g_list_append(m, "Busy"); + m = g_list_append(m, "Not At Home"); + m = g_list_append(m, "Not At Desk"); + m = g_list_append(m, "Not In Office"); + m = g_list_append(m, "On Phone"); + m = g_list_append(m, "On Vacation"); + m = g_list_append(m, "Out To Lunch"); + m = g_list_append(m, "Stepped Out"); + m = g_list_append(m, "Invisible"); + } + return m; } -static void byahoo_keepalive( struct im_connection *ic ) +static void byahoo_keepalive(struct im_connection *ic) { struct byahoo_data *yd = ic->proto_data; - - yahoo_keepalive( yd->y2_id ); + + yahoo_keepalive(yd->y2_id); } -static void byahoo_add_buddy( struct im_connection *ic, char *who, char *group ) +static void byahoo_add_buddy(struct im_connection *ic, char *who, char *group) { struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data; bee_user_t *bu; - - if( group && ( bu = bee_user_by_handle( ic->bee, ic, who ) ) && bu->group ) - { + + if (group && (bu = bee_user_by_handle(ic->bee, ic, who)) && bu->group) { GSList *bgl; - + /* If the person is in our list already, this is a group change. */ - yahoo_change_buddy_group( yd->y2_id, who, bu->group->name, group ); - + yahoo_change_buddy_group(yd->y2_id, who, bu->group->name, group); + /* No idea how often people have people in multiple groups and BitlBee doesn't currently support this anyway .. but keep this struct up-to-date for now. */ - for( bgl = yd->buddygroups; bgl; bgl = bgl->next ) - { + for (bgl = yd->buddygroups; bgl; bgl = bgl->next) { struct byahoo_buddygroups *bg = bgl->data; - - if( g_strcasecmp( bg->buddy, who ) == 0 && - g_strcasecmp( bg->group, bu->group->name ) == 0 ) - { - g_free( bg->group ); - bg->group = g_strdup( group ); + + if (g_strcasecmp(bg->buddy, who) == 0 && + g_strcasecmp(bg->group, bu->group->name) == 0) { + g_free(bg->group); + bg->group = g_strdup(group); } } + } else { + yahoo_add_buddy(yd->y2_id, who, group ? group : BYAHOO_DEFAULT_GROUP, NULL); } - else - yahoo_add_buddy( yd->y2_id, who, group ? group : BYAHOO_DEFAULT_GROUP, NULL ); } -static void byahoo_remove_buddy( struct im_connection *ic, char *who, char *group ) +static void byahoo_remove_buddy(struct im_connection *ic, char *who, char *group) { struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data; GSList *bgl; - - yahoo_remove_buddy( yd->y2_id, who, BYAHOO_DEFAULT_GROUP ); - - for( bgl = yd->buddygroups; bgl; bgl = bgl->next ) - { + + yahoo_remove_buddy(yd->y2_id, who, BYAHOO_DEFAULT_GROUP); + + for (bgl = yd->buddygroups; bgl; bgl = bgl->next) { struct byahoo_buddygroups *bg = bgl->data; - - if( g_strcasecmp( bg->buddy, who ) == 0 ) - yahoo_remove_buddy( yd->y2_id, who, bg->group ); + + if (g_strcasecmp(bg->buddy, who) == 0) { + yahoo_remove_buddy(yd->y2_id, who, bg->group); + } } } -static void byahoo_chat_msg( struct groupchat *c, char *message, int flags ) +static void byahoo_chat_msg(struct groupchat *c, char *message, int flags) { struct byahoo_data *yd = (struct byahoo_data *) c->ic->proto_data; - - yahoo_conference_message( yd->y2_id, NULL, c->data, c->title, message, 1 ); + + yahoo_conference_message(yd->y2_id, NULL, c->data, c->title, message, 1); } -static void byahoo_chat_invite( struct groupchat *c, char *who, char *msg ) +static void byahoo_chat_invite(struct groupchat *c, char *who, char *msg) { struct byahoo_data *yd = (struct byahoo_data *) c->ic->proto_data; - - yahoo_conference_invite( yd->y2_id, NULL, c->data, c->title, msg ? msg : "" ); + + yahoo_conference_invite(yd->y2_id, NULL, c->data, c->title, msg ? msg : ""); } -static void byahoo_chat_leave( struct groupchat *c ) +static void byahoo_chat_leave(struct groupchat *c) { struct byahoo_data *yd = (struct byahoo_data *) c->ic->proto_data; - - yahoo_conference_logoff( yd->y2_id, NULL, c->data, c->title ); - imcb_chat_free( c ); + + yahoo_conference_logoff(yd->y2_id, NULL, c->data, c->title); + imcb_chat_free(c); } -static struct groupchat *byahoo_chat_with( struct im_connection *ic, char *who ) +static struct groupchat *byahoo_chat_with(struct im_connection *ic, char *who) { struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data; struct groupchat *c; char *roomname; YList *members; - - roomname = g_strdup_printf( "%s-Bee-%d", ic->acc->user, byahoo_chat_id ); - - c = imcb_chat_new( ic, roomname ); - imcb_chat_add_buddy( c, ic->acc->user ); - + + roomname = g_strdup_printf("%s-Bee-%d", ic->acc->user, byahoo_chat_id); + + c = imcb_chat_new(ic, roomname); + imcb_chat_add_buddy(c, ic->acc->user); + /* FIXME: Free this thing when the chat's destroyed. We can't *always* do this because it's not always created here. */ - c->data = members = g_new0( YList, 1 ); - members->data = g_strdup( who ); - - yahoo_conference_invite( yd->y2_id, NULL, members, roomname, "Please join my groupchat..." ); - - g_free( roomname ); - + c->data = members = g_new0(YList, 1); + members->data = g_strdup(who); + + yahoo_conference_invite(yd->y2_id, NULL, members, roomname, "Please join my groupchat..."); + + g_free(roomname); + return c; } -static void byahoo_auth_allow( struct im_connection *ic, const char *who ) +static void byahoo_auth_allow(struct im_connection *ic, const char *who) { struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data; - - yahoo_confirm_buddy( yd->y2_id, who, 0, "" ); + + yahoo_confirm_buddy(yd->y2_id, who, 0, ""); } -static void byahoo_auth_deny( struct im_connection *ic, const char *who ) +static void byahoo_auth_deny(struct im_connection *ic, const char *who) { struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data; - - yahoo_confirm_buddy( yd->y2_id, who, 1, "" ); + + yahoo_confirm_buddy(yd->y2_id, who, 1, ""); } -void byahoo_initmodule( ) +void byahoo_initmodule() { struct prpl *ret = g_new0(struct prpl, 1); + ret->name = "yahoo"; - ret->mms = 832; /* this guess taken from libotr UPGRADING file */ + ret->mms = 832; /* this guess taken from libotr UPGRADING file */ ret->init = byahoo_init; - + ret->login = byahoo_login; ret->keepalive = byahoo_keepalive; ret->logout = byahoo_logout; - + ret->buddy_msg = byahoo_buddy_msg; ret->get_info = byahoo_get_info; ret->away_states = byahoo_away_states; @@ -392,204 +384,196 @@ void byahoo_initmodule( ) ret->add_buddy = byahoo_add_buddy; ret->remove_buddy = byahoo_remove_buddy; ret->send_typing = byahoo_send_typing; - + ret->chat_msg = byahoo_chat_msg; ret->chat_invite = byahoo_chat_invite; ret->chat_leave = byahoo_chat_leave; ret->chat_with = byahoo_chat_with; ret->handle_cmp = g_strcasecmp; - + ret->auth_allow = byahoo_auth_allow; ret->auth_deny = byahoo_auth_deny; - + register_protocol(ret); } -static struct im_connection *byahoo_get_ic_by_id( int id ) +static struct im_connection *byahoo_get_ic_by_id(int id) { GSList *l; struct im_connection *ic; struct byahoo_data *yd; - - for( l = get_connections(); l; l = l->next ) - { + + for (l = get_connections(); l; l = l->next) { ic = l->data; yd = ic->proto_data; - - if( strcmp( ic->acc->prpl->name, "yahoo" ) == 0 && yd->y2_id == id ) - return( ic ); + + if (strcmp(ic->acc->prpl->name, "yahoo") == 0 && yd->y2_id == id) { + return(ic); + } } - - return( NULL ); + + return(NULL); } /* Now it's callback time! */ -struct byahoo_connect_callback_data -{ +struct byahoo_connect_callback_data { int fd; yahoo_connect_callback callback; gpointer data; int id; }; -void byahoo_connect_callback( gpointer data, gint source, b_input_condition cond ) +void byahoo_connect_callback(gpointer data, gint source, b_input_condition cond) { struct byahoo_connect_callback_data *d = data; - - if( !byahoo_get_ic_by_id( d->id ) ) - { - g_free( d ); + + if (!byahoo_get_ic_by_id(d->id)) { + g_free(d); return; } - - d->callback( NULL + d->fd, 0, d->data ); - g_free( d ); + + d->callback(NULL + d->fd, 0, d->data); + g_free(d); } -struct byahoo_read_ready_data -{ +struct byahoo_read_ready_data { int id; int fd; int tag; gpointer data; }; -gboolean byahoo_read_ready_callback( gpointer data, gint source, b_input_condition cond ) +gboolean byahoo_read_ready_callback(gpointer data, gint source, b_input_condition cond) { struct byahoo_read_ready_data *d = data; - - if( !byahoo_get_ic_by_id( d->id ) ) + + if (!byahoo_get_ic_by_id(d->id)) { /* WTF doesn't libyahoo clean this up? */ return FALSE; - - yahoo_read_ready( d->id, NULL + d->fd, d->data ); - + } + + yahoo_read_ready(d->id, NULL + d->fd, d->data); + return TRUE; } -struct byahoo_write_ready_data -{ +struct byahoo_write_ready_data { int id; int fd; int tag; gpointer data; }; -gboolean byahoo_write_ready_callback( gpointer data, gint source, b_input_condition cond ) +gboolean byahoo_write_ready_callback(gpointer data, gint source, b_input_condition cond) { struct byahoo_write_ready_data *d = data; - - return yahoo_write_ready( d->id, NULL + d->fd, d->data ); + + return yahoo_write_ready(d->id, NULL + d->fd, d->data); } -void ext_yahoo_login_response( int id, int succ, const char *url ) +void ext_yahoo_login_response(int id, int succ, const char *url) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); + struct im_connection *ic = byahoo_get_ic_by_id(id); struct byahoo_data *yd = NULL; - - if( ic == NULL ) - { + + if (ic == NULL) { /* libyahoo2 seems to call this one twice when something went wrong sometimes. Don't know why. Because we clean up the connection on the first failure, the second should be ignored. */ - + return; } - + yd = (struct byahoo_data *) ic->proto_data; - - if( succ == YAHOO_LOGIN_OK ) - { - imcb_connected( ic ); - + + if (succ == YAHOO_LOGIN_OK) { + imcb_connected(ic); + yd->logged_in = TRUE; - } - else - { + } else { char *errstr; int allow_reconnect = FALSE; - + yd->logged_in = FALSE; - - if( succ == YAHOO_LOGIN_UNAME ) + + if (succ == YAHOO_LOGIN_UNAME) { errstr = "Incorrect Yahoo! username"; - else if( succ == YAHOO_LOGIN_PASSWD ) + } else if (succ == YAHOO_LOGIN_PASSWD) { errstr = "Incorrect Yahoo! password"; - else if( succ == YAHOO_LOGIN_LOCK ) + } else if (succ == YAHOO_LOGIN_LOCK) { errstr = "Yahoo! account locked"; - else if( succ == 1236 ) + } else if (succ == 1236) { errstr = "Yahoo! account locked or machine temporarily banned"; - else if( succ == YAHOO_LOGIN_DUPL ) + } else if (succ == YAHOO_LOGIN_DUPL) { errstr = "Logged in on a different machine or device"; - else if( succ == YAHOO_LOGIN_SOCK ) - { + } else if (succ == YAHOO_LOGIN_SOCK) { errstr = "Socket problem"; allow_reconnect = TRUE; - } - else + } else { errstr = "Unknown error"; - - if( url && *url ) - imcb_error( ic, "Error %d (%s). See %s for more information.", succ, errstr, url ); - else - imcb_error( ic, "Error %d (%s)", succ, errstr ); - - imc_logout( ic, allow_reconnect ); + } + + if (url && *url) { + imcb_error(ic, "Error %d (%s). See %s for more information.", succ, errstr, url); + } else { + imcb_error(ic, "Error %d (%s)", succ, errstr); + } + + imc_logout(ic, allow_reconnect); } } -void ext_yahoo_got_buddies( int id, YList *buds ) +void ext_yahoo_got_buddies(int id, YList *buds) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); + struct im_connection *ic = byahoo_get_ic_by_id(id); struct byahoo_data *yd = ic->proto_data; YList *bl = buds; - - while( bl ) - { + + while (bl) { struct yahoo_buddy *b = bl->data; struct byahoo_buddygroups *bg; - - if( strcmp( b->group, BYAHOO_DEFAULT_GROUP ) != 0 ) - { - bg = g_new0( struct byahoo_buddygroups, 1 ); - - bg->buddy = g_strdup( b->id ); - bg->group = g_strdup( b->group ); - yd->buddygroups = g_slist_append( yd->buddygroups, bg ); + + if (strcmp(b->group, BYAHOO_DEFAULT_GROUP) != 0) { + bg = g_new0(struct byahoo_buddygroups, 1); + + bg->buddy = g_strdup(b->id); + bg->group = g_strdup(b->group); + yd->buddygroups = g_slist_append(yd->buddygroups, bg); } - - imcb_add_buddy( ic, b->id, b->group ); - imcb_rename_buddy( ic, b->id, b->real_name ); - + + imcb_add_buddy(ic, b->id, b->group); + imcb_rename_buddy(ic, b->id, b->real_name); + bl = bl->next; } } -void ext_yahoo_got_identities( int id, YList *ids ) +void ext_yahoo_got_identities(int id, YList *ids) { } -void ext_yahoo_got_cookies( int id ) +void ext_yahoo_got_cookies(int id) { } -void ext_yahoo_status_changed( int id, const char *who, int stat, const char *msg, int away, int idle, int mobile ) +void ext_yahoo_status_changed(int id, const char *who, int stat, const char *msg, int away, int idle, int mobile) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); + struct im_connection *ic = byahoo_get_ic_by_id(id); char *state_string = NULL; int flags = OPT_LOGGED_IN; - - if( away ) + + if (away) { flags |= OPT_AWAY; - if( mobile ) + } + if (mobile) { flags |= OPT_MOBILE; - - switch (stat) - { + } + + switch (stat) { case YAHOO_STATUS_BRB: state_string = "Be Right Back"; break; @@ -631,382 +615,393 @@ void ext_yahoo_status_changed( int id, const char *who, int stat, const char *ms flags = 0; break; } - - imcb_buddy_status( ic, who, flags, state_string, msg ); - - if( stat == YAHOO_STATUS_IDLE ) - imcb_buddy_times( ic, who, 0, idle ); + + imcb_buddy_status(ic, who, flags, state_string, msg); + + if (stat == YAHOO_STATUS_IDLE) { + imcb_buddy_times(ic, who, 0, idle); + } } -void ext_yahoo_got_buzz( int id, const char *me, const char *who, long tm ) +void ext_yahoo_got_buzz(int id, const char *me, const char *who, long tm) { } -void ext_yahoo_got_im( int id, const char *me, const char *who, const char *msg, long tm, int stat, int utf8 ) +void ext_yahoo_got_im(int id, const char *me, const char *who, const char *msg, long tm, int stat, int utf8) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); + struct im_connection *ic = byahoo_get_ic_by_id(id); char *m; - - if( msg ) - { - m = byahoo_strip( msg ); - imcb_buddy_msg( ic, (char*) who, (char*) m, 0, 0 ); - g_free( m ); + + if (msg) { + m = byahoo_strip(msg); + imcb_buddy_msg(ic, (char *) who, (char *) m, 0, 0); + g_free(m); } } -void ext_yahoo_got_file( int id, const char *ignored, const char *who, const char *msg, - const char *fname, unsigned long fesize, char *trid ) +void ext_yahoo_got_file(int id, const char *ignored, const char *who, const char *msg, + const char *fname, unsigned long fesize, char *trid) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - imcb_log( ic, "Got a file transfer (file = %s) from %s. Ignoring for now due to lack of support.", fname, who ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + imcb_log(ic, "Got a file transfer (file = %s) from %s. Ignoring for now due to lack of support.", fname, who); } -void ext_yahoo_got_ft_data( int id, const unsigned char *in, int len, void *data ) +void ext_yahoo_got_ft_data(int id, const unsigned char *in, int len, void *data) { } -void ext_yahoo_file_transfer_done( int id, int result, void *data ) +void ext_yahoo_file_transfer_done(int id, int result, void *data) { } -void ext_yahoo_typing_notify( int id, const char *ignored, const char *who, int stat ) +void ext_yahoo_typing_notify(int id, const char *ignored, const char *who, int stat) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - if( stat == 1 ) - imcb_buddy_typing( ic, (char*) who, OPT_TYPING ); - else - imcb_buddy_typing( ic, (char*) who, 0 ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + if (stat == 1) { + imcb_buddy_typing(ic, (char *) who, OPT_TYPING); + } else { + imcb_buddy_typing(ic, (char *) who, 0); + } } -void ext_yahoo_system_message( int id, const char *me, const char *who, const char *msg ) +void ext_yahoo_system_message(int id, const char *me, const char *who, const char *msg) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - imcb_log( ic, "Yahoo! system message: %s", msg ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + imcb_log(ic, "Yahoo! system message: %s", msg); } -void ext_yahoo_webcam_invite( int id, const char *ignored, const char *from ) +void ext_yahoo_webcam_invite(int id, const char *ignored, const char *from) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - imcb_log( ic, "Got a webcam invitation from %s. IRC+webcams is a no-no though...", from ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + imcb_log(ic, "Got a webcam invitation from %s. IRC+webcams is a no-no though...", from); } -void ext_yahoo_error( int id, const char *err, int fatal, int num ) +void ext_yahoo_error(int id, const char *err, int fatal, int num) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - imcb_error( ic, "%s", err ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + imcb_error(ic, "%s", err); } /* TODO: Clear up the mess of inp and d structures */ -int ext_yahoo_add_handler( int id, void *fd_, yahoo_input_condition cond, void *data ) +int ext_yahoo_add_handler(int id, void *fd_, yahoo_input_condition cond, void *data) { - struct byahoo_input_data *inp = g_new0( struct byahoo_input_data, 1 ); + struct byahoo_input_data *inp = g_new0(struct byahoo_input_data, 1); int fd = (long) fd_; - - if( cond == YAHOO_INPUT_READ ) - { - struct byahoo_read_ready_data *d = g_new0( struct byahoo_read_ready_data, 1 ); - + + if (cond == YAHOO_INPUT_READ) { + struct byahoo_read_ready_data *d = g_new0(struct byahoo_read_ready_data, 1); + d->id = id; d->fd = fd; d->data = data; - + inp->d = d; - d->tag = inp->h = b_input_add( fd, B_EV_IO_READ, (b_event_handler) byahoo_read_ready_callback, (gpointer) d ); - } - else if( cond == YAHOO_INPUT_WRITE ) - { - struct byahoo_write_ready_data *d = g_new0( struct byahoo_write_ready_data, 1 ); - + d->tag = inp->h = b_input_add(fd, B_EV_IO_READ, (b_event_handler) byahoo_read_ready_callback, + (gpointer) d); + } else if (cond == YAHOO_INPUT_WRITE) { + struct byahoo_write_ready_data *d = g_new0(struct byahoo_write_ready_data, 1); + d->id = id; d->fd = fd; d->data = data; - + inp->d = d; - d->tag = inp->h = b_input_add( fd, B_EV_IO_WRITE, (b_event_handler) byahoo_write_ready_callback, (gpointer) d ); - } - else - { - g_free( inp ); + d->tag = inp->h = + b_input_add(fd, B_EV_IO_WRITE, (b_event_handler) byahoo_write_ready_callback, + (gpointer) d); + } else { + g_free(inp); return -1; /* Panic... */ } - - byahoo_inputs = g_slist_append( byahoo_inputs, inp ); + + byahoo_inputs = g_slist_append(byahoo_inputs, inp); return inp->h; } -void ext_yahoo_remove_handler( int id, int tag ) +void ext_yahoo_remove_handler(int id, int tag) { struct byahoo_input_data *inp; GSList *l = byahoo_inputs; - - while( l ) - { + + while (l) { inp = l->data; - if( inp->h == tag ) - { - g_free( inp->d ); - g_free( inp ); - byahoo_inputs = g_slist_remove( byahoo_inputs, inp ); + if (inp->h == tag) { + g_free(inp->d); + g_free(inp); + byahoo_inputs = g_slist_remove(byahoo_inputs, inp); break; } l = l->next; } - - b_event_remove( tag ); + + b_event_remove(tag); } -int ext_yahoo_connect_async( int id, const char *host, int port, yahoo_connect_callback callback, void *data, int use_ssl ) +int ext_yahoo_connect_async(int id, const char *host, int port, yahoo_connect_callback callback, void *data, + int use_ssl) { struct byahoo_connect_callback_data *d; int fd; - - d = g_new0( struct byahoo_connect_callback_data, 1 ); - if( ( fd = proxy_connect( host, port, (b_event_handler) byahoo_connect_callback, (gpointer) d ) ) < 0 ) - { - g_free( d ); - return( fd ); + + d = g_new0(struct byahoo_connect_callback_data, 1); + if ((fd = proxy_connect(host, port, (b_event_handler) byahoo_connect_callback, (gpointer) d)) < 0) { + g_free(d); + return(fd); } d->fd = fd; d->callback = callback; d->data = data; d->id = id; - + return fd; } -char *ext_yahoo_get_ip_addr( const char *domain ) +char *ext_yahoo_get_ip_addr(const char *domain) { return NULL; } -int ext_yahoo_write( void *fd, char *buf, int len ) +int ext_yahoo_write(void *fd, char *buf, int len) { - return write( (long) fd, buf, len ); + return write((long) fd, buf, len); } -int ext_yahoo_read( void *fd, char *buf, int len ) +int ext_yahoo_read(void *fd, char *buf, int len) { - return read( (long) fd, buf, len ); + return read((long) fd, buf, len); } -void ext_yahoo_close( void *fd ) +void ext_yahoo_close(void *fd) { - close( (long) fd ); + close((long) fd); } -void ext_yahoo_got_buddy_change_group( int id, const char *me, const char *who, - const char *old_group, const char *new_group ) +void ext_yahoo_got_buddy_change_group(int id, const char *me, const char *who, + const char *old_group, const char *new_group) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - imcb_add_buddy( ic, who, new_group ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + imcb_add_buddy(ic, who, new_group); } -static void byahoo_accept_conf( void *data ) +static void byahoo_accept_conf(void *data) { struct byahoo_conf_invitation *inv = data; struct groupchat *b = NULL; GSList *l; - - for( l = inv->ic->groupchats; l; l = l->next ) - { + + for (l = inv->ic->groupchats; l; l = l->next) { b = l->data; - if( b == inv->c ) + if (b == inv->c) { break; + } } - - if( b != NULL ) - { - yahoo_conference_logon( inv->yid, NULL, inv->members, inv->name ); - imcb_chat_add_buddy( inv->c, inv->ic->acc->user ); - } - else - { - imcb_log( inv->ic, "Duplicate/corrupted invitation to `%s'.", inv->name ); + + if (b != NULL) { + yahoo_conference_logon(inv->yid, NULL, inv->members, inv->name); + imcb_chat_add_buddy(inv->c, inv->ic->acc->user); + } else { + imcb_log(inv->ic, "Duplicate/corrupted invitation to `%s'.", inv->name); } - - g_free( inv->name ); - g_free( inv ); + + g_free(inv->name); + g_free(inv); } -static void byahoo_reject_conf( void *data ) +static void byahoo_reject_conf(void *data) { struct byahoo_conf_invitation *inv = data; - - yahoo_conference_decline( inv->yid, NULL, inv->members, inv->name, "User rejected groupchat" ); - imcb_chat_free( inv->c ); - g_free( inv->name ); - g_free( inv ); + + yahoo_conference_decline(inv->yid, NULL, inv->members, inv->name, "User rejected groupchat"); + imcb_chat_free(inv->c); + g_free(inv->name); + g_free(inv); } -void ext_yahoo_got_conf_invite( int id, const char *ignored, - const char *who, const char *room, const char *msg, YList *members ) +void ext_yahoo_got_conf_invite(int id, const char *ignored, + const char *who, const char *room, const char *msg, YList *members) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); + struct im_connection *ic = byahoo_get_ic_by_id(id); struct byahoo_conf_invitation *inv; char txt[1024]; YList *m; - - if( g_strcasecmp( who, ic->acc->user ) == 0 ) + + if (g_strcasecmp(who, ic->acc->user) == 0) { /* WTF, Yahoo! seems to echo these now? */ return; - - inv = g_malloc( sizeof( struct byahoo_conf_invitation ) ); - memset( inv, 0, sizeof( struct byahoo_conf_invitation ) ); - inv->name = g_strdup( room ); - inv->c = imcb_chat_new( ic, (char*) room ); + } + + inv = g_malloc(sizeof(struct byahoo_conf_invitation)); + memset(inv, 0, sizeof(struct byahoo_conf_invitation)); + inv->name = g_strdup(room); + inv->c = imcb_chat_new(ic, (char *) room); inv->c->data = members; inv->yid = id; inv->members = members; inv->ic = ic; - - for( m = members; m; m = m->next ) - if( g_strcasecmp( m->data, ic->acc->user ) != 0 ) - imcb_chat_add_buddy( inv->c, m->data ); - - g_snprintf( txt, 1024, "Got an invitation to chatroom %s from %s: %s", room, who, msg ); - - imcb_ask( ic, txt, inv, byahoo_accept_conf, byahoo_reject_conf ); + + for (m = members; m; m = m->next) { + if (g_strcasecmp(m->data, ic->acc->user) != 0) { + imcb_chat_add_buddy(inv->c, m->data); + } + } + + g_snprintf(txt, 1024, "Got an invitation to chatroom %s from %s: %s", room, who, msg); + + imcb_ask(ic, txt, inv, byahoo_accept_conf, byahoo_reject_conf); } -void ext_yahoo_conf_userdecline( int id, const char *ignored, const char *who, const char *room, const char *msg ) +void ext_yahoo_conf_userdecline(int id, const char *ignored, const char *who, const char *room, const char *msg) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - imcb_log( ic, "Invite to chatroom %s rejected by %s: %s", room, who, msg ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + imcb_log(ic, "Invite to chatroom %s rejected by %s: %s", room, who, msg); } -void ext_yahoo_conf_userjoin( int id, const char *ignored, const char *who, const char *room ) +void ext_yahoo_conf_userjoin(int id, const char *ignored, const char *who, const char *room) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - struct groupchat *c = bee_chat_by_title( ic->bee, ic, room ); - - if( c ) - imcb_chat_add_buddy( c, (char*) who ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + struct groupchat *c = bee_chat_by_title(ic->bee, ic, room); + + if (c) { + imcb_chat_add_buddy(c, (char *) who); + } } -void ext_yahoo_conf_userleave( int id, const char *ignored, const char *who, const char *room ) +void ext_yahoo_conf_userleave(int id, const char *ignored, const char *who, const char *room) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - struct groupchat *c = bee_chat_by_title( ic->bee, ic, room ); - - if( c ) - imcb_chat_remove_buddy( c, (char*) who, "" ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + struct groupchat *c = bee_chat_by_title(ic->bee, ic, room); + + if (c) { + imcb_chat_remove_buddy(c, (char *) who, ""); + } } -void ext_yahoo_conf_message( int id, const char *ignored, const char *who, const char *room, const char *msg, int utf8 ) +void ext_yahoo_conf_message(int id, const char *ignored, const char *who, const char *room, const char *msg, int utf8) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - char *m = byahoo_strip( msg ); - struct groupchat *c = bee_chat_by_title( ic->bee, ic, room ); - - if( c ) - imcb_chat_msg( c, (char*) who, (char*) m, 0, 0 ); - g_free( m ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + char *m = byahoo_strip(msg); + struct groupchat *c = bee_chat_by_title(ic->bee, ic, room); + + if (c) { + imcb_chat_msg(c, (char *) who, (char *) m, 0, 0); + } + g_free(m); } -void ext_yahoo_chat_cat_xml( int id, const char *xml ) +void ext_yahoo_chat_cat_xml(int id, const char *xml) { } -void ext_yahoo_chat_join( int id, const char *who, const char *room, const char *topic, YList *members, void *fd ) +void ext_yahoo_chat_join(int id, const char *who, const char *room, const char *topic, YList *members, void *fd) { } -void ext_yahoo_chat_userjoin( int id, const char *me, const char *room, struct yahoo_chat_member *who ) +void ext_yahoo_chat_userjoin(int id, const char *me, const char *room, struct yahoo_chat_member *who) { free(who->id); free(who->alias); free(who->location); - free(who); + free(who); } -void ext_yahoo_chat_userleave( int id, const char *me, const char *room, const char *who ) +void ext_yahoo_chat_userleave(int id, const char *me, const char *room, const char *who) { } -void ext_yahoo_chat_message( int id, const char *me, const char *who, const char *room, const char *msg, int msgtype, int utf8 ) +void ext_yahoo_chat_message(int id, const char *me, const char *who, const char *room, const char *msg, int msgtype, + int utf8) { } -void ext_yahoo_chat_yahoologout( int id, const char *me ) +void ext_yahoo_chat_yahoologout(int id, const char *me) { } -void ext_yahoo_chat_yahooerror( int id, const char *me ) +void ext_yahoo_chat_yahooerror(int id, const char *me) { } -void ext_yahoo_contact_added( int id, const char *myid, const char *who, const char *msg ) +void ext_yahoo_contact_added(int id, const char *myid, const char *who, const char *msg) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - imcb_ask_auth( ic, who, msg ); + struct im_connection *ic = byahoo_get_ic_by_id(id); + + imcb_ask_auth(ic, who, msg); } -void ext_yahoo_rejected( int id, const char *who, const char *msg ) +void ext_yahoo_rejected(int id, const char *who, const char *msg) { } -void ext_yahoo_game_notify( int id, const char *me, const char *who, int stat, const char *msg ) +void ext_yahoo_game_notify(int id, const char *me, const char *who, int stat, const char *msg) { } -void ext_yahoo_mail_notify( int id, const char *from, const char *subj, int cnt ) +void ext_yahoo_mail_notify(int id, const char *from, const char *subj, int cnt) { - struct im_connection *ic = byahoo_get_ic_by_id( id ); - - if( !set_getbool( &ic->acc->set, "mail_notifications" ) ) + struct im_connection *ic = byahoo_get_ic_by_id(id); + + if (!set_getbool(&ic->acc->set, "mail_notifications")) { ; /* The user doesn't care. */ - else if( from && subj ) - imcb_log( ic, "Received e-mail message from %s with subject `%s'", from, subj ); - else if( cnt > 0 ) - imcb_log( ic, "Received %d new e-mails", cnt ); + } else if (from && subj) { + imcb_log(ic, "Received e-mail message from %s with subject `%s'", from, subj); + } else if (cnt > 0) { + imcb_log(ic, "Received %d new e-mails", cnt); + } } -void ext_yahoo_webcam_invite_reply( int id, const char *me, const char *from, int accept ) +void ext_yahoo_webcam_invite_reply(int id, const char *me, const char *from, int accept) { } -void ext_yahoo_webcam_closed( int id, const char *who, int reason ) +void ext_yahoo_webcam_closed(int id, const char *who, int reason) { } -void ext_yahoo_got_search_result( int id, int found, int start, int total, YList *contacts ) +void ext_yahoo_got_search_result(int id, int found, int start, int total, YList *contacts) { } -void ext_yahoo_webcam_viewer( int id, const char *who, int connect ) +void ext_yahoo_webcam_viewer(int id, const char *who, int connect) { } -void ext_yahoo_webcam_data_request( int id, int send ) +void ext_yahoo_webcam_data_request(int id, int send) { } -int ext_yahoo_log( const char *fmt, ... ) +int ext_yahoo_log(const char *fmt, ...) { - return( 0 ); + return(0); } -void ext_yahoo_got_webcam_image( int id, const char * who, const unsigned char *image, unsigned int image_size, unsigned int real_size, unsigned int timestamp ) +void ext_yahoo_got_webcam_image(int id, const char * who, const unsigned char *image, unsigned int image_size, + unsigned int real_size, unsigned int timestamp) { } -void ext_yahoo_got_ping( int id, const char *msg ) +void ext_yahoo_got_ping(int id, const char *msg) { } -void ext_yahoo_got_buddyicon (int id, const char *me, const char *who, const char *url, int checksum) {} -void ext_yahoo_got_buddyicon_checksum (int id, const char *me,const char *who, int checksum) {} +void ext_yahoo_got_buddyicon(int id, const char *me, const char *who, const char *url, int checksum) +{ +} +void ext_yahoo_got_buddyicon_checksum(int id, const char *me, const char *who, int checksum) +{ +} -void ext_yahoo_got_buddyicon_request(int id, const char *me, const char *who){} -void ext_yahoo_buddyicon_uploaded(int id, const char *url){} +void ext_yahoo_got_buddyicon_request(int id, const char *me, const char *who) +{ +} +void ext_yahoo_buddyicon_uploaded(int id, const char *url) +{ +} diff --git a/protocols/yahoo/yahoo2.h b/protocols/yahoo/yahoo2.h index 76180cd6..464672a1 100644 --- a/protocols/yahoo/yahoo2.h +++ b/protocols/yahoo/yahoo2.h @@ -29,34 +29,34 @@ extern "C" { /* *** BitlBee: *** */ #include "bitlbee.h" #undef free -#define free( x ) g_free( x ) +#define free(x) g_free(x) #undef malloc -#define malloc( x ) g_malloc( x ) +#define malloc(x) g_malloc(x) #undef calloc -#define calloc( x, y ) g_calloc( x, y ) +#define calloc(x, y) g_calloc(x, y) #undef realloc -#define realloc( x, y ) g_realloc( x, y ) +#define realloc(x, y) g_realloc(x, y) #undef strdup -#define strdup( x ) g_strdup( x ) +#define strdup(x) g_strdup(x) #undef strndup -#define strndup( x,y ) g_strndup( x,y ) +#define strndup(x, y) g_strndup(x, y) #undef snprintf // #define snprintf( x... ) g_snprintf( x ) #undef strcasecmp -#define strcasecmp( x,y ) g_strcasecmp( x,y ) +#define strcasecmp(x, y) g_strcasecmp(x, y) #undef strncasecmp -#define strncasecmp( x,y,z ) g_strncasecmp( x,y,z ) +#define strncasecmp(x, y, z) g_strncasecmp(x, y, z) #include "yahoo2_types.h" /* returns the socket descriptor object for a given pager connection. shouldn't be needed */ - void *yahoo_get_fd(int id); +void *yahoo_get_fd(int id); /* says how much logging to do */ /* see yahoo2_types.h for the different values */ - int yahoo_set_log_level(enum yahoo_log_level level); - enum yahoo_log_level yahoo_get_log_level(void); +int yahoo_set_log_level(enum yahoo_log_level level); +enum yahoo_log_level yahoo_get_log_level(void); /* these functions should be self explanatory */ /* who always means the buddy you're acting on */ @@ -66,14 +66,14 @@ extern "C" { /* or 0 on failure */ /* you must call init before calling any other function */ /* - * The optional parameters to init are key/value pairs that specify + * The optional parameters to init are key/value pairs that specify * server settings to use. This list must be NULL terminated - even * if the list is empty. If a parameter isn't set, a default value * will be used. Parameter keys are strings, parameter values are * either strings or ints, depending on the key. Values passed in * are copied, so you can use const/auto/static/pointers/whatever * you want. Parameters are: - * NAME TYPE DEFAULT + * NAME TYPE DEFAULT * pager_host char * scs.msg.yahoo.com * pager_port int 5050 * filetransfer_host char * filetransfer.msg.yahoo.com @@ -86,158 +86,158 @@ extern "C" { * * You should set at least local_host if you intend to use webcams */ - int yahoo_init_with_attributes(const char *username, - const char *password, ...); +int yahoo_init_with_attributes(const char *username, + const char *password, ...); /* yahoo_init does the same as yahoo_init_with_attributes, assuming defaults * for all attributes */ - int yahoo_init(const char *username, const char *password); +int yahoo_init(const char *username, const char *password); /* release all resources held by this session */ /* you need to call yahoo_close for a session only if * yahoo_logoff is never called for it (ie, it was never logged in) */ - void yahoo_close(int id); +void yahoo_close(int id); /* login logs in to the server */ /* initial is of type enum yahoo_status. see yahoo2_types.h */ - void yahoo_login(int id, int initial); - void yahoo_logoff(int id); +void yahoo_login(int id, int initial); +void yahoo_logoff(int id); /* reloads status of all buddies */ - void yahoo_refresh(int id); +void yahoo_refresh(int id); /* activates/deactivates an identity */ - void yahoo_set_identity_status(int id, const char *identity, - int active); +void yahoo_set_identity_status(int id, const char *identity, + int active); /* regets the entire buddy list from the server */ - void yahoo_get_list(int id); +void yahoo_get_list(int id); /* download buddy contact information from your yahoo addressbook */ - void yahoo_get_yab(int id); +void yahoo_get_yab(int id); /* add/modify an address book entry. if yab->dbid is set, it will */ /* modify that entry else it creates a new entry */ - void yahoo_set_yab(int id, struct yab *yab); - void yahoo_keepalive(int id); - void yahoo_chat_keepalive(int id); +void yahoo_set_yab(int id, struct yab *yab); +void yahoo_keepalive(int id); +void yahoo_chat_keepalive(int id); /* from is the identity you're sending from. if NULL, the default is used */ /* utf8 is whether msg is a utf8 string or not. */ - void yahoo_send_im(int id, const char *from, const char *who, - const char *msg, int utf8, int picture); +void yahoo_send_im(int id, const char *from, const char *who, + const char *msg, int utf8, int picture); // void yahoo_send_buzz(int id, const char *from, const char *who); /* if type is true, send typing notice, else send stopped typing notice */ - void yahoo_send_typing(int id, const char *from, const char *who, - int typ); +void yahoo_send_typing(int id, const char *from, const char *who, + int typ); /* used to set away/back status. */ /* away says whether the custom message is an away message or a sig */ - void yahoo_set_away(int id, enum yahoo_status state, const char *msg, - int away); - - void yahoo_add_buddy(int id, const char *who, const char *group, - const char *msg); - void yahoo_remove_buddy(int id, const char *who, const char *group); - void yahoo_confirm_buddy(int id, const char *who, int reject, - const char *msg); - void yahoo_stealth_buddy(int id, const char *who, int unstealth); +void yahoo_set_away(int id, enum yahoo_status state, const char *msg, + int away); + +void yahoo_add_buddy(int id, const char *who, const char *group, + const char *msg); +void yahoo_remove_buddy(int id, const char *who, const char *group); +void yahoo_confirm_buddy(int id, const char *who, int reject, + const char *msg); +void yahoo_stealth_buddy(int id, const char *who, int unstealth); /* if unignore is true, unignore, else ignore */ - void yahoo_ignore_buddy(int id, const char *who, int unignore); - void yahoo_change_buddy_group(int id, const char *who, - const char *old_group, const char *new_group); - void yahoo_group_rename(int id, const char *old_group, - const char *new_group); - - void yahoo_conference_invite(int id, const char *from, YList *who, - const char *room, const char *msg); - void yahoo_conference_addinvite(int id, const char *from, - const char *who, const char *room, const YList *members, - const char *msg); - void yahoo_conference_decline(int id, const char *from, YList *who, - const char *room, const char *msg); - void yahoo_conference_message(int id, const char *from, YList *who, - const char *room, const char *msg, int utf8); - void yahoo_conference_logon(int id, const char *from, YList *who, - const char *room); - void yahoo_conference_logoff(int id, const char *from, YList *who, - const char *room); +void yahoo_ignore_buddy(int id, const char *who, int unignore); +void yahoo_change_buddy_group(int id, const char *who, + const char *old_group, const char *new_group); +void yahoo_group_rename(int id, const char *old_group, + const char *new_group); + +void yahoo_conference_invite(int id, const char *from, YList *who, + const char *room, const char *msg); +void yahoo_conference_addinvite(int id, const char *from, + const char *who, const char *room, const YList *members, + const char *msg); +void yahoo_conference_decline(int id, const char *from, YList *who, + const char *room, const char *msg); +void yahoo_conference_message(int id, const char *from, YList *who, + const char *room, const char *msg, int utf8); +void yahoo_conference_logon(int id, const char *from, YList *who, + const char *room); +void yahoo_conference_logoff(int id, const char *from, YList *who, + const char *room); /* Get a list of chatrooms */ - void yahoo_get_chatrooms(int id, int chatroomid); +void yahoo_get_chatrooms(int id, int chatroomid); /* join room with specified roomname and roomid */ - void yahoo_chat_logon(int id, const char *from, const char *room, - const char *roomid); +void yahoo_chat_logon(int id, const char *from, const char *room, + const char *roomid); /* Send message "msg" to room with specified roomname, msgtype is 1-normal message or 2-/me mesage */ - void yahoo_chat_message(int id, const char *from, const char *room, - const char *msg, const int msgtype, const int utf8); +void yahoo_chat_message(int id, const char *from, const char *room, + const char *msg, const int msgtype, const int utf8); /* Log off chat */ - void yahoo_chat_logoff(int id, const char *from); +void yahoo_chat_logoff(int id, const char *from); /* requests a webcam feed */ /* who is the person who's webcam you would like to view */ /* if who is null, then you're the broadcaster */ - void yahoo_webcam_get_feed(int id, const char *who); - void yahoo_webcam_close_feed(int id, const char *who); +void yahoo_webcam_get_feed(int id, const char *who); +void yahoo_webcam_close_feed(int id, const char *who); /* sends an image when uploading */ /* image points to a JPEG-2000 image, length is the length of the image */ /* in bytes. The timestamp is the time in milliseconds since we started the */ /* webcam. */ - void yahoo_webcam_send_image(int id, unsigned char *image, - unsigned int length, unsigned int timestamp); +void yahoo_webcam_send_image(int id, unsigned char *image, + unsigned int length, unsigned int timestamp); /* this function should be called if we want to allow a user to watch the */ /* webcam. Who is the user we want to accept. */ /* Accept user (accept = 1), decline user (accept = 0) */ - void yahoo_webcam_accept_viewer(int id, const char *who, int accept); +void yahoo_webcam_accept_viewer(int id, const char *who, int accept); /* send an invitation to a user to view your webcam */ - void yahoo_webcam_invite(int id, const char *who); +void yahoo_webcam_invite(int id, const char *who); /* will set up a connection and initiate file transfer. * callback will be called with the fd that you should write * the file data to */ - void yahoo_send_file(int id, const char *who, const char *msg, - const char *name, unsigned long size, - yahoo_get_fd_callback callback, void *data); +void yahoo_send_file(int id, const char *who, const char *msg, + const char *name, unsigned long size, + yahoo_get_fd_callback callback, void *data); /* * Respond to a file transfer request. Be sure to provide the callback data * since that is your only chance to recognize future callbacks */ - void yahoo_send_file_transfer_response(int client_id, int response, - char *id, void *data); +void yahoo_send_file_transfer_response(int client_id, int response, + char *id, void *data); /* send a search request */ - void yahoo_search(int id, enum yahoo_search_type t, const char *text, - enum yahoo_search_gender g, enum yahoo_search_agerange ar, - int photo, int yahoo_only); +void yahoo_search(int id, enum yahoo_search_type t, const char *text, + enum yahoo_search_gender g, enum yahoo_search_agerange ar, + int photo, int yahoo_only); /* continue last search * should be called if only (start+found >= total) * * where the above three are passed to ext_yahoo_got_search_result */ - void yahoo_search_again(int id, int start); +void yahoo_search_again(int id, int start); /* these should be called when input is available on a fd */ /* registered by ext_yahoo_add_handler */ /* if these return negative values, errno may be set */ - int yahoo_read_ready(int id, void *fd, void *data); - int yahoo_write_ready(int id, void *fd, void *data); +int yahoo_read_ready(int id, void *fd, void *data); +int yahoo_write_ready(int id, void *fd, void *data); /* utility functions. these do not hit the server */ - enum yahoo_status yahoo_current_status(int id); - const YList *yahoo_get_buddylist(int id); - const YList *yahoo_get_ignorelist(int id); - const YList *yahoo_get_identities(int id); +enum yahoo_status yahoo_current_status(int id); +const YList *yahoo_get_buddylist(int id); +const YList *yahoo_get_ignorelist(int id); +const YList *yahoo_get_identities(int id); /* 'which' could be y, t, c or login. This may change in later versions. */ - const char *yahoo_get_cookie(int id, const char *which); +const char *yahoo_get_cookie(int id, const char *which); /* returns the url used to get user profiles - you must append the user id */ /* as of now this is http://profiles.yahoo.com/ */ /* You'll have to do urlencoding yourself, but see yahoo_httplib.h first */ - const char *yahoo_get_profile_url(void); +const char *yahoo_get_profile_url(void); - void yahoo_buddyicon_request(int id, const char *who); +void yahoo_buddyicon_request(int id, const char *who); #include "yahoo_httplib.h" diff --git a/protocols/yahoo/yahoo2_callbacks.h b/protocols/yahoo/yahoo2_callbacks.h index 4e635cb1..740417ee 100644 --- a/protocols/yahoo/yahoo2_callbacks.h +++ b/protocols/yahoo/yahoo2_callbacks.h @@ -44,17 +44,17 @@ extern "C" { * Callback interface for libyahoo2 */ - typedef enum { - YAHOO_INPUT_READ = 1 << 0, - YAHOO_INPUT_WRITE = 1 << 1, - YAHOO_INPUT_EXCEPTION = 1 << 2 - } yahoo_input_condition; +typedef enum { + YAHOO_INPUT_READ = 1 << 0, + YAHOO_INPUT_WRITE = 1 << 1, + YAHOO_INPUT_EXCEPTION = 1 << 2 +} yahoo_input_condition; /* * A callback function called when an asynchronous connect completes. - * + * * Params: - * fd - The file descriptor object that has been connected, or NULL on + * fd - The file descriptor object that has been connected, or NULL on * error * error - The value of errno set by the call to connect or 0 if no error * Set both fd and error to 0 if the connect was cancelled by the @@ -62,8 +62,8 @@ extern "C" { * callback_data - the callback_data passed to the ext_yahoo_connect_async * function */ - typedef void (*yahoo_connect_callback) (void *fd, int error, - void *callback_data); +typedef void (*yahoo_connect_callback) (void *fd, int error, + void *callback_data); /* * The following functions need to be implemented in the client @@ -71,7 +71,7 @@ extern "C" { * event occurs. */ -/* +/* * should we use a callback structure or directly call functions * if you want the structure, you *must* define USE_STRUCT_CALLBACKS * both when you compile the library, and when you compile your code @@ -79,251 +79,252 @@ extern "C" { */ #ifdef USE_STRUCT_CALLBACKS -#define YAHOO_CALLBACK_TYPE(x) (*x) +#define YAHOO_CALLBACK_TYPE(x) (*x) struct yahoo_callbacks { #else -#define YAHOO_CALLBACK_TYPE(x) x +#define YAHOO_CALLBACK_TYPE(x) x #endif /* * Name: ext_yahoo_login_response - * Called when the login process is complete + * Called when the login process is complete * Params: - * id - the id that identifies the server connection - * succ - enum yahoo_login_status - * url - url to reactivate account if locked + * id - the id that identifies the server connection + * succ - enum yahoo_login_status + * url - url to reactivate account if locked */ void YAHOO_CALLBACK_TYPE(ext_yahoo_login_response) (int id, int succ, - const char *url); + const char *url); /* * Name: ext_yahoo_got_buddies - * Called when the contact list is got from the server + * Called when the contact list is got from the server * Params: - * id - the id that identifies the server connection - * buds - the buddy list + * id - the id that identifies the server connection + * buds - the buddy list */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_buddies) (int id, YList *buds); /* * Name: ext_yahoo_got_ignore - * Called when the ignore list is got from the server + * Called when the ignore list is got from the server * Params: - * id - the id that identifies the server connection - * igns - the ignore list + * id - the id that identifies the server connection + * igns - the ignore list */ // void YAHOO_CALLBACK_TYPE(ext_yahoo_got_ignore) (int id, YList *igns); /* * Name: ext_yahoo_got_identities - * Called when the contact list is got from the server + * Called when the contact list is got from the server * Params: - * id - the id that identifies the server connection - * ids - the identity list + * id - the id that identifies the server connection + * ids - the identity list */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_identities) (int id, YList *ids); /* * Name: ext_yahoo_got_cookies - * Called when the cookie list is got from the server + * Called when the cookie list is got from the server * Params: - * id - the id that identifies the server connection + * id - the id that identifies the server connection */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_cookies) (int id); /* * Name: ext_yahoo_got_ping - * Called when the ping packet is received from the server + * Called when the ping packet is received from the server * Params: - * id - the id that identifies the server connection + * id - the id that identifies the server connection * errormsg - optional error message */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_ping) (int id, - const char *errormsg); + const char *errormsg); /* * Name: ext_yahoo_status_changed - * Called when remote user's status changes. - * Params: - * id - the id that identifies the server connection - * who - the handle of the remote user - * stat - status code (enum yahoo_status) - * msg - the message if stat == YAHOO_STATUS_CUSTOM - * away - whether the contact is away or not (YAHOO_STATUS_CUSTOM) - * idle - this is the number of seconds he is idle [if he is idle] + * Called when remote user's status changes. + * Params: + * id - the id that identifies the server connection + * who - the handle of the remote user + * stat - status code (enum yahoo_status) + * msg - the message if stat == YAHOO_STATUS_CUSTOM + * away - whether the contact is away or not (YAHOO_STATUS_CUSTOM) + * idle - this is the number of seconds he is idle [if he is idle] * mobile - this is set for mobile users/buddies * TODO: add support for pager, chat, and game states */ void YAHOO_CALLBACK_TYPE(ext_yahoo_status_changed) (int id, - const char *who, int stat, const char *msg, int away, int idle, - int mobile); + const char *who, int stat, const char *msg, int away, + int idle, + int mobile); /* * Name: ext_yahoo_got_buzz - * Called when remote user sends you a buzz. + * Called when remote user sends you a buzz. * Params: - * id - the id that identifies the server connection - * me - the identity the message was sent to - * who - the handle of the remote user - * tm - timestamp of message if offline + * id - the id that identifies the server connection + * me - the identity the message was sent to + * who - the handle of the remote user + * tm - timestamp of message if offline */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_buzz) (int id, const char *me, - const char *who, long tm); + const char *who, long tm); /* * Name: ext_yahoo_got_im - * Called when remote user sends you a message. - * Params: - * id - the id that identifies the server connection - * me - the identity the message was sent to - * who - the handle of the remote user - * msg - the message - NULL if stat == 2 - * tm - timestamp of message if offline - * stat - message status - 0 - * 1 - * 2 == error sending message - * 5 - * utf8 - whether the message is encoded as utf8 or not + * Called when remote user sends you a message. + * Params: + * id - the id that identifies the server connection + * me - the identity the message was sent to + * who - the handle of the remote user + * msg - the message - NULL if stat == 2 + * tm - timestamp of message if offline + * stat - message status - 0 + * 1 + * 2 == error sending message + * 5 + * utf8 - whether the message is encoded as utf8 or not */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_im) (int id, const char *me, - const char *who, const char *msg, long tm, int stat, int utf8); + const char *who, const char *msg, long tm, int stat, int utf8); /* * Name: ext_yahoo_got_conf_invite - * Called when remote user sends you a conference invitation. + * Called when remote user sends you a conference invitation. * Params: - * id - the id that identifies the server connection - * me - the identity the invitation was sent to - * who - the user inviting you - * room - the room to join - * msg - the message + * id - the id that identifies the server connection + * me - the identity the invitation was sent to + * who - the user inviting you + * room - the room to join + * msg - the message * members - the initial members of the conference (null terminated list) */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_conf_invite) (int id, - const char *me, const char *who, const char *room, - const char *msg, YList *members); + const char *me, const char *who, const char *room, + const char *msg, YList *members); /* * Name: ext_yahoo_conf_userdecline - * Called when someone declines to join the conference. + * Called when someone declines to join the conference. * Params: - * id - the id that identifies the server connection - * me - the identity in the conference - * who - the user who has declined - * room - the room - * msg - the declining message + * id - the id that identifies the server connection + * me - the identity in the conference + * who - the user who has declined + * room - the room + * msg - the declining message */ void YAHOO_CALLBACK_TYPE(ext_yahoo_conf_userdecline) (int id, - const char *me, const char *who, const char *room, - const char *msg); + const char *me, const char *who, const char *room, + const char *msg); /* * Name: ext_yahoo_conf_userjoin - * Called when someone joins the conference. + * Called when someone joins the conference. * Params: - * id - the id that identifies the server connection - * me - the identity in the conference - * who - the user who has joined - * room - the room joined + * id - the id that identifies the server connection + * me - the identity in the conference + * who - the user who has joined + * room - the room joined */ void YAHOO_CALLBACK_TYPE(ext_yahoo_conf_userjoin) (int id, - const char *me, const char *who, const char *room); + const char *me, const char *who, const char *room); /* * Name: ext_yahoo_conf_userleave - * Called when someone leaves the conference. + * Called when someone leaves the conference. * Params: - * id - the id that identifies the server connection - * me - the identity in the conference - * who - the user who has left - * room - the room left + * id - the id that identifies the server connection + * me - the identity in the conference + * who - the user who has left + * room - the room left */ void YAHOO_CALLBACK_TYPE(ext_yahoo_conf_userleave) (int id, - const char *me, const char *who, const char *room); + const char *me, const char *who, const char *room); /* * Name: ext_yahoo_chat_cat_xml - * Called when ? + * Called when ? * Params: - * id - the id that identifies the server connection - * xml - ? + * id - the id that identifies the server connection + * xml - ? */ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_cat_xml) (int id, - const char *xml); + const char *xml); /* * Name: ext_yahoo_chat_join - * Called when joining the chatroom. - * Params: - * id - the id that identifies the server connection - * me - the identity in the chatroom - * room - the room joined, used in all other chat calls, freed by - * library after call - * topic - the topic of the room, freed by library after call - * members - the initial members of the chatroom (null terminated YList + * Called when joining the chatroom. + * Params: + * id - the id that identifies the server connection + * me - the identity in the chatroom + * room - the room joined, used in all other chat calls, freed by + * library after call + * topic - the topic of the room, freed by library after call + * members - the initial members of the chatroom (null terminated YList * of yahoo_chat_member's) Must be freed by the client * fd - the object where the connection is coming from (for tracking) */ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_join) (int id, const char *me, - const char *room, const char *topic, YList *members, void *fd); + const char *room, const char *topic, YList *members, void *fd); /* * Name: ext_yahoo_chat_userjoin - * Called when someone joins the chatroom. + * Called when someone joins the chatroom. * Params: - * id - the id that identifies the server connection - * me - the identity in the chatroom - * room - the room joined - * who - the user who has joined, Must be freed by the client + * id - the id that identifies the server connection + * me - the identity in the chatroom + * room - the room joined + * who - the user who has joined, Must be freed by the client */ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_userjoin) (int id, - const char *me, const char *room, - struct yahoo_chat_member *who); + const char *me, const char *room, + struct yahoo_chat_member *who); /* * Name: ext_yahoo_chat_userleave - * Called when someone leaves the chatroom. + * Called when someone leaves the chatroom. * Params: - * id - the id that identifies the server connection - * me - the identity in the chatroom - * room - the room left - * who - the user who has left (Just the User ID) + * id - the id that identifies the server connection + * me - the identity in the chatroom + * room - the room left + * who - the user who has left (Just the User ID) */ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_userleave) (int id, - const char *me, const char *room, const char *who); + const char *me, const char *room, const char *who); /* * Name: ext_yahoo_chat_message - * Called when someone messages in the chatroom. + * Called when someone messages in the chatroom. * Params: - * id - the id that identifies the server connection - * me - the identity in the chatroom - * room - the room - * who - the user who messaged (Just the user id) - * msg - the message - * msgtype - 1 = Normal message - * 2 = /me type message - * utf8 - whether the message is utf8 encoded or not + * id - the id that identifies the server connection + * me - the identity in the chatroom + * room - the room + * who - the user who messaged (Just the user id) + * msg - the message + * msgtype - 1 = Normal message + * 2 = /me type message + * utf8 - whether the message is utf8 encoded or not */ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_message) (int id, - const char *me, const char *who, const char *room, - const char *msg, int msgtype, int utf8); + const char *me, const char *who, const char *room, + const char *msg, int msgtype, int utf8); /* * * Name: ext_yahoo_chat_yahoologout * called when yahoo disconnects your chat session * Note this is called whenver a disconnect happens, client or server - * requested. Care should be taken to make sure you know the origin + * requested. Care should be taken to make sure you know the origin * of the disconnect request before doing anything here (auto-join's etc) * Params: * id - the id that identifies this connection - * me - the identity in the chatroom + * me - the identity in the chatroom * Returns: * nothing. */ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_yahoologout) (int id, - const char *me); + const char *me); /* * @@ -331,43 +332,43 @@ struct yahoo_callbacks { * called when yahoo sends back an error to you * Note this is called whenver chat message is sent into a room * in error (fd not connected, room doesn't exists etc) - * Care should be taken to make sure you know the origin + * Care should be taken to make sure you know the origin * of the error before doing anything about it. * Params: * id - the id that identifies this connection - * me - the identity in the chatroom + * me - the identity in the chatroom * Returns: * nothing. */ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_yahooerror) (int id, - const char *me); + const char *me); /* * Name: ext_yahoo_conf_message - * Called when someone messages in the conference. + * Called when someone messages in the conference. * Params: - * id - the id that identifies the server connection - * me - the identity the conf message was sent to - * who - the user who messaged - * room - the room - * msg - the message - * utf8 - whether the message is utf8 encoded or not + * id - the id that identifies the server connection + * me - the identity the conf message was sent to + * who - the user who messaged + * room - the room + * msg - the message + * utf8 - whether the message is utf8 encoded or not */ void YAHOO_CALLBACK_TYPE(ext_yahoo_conf_message) (int id, - const char *me, const char *who, const char *room, - const char *msg, int utf8); + const char *me, const char *who, const char *room, + const char *msg, int utf8); /* * Name: ext_yahoo_got_file - * Called when someone sends you a file - * Params: - * id - the id that identifies the server connection - * me - the identity the file was sent to - * who - the user who sent the file - * msg - the message - * fname- the file name if direct transfer - * fsize- the file size if direct transfer - * trid - transfer id. Unique for this transfer + * Called when someone sends you a file + * Params: + * id - the id that identifies the server connection + * me - the identity the file was sent to + * who - the user who sent the file + * msg - the message + * fname- the file name if direct transfer + * fsize- the file size if direct transfer + * trid - transfer id. Unique for this transfer * * NOTE: Subsequent callbacks for file transfer do not send all of this * information again since it is wasteful. Implementations are expected to @@ -375,158 +376,159 @@ struct yahoo_callbacks { * confirmation is sent */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_file) (int id, const char *me, - const char *who, const char *msg, const char *fname, - unsigned long fesize, char *trid); + const char *who, const char *msg, const char *fname, + unsigned long fesize, char *trid); /* * Name: ext_yahoo_got_ft_data - * Called multiple times when parts of the file are received + * Called multiple times when parts of the file are received * Params: - * id - the id that identifies the server connection - * in - The data - * len - Length of the data - * data - callback data + * id - the id that identifies the server connection + * in - The data + * len - Length of the data + * data - callback data */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_ft_data) (int id, - const unsigned char *in, int len, void *data); + const unsigned char *in, int len, void *data); /* * Name: ext_yahoo_file_transfer_done - * File transfer is done + * File transfer is done * Params: - * id - the id that identifies the server connection - * result - To notify if it finished successfully or with a failure - * data - callback data + * id - the id that identifies the server connection + * result - To notify if it finished successfully or with a failure + * data - callback data */ void YAHOO_CALLBACK_TYPE(ext_yahoo_file_transfer_done) (int id, - int result, void *data); + int result, void *data); /* * Name: ext_yahoo_contact_added - * Called when a contact is added to your list + * Called when a contact is added to your list * Params: - * id - the id that identifies the server connection - * myid - the identity he was added to - * who - who was added - * msg - any message sent + * id - the id that identifies the server connection + * myid - the identity he was added to + * who - who was added + * msg - any message sent */ void YAHOO_CALLBACK_TYPE(ext_yahoo_contact_added) (int id, - const char *myid, const char *who, const char *msg); + const char *myid, const char *who, const char *msg); /* * Name: ext_yahoo_rejected - * Called when a contact rejects your add + * Called when a contact rejects your add * Params: - * id - the id that identifies the server connection - * who - who rejected you - * msg - any message sent + * id - the id that identifies the server connection + * who - who rejected you + * msg - any message sent */ void YAHOO_CALLBACK_TYPE(ext_yahoo_rejected) (int id, const char *who, - const char *msg); + const char *msg); /* * Name: ext_yahoo_typing_notify - * Called when remote user starts or stops typing. + * Called when remote user starts or stops typing. * Params: - * id - the id that identifies the server connection - * me - the handle of the identity the notification is sent to - * who - the handle of the remote user - * stat - 1 if typing, 0 if stopped typing + * id - the id that identifies the server connection + * me - the handle of the identity the notification is sent to + * who - the handle of the remote user + * stat - 1 if typing, 0 if stopped typing */ void YAHOO_CALLBACK_TYPE(ext_yahoo_typing_notify) (int id, - const char *me, const char *who, int stat); + const char *me, const char *who, int stat); /* * Name: ext_yahoo_game_notify - * Called when remote user starts or stops a game. + * Called when remote user starts or stops a game. * Params: - * id - the id that identifies the server connection - * me - the handle of the identity the notification is sent to - * who - the handle of the remote user - * stat - 1 if game, 0 if stopped gaming - * msg - game description and/or other text + * id - the id that identifies the server connection + * me - the handle of the identity the notification is sent to + * who - the handle of the remote user + * stat - 1 if game, 0 if stopped gaming + * msg - game description and/or other text */ void YAHOO_CALLBACK_TYPE(ext_yahoo_game_notify) (int id, const char *me, - const char *who, int stat, const char *msg); + const char *who, int stat, const char *msg); /* * Name: ext_yahoo_mail_notify - * Called when you receive mail, or with number of messages + * Called when you receive mail, or with number of messages * Params: - * id - the id that identifies the server connection - * from - who the mail is from - NULL if only mail count - * subj - the subject of the mail - NULL if only mail count - * cnt - mail count - 0 if new mail notification + * id - the id that identifies the server connection + * from - who the mail is from - NULL if only mail count + * subj - the subject of the mail - NULL if only mail count + * cnt - mail count - 0 if new mail notification */ void YAHOO_CALLBACK_TYPE(ext_yahoo_mail_notify) (int id, - const char *from, const char *subj, int cnt); + const char *from, const char *subj, int cnt); /* * Name: ext_yahoo_system_message - * System message + * System message * Params: - * id - the id that identifies the server connection - * me - the handle of the identity the notification is sent to - * who - the source of the system message (there are different types) - * msg - the message + * id - the id that identifies the server connection + * me - the handle of the identity the notification is sent to + * who - the source of the system message (there are different types) + * msg - the message */ void YAHOO_CALLBACK_TYPE(ext_yahoo_system_message) (int id, - const char *me, const char *who, const char *msg); + const char *me, const char *who, const char *msg); /* * Name: ext_yahoo_got_buddyicon - * Buddy icon received + * Buddy icon received * Params: - * id - the id that identifies the server connection - * me - the handle of the identity the notification is sent to - * who - the person the buddy icon is for - * url - the url to use to load the icon - * checksum - the checksum of the icon content + * id - the id that identifies the server connection + * me - the handle of the identity the notification is sent to + * who - the person the buddy icon is for + * url - the url to use to load the icon + * checksum - the checksum of the icon content */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_buddyicon) (int id, - const char *me, const char *who, const char *url, int checksum); + const char *me, const char *who, const char *url, + int checksum); /* * Name: ext_yahoo_got_buddyicon_checksum - * Buddy icon checksum received + * Buddy icon checksum received * Params: - * id - the id that identifies the server connection - * me - the handle of the identity the notification is sent to - * who - the yahoo id of the buddy icon checksum is for - * checksum - the checksum of the icon content + * id - the id that identifies the server connection + * me - the handle of the identity the notification is sent to + * who - the yahoo id of the buddy icon checksum is for + * checksum - the checksum of the icon content */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_buddyicon_checksum) (int id, - const char *me, const char *who, int checksum); + const char *me, const char *who, int checksum); /* * Name: ext_yahoo_got_buddyicon_request - * Buddy icon request received + * Buddy icon request received * Params: - * id - the id that identifies the server connection - * me - the handle of the identity the notification is sent to - * who - the yahoo id of the buddy that requested the buddy icon + * id - the id that identifies the server connection + * me - the handle of the identity the notification is sent to + * who - the yahoo id of the buddy that requested the buddy icon */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_buddyicon_request) (int id, - const char *me, const char *who); + const char *me, const char *who); /* * Name: ext_yahoo_got_buddyicon_request - * Buddy icon request received + * Buddy icon request received * Params: - * id - the id that identifies the server connection - * url - remote url, the uploaded buddy icon can be fetched from + * id - the id that identifies the server connection + * url - remote url, the uploaded buddy icon can be fetched from */ void YAHOO_CALLBACK_TYPE(ext_yahoo_buddyicon_uploaded) (int id, - const char *url); + const char *url); /* * Name: ext_yahoo_got_webcam_image - * Called when you get a webcam update + * Called when you get a webcam update * An update can either be receiving an image, a part of an image or * just an update with a timestamp * Params: - * id - the id that identifies the server connection - * who - the user who's webcam we're viewing + * id - the id that identifies the server connection + * who - the user who's webcam we're viewing * image - image data * image_size - length of the image in bytes * real_size - actual length of image data @@ -543,39 +545,39 @@ struct yahoo_callbacks { * a timestamp to stay in sync */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_webcam_image) (int id, - const char *who, const unsigned char *image, - unsigned int image_size, unsigned int real_size, - unsigned int timestamp); + const char *who, const unsigned char *image, + unsigned int image_size, unsigned int real_size, + unsigned int timestamp); /* * Name: ext_yahoo_webcam_invite - * Called when you get a webcam invitation + * Called when you get a webcam invitation * Params: - * id - the id that identifies the server connection - * me - identity the invitation is to - * from - who the invitation is from + * id - the id that identifies the server connection + * me - identity the invitation is to + * from - who the invitation is from */ void YAHOO_CALLBACK_TYPE(ext_yahoo_webcam_invite) (int id, - const char *me, const char *from); + const char *me, const char *from); /* * Name: ext_yahoo_webcam_invite_reply - * Called when you get a response to a webcam invitation + * Called when you get a response to a webcam invitation * Params: - * id - the id that identifies the server connection - * me - identity the invitation response is to - * from - who the invitation response is from + * id - the id that identifies the server connection + * me - identity the invitation response is to + * from - who the invitation response is from * accept - 0 (decline), 1 (accept) */ void YAHOO_CALLBACK_TYPE(ext_yahoo_webcam_invite_reply) (int id, - const char *me, const char *from, int accept); + const char *me, const char *from, int accept); /* * Name: ext_yahoo_webcam_closed - * Called when the webcam connection closed + * Called when the webcam connection closed * Params: - * id - the id that identifies the server connection - * who - the user who we where connected to + * id - the id that identifies the server connection + * who - the user who we where connected to * reason - reason why the connection closed * 1 = user stopped broadcasting * 2 = user cancelled viewing permission @@ -583,34 +585,34 @@ struct yahoo_callbacks { * 4 = user does not have webcam online */ void YAHOO_CALLBACK_TYPE(ext_yahoo_webcam_closed) (int id, - const char *who, int reason); + const char *who, int reason); /* * Name: ext_yahoo_got_search_result * Called when the search result received from server * Params: - * id - the id that identifies the server connection - * found - total number of results returned in the current result set - * start - offset from where the current result set starts - * total - total number of results available (start + found <= total) - * contacts - the list of results as a YList of yahoo_found_contact - * these will be freed after this function returns, so - * if you need to use the information, make a copy + * id - the id that identifies the server connection + * found - total number of results returned in the current result set + * start - offset from where the current result set starts + * total - total number of results available (start + found <= total) + * contacts - the list of results as a YList of yahoo_found_contact + * these will be freed after this function returns, so + * if you need to use the information, make a copy */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_search_result) (int id, - int found, int start, int total, YList *contacts); + int found, int start, int total, YList *contacts); /* * Name: ext_yahoo_error - * Called on error. + * Called on error. * Params: - * id - the id that identifies the server connection - * err - the error message - * fatal- whether this error is fatal to the connection or not - * num - Which error is this + * id - the id that identifies the server connection + * err - the error message + * fatal- whether this error is fatal to the connection or not + * num - Which error is this */ void YAHOO_CALLBACK_TYPE(ext_yahoo_error) (int id, const char *err, - int fatal, int num); + int fatal, int num); /* * Name: ext_yahoo_webcam_viewer @@ -621,7 +623,7 @@ struct yahoo_callbacks { * connect - 0=disconnect 1=connect 2=request */ void YAHOO_CALLBACK_TYPE(ext_yahoo_webcam_viewer) (int id, - const char *who, int connect); + const char *who, int connect); /* * Name: ext_yahoo_webcam_data_request @@ -631,137 +633,138 @@ struct yahoo_callbacks { * send - whether to send images or not */ void YAHOO_CALLBACK_TYPE(ext_yahoo_webcam_data_request) (int id, - int send); + int send); /* * Name: ext_yahoo_log - * Called to log a message. + * Called to log a message. * Params: - * fmt - the printf formatted message + * fmt - the printf formatted message * Returns: - * 0 + * 0 */ int YAHOO_CALLBACK_TYPE(ext_yahoo_log) (const char *fmt, ...); /* * Name: ext_yahoo_add_handler - * Add a listener for the fd. Must call yahoo_read_ready - * when a YAHOO_INPUT_READ fd is ready and yahoo_write_ready - * when a YAHOO_INPUT_WRITE fd is ready. - * Params: - * id - the id that identifies the server connection - * fd - the fd object on which to listen - * cond - the condition on which to call the callback - * data - callback data to pass to yahoo_*_ready - * + * Add a listener for the fd. Must call yahoo_read_ready + * when a YAHOO_INPUT_READ fd is ready and yahoo_write_ready + * when a YAHOO_INPUT_WRITE fd is ready. + * Params: + * id - the id that identifies the server connection + * fd - the fd object on which to listen + * cond - the condition on which to call the callback + * data - callback data to pass to yahoo_*_ready + * * Returns: a tag to be used when removing the handler */ int YAHOO_CALLBACK_TYPE(ext_yahoo_add_handler) (int id, void *fd, - yahoo_input_condition cond, void *data); + yahoo_input_condition cond, void *data); /* * Name: ext_yahoo_remove_handler - * Remove the listener for the fd. + * Remove the listener for the fd. * Params: - * id - the id that identifies the connection - * tag - the handler tag to remove + * id - the id that identifies the connection + * tag - the handler tag to remove */ void YAHOO_CALLBACK_TYPE(ext_yahoo_remove_handler) (int id, int tag); /* * Name: ext_yahoo_connect - * Connect to a host:port + * Connect to a host:port * Params: - * host - the host to connect to - * port - the port to connect on + * host - the host to connect to + * port - the port to connect on * Returns: - * a unix file descriptor to the socket + * a unix file descriptor to the socket */ // int YAHOO_CALLBACK_TYPE(ext_yahoo_connect) (const char *host, int port); /* * Name: ext_yahoo_connect_async - * Connect to a host:port asynchronously. This function should return - * immediately returing a tag used to identify the connection handler, - * or a pre-connect error (eg: host name lookup failure). - * Once the connect completes (successfully or unsuccessfully), callback - * should be called (see the signature for yahoo_connect_callback). - * The callback may safely be called before this function returns, but - * it should not be called twice. - * Params: - * id - the id that identifies this connection - * host - the host to connect to - * port - the port to connect on - * callback - function to call when connect completes - * callback_data - data to pass to the callback function - * use_ssl - Whether we need an SSL connection + * Connect to a host:port asynchronously. This function should return + * immediately returing a tag used to identify the connection handler, + * or a pre-connect error (eg: host name lookup failure). + * Once the connect completes (successfully or unsuccessfully), callback + * should be called (see the signature for yahoo_connect_callback). + * The callback may safely be called before this function returns, but + * it should not be called twice. + * Params: + * id - the id that identifies this connection + * host - the host to connect to + * port - the port to connect on + * callback - function to call when connect completes + * callback_data - data to pass to the callback function + * use_ssl - Whether we need an SSL connection * Returns: - * a tag signifying the connection attempt + * a tag signifying the connection attempt */ int YAHOO_CALLBACK_TYPE(ext_yahoo_connect_async) (int id, - const char *host, int port, yahoo_connect_callback callback, - void *callback_data, int use_ssl); + const char *host, int port, yahoo_connect_callback callback, + void *callback_data, int use_ssl); /* * Name: ext_yahoo_get_ip_addr - * get IP Address for a domain name + * get IP Address for a domain name * Params: - * domain - Domain name + * domain - Domain name * Returns: - * Newly allocated string containing the IP Address in IPv4 notation + * Newly allocated string containing the IP Address in IPv4 notation */ char *YAHOO_CALLBACK_TYPE(ext_yahoo_get_ip_addr) (const char *domain); /* * Name: ext_yahoo_write - * Write data from the buffer into the socket for the specified connection + * Write data from the buffer into the socket for the specified connection * Params: - * fd - the file descriptor object that identifies this connection - * buf - Buffer to write the data from - * len - Length of the data + * fd - the file descriptor object that identifies this connection + * buf - Buffer to write the data from + * len - Length of the data * Returns: - * Number of bytes written or -1 for error + * Number of bytes written or -1 for error */ int YAHOO_CALLBACK_TYPE(ext_yahoo_write) (void *fd, char *buf, int len); /* * Name: ext_yahoo_read - * Read data into a buffer from socket for the specified connection + * Read data into a buffer from socket for the specified connection * Params: - * fd - the file descriptor object that identifies this connection - * buf - Buffer to read the data into - * len - Max length to read + * fd - the file descriptor object that identifies this connection + * buf - Buffer to read the data into + * len - Max length to read * Returns: - * Number of bytes read or -1 for error + * Number of bytes read or -1 for error */ int YAHOO_CALLBACK_TYPE(ext_yahoo_read) (void *fd, char *buf, int len); /* * Name: ext_yahoo_close - * Close the file descriptor object and free its resources. Libyahoo2 will not - * use this object again. + * Close the file descriptor object and free its resources. Libyahoo2 will not + * use this object again. * Params: - * fd - the file descriptor object that identifies this connection + * fd - the file descriptor object that identifies this connection * Returns: - * Nothing + * Nothing */ void YAHOO_CALLBACK_TYPE(ext_yahoo_close) (void *fd); /* * Name: ext_yahoo_got_buddy_change_group - * Acknowledgement of buddy changing group + * Acknowledgement of buddy changing group * Params: - * id: client id - * me: The user - * who: Buddy name - * old_group: Old group name - * new_group: New group name + * id: client id + * me: The user + * who: Buddy name + * old_group: Old group name + * new_group: New group name * Returns: - * Nothing + * Nothing */ void YAHOO_CALLBACK_TYPE(ext_yahoo_got_buddy_change_group) (int id, - const char *me, const char *who, const char *old_group, - const char *new_group); + const char *me, const char *who, + const char *old_group, + const char *new_group); #ifdef USE_STRUCT_CALLBACKS }; diff --git a/protocols/yahoo/yahoo2_types.h b/protocols/yahoo/yahoo2_types.h index 62aa39d1..551670d6 100644 --- a/protocols/yahoo/yahoo2_types.h +++ b/protocols/yahoo/yahoo2_types.h @@ -28,175 +28,175 @@ extern "C" { #endif - enum yahoo_service { /* these are easier to see in hex */ - YAHOO_SERVICE_LOGON = 1, - YAHOO_SERVICE_LOGOFF, - YAHOO_SERVICE_ISAWAY, - YAHOO_SERVICE_ISBACK, - YAHOO_SERVICE_IDLE, /* 5 (placemarker) */ - YAHOO_SERVICE_MESSAGE, - YAHOO_SERVICE_IDACT, - YAHOO_SERVICE_IDDEACT, - YAHOO_SERVICE_MAILSTAT, - YAHOO_SERVICE_USERSTAT, /* 0xa */ - YAHOO_SERVICE_NEWMAIL, - YAHOO_SERVICE_CHATINVITE, - YAHOO_SERVICE_CALENDAR, - YAHOO_SERVICE_NEWPERSONALMAIL, - YAHOO_SERVICE_NEWCONTACT, - YAHOO_SERVICE_ADDIDENT, /* 0x10 */ - YAHOO_SERVICE_ADDIGNORE, - YAHOO_SERVICE_PING, - YAHOO_SERVICE_GOTGROUPRENAME, /* < 1, 36(old), 37(new) */ - YAHOO_SERVICE_SYSMESSAGE = 0x14, - YAHOO_SERVICE_SKINNAME = 0x15, - YAHOO_SERVICE_PASSTHROUGH2 = 0x16, - YAHOO_SERVICE_CONFINVITE = 0x18, - YAHOO_SERVICE_CONFLOGON, - YAHOO_SERVICE_CONFDECLINE, - YAHOO_SERVICE_CONFLOGOFF, - YAHOO_SERVICE_CONFADDINVITE, - YAHOO_SERVICE_CONFMSG, - YAHOO_SERVICE_CHATLOGON, - YAHOO_SERVICE_CHATLOGOFF, - YAHOO_SERVICE_CHATMSG = 0x20, - YAHOO_SERVICE_GAMELOGON = 0x28, - YAHOO_SERVICE_GAMELOGOFF, - YAHOO_SERVICE_GAMEMSG = 0x2a, - YAHOO_SERVICE_FILETRANSFER = 0x46, - YAHOO_SERVICE_VOICECHAT = 0x4A, - YAHOO_SERVICE_NOTIFY, - YAHOO_SERVICE_VERIFY, - YAHOO_SERVICE_P2PFILEXFER, - YAHOO_SERVICE_PEERTOPEER = 0x4F, /* Checks if P2P possible */ - YAHOO_SERVICE_WEBCAM, - YAHOO_SERVICE_AUTHRESP = 0x54, - YAHOO_SERVICE_LIST, - YAHOO_SERVICE_AUTH = 0x57, - YAHOO_SERVICE_AUTHBUDDY = 0x6d, - YAHOO_SERVICE_ADDBUDDY = 0x83, - YAHOO_SERVICE_REMBUDDY, - YAHOO_SERVICE_IGNORECONTACT, /* > 1, 7, 13 < 1, 66, 13, 0 */ - YAHOO_SERVICE_REJECTCONTACT, - YAHOO_SERVICE_GROUPRENAME = 0x89, /* > 1, 65(new), 66(0), 67(old) */ - YAHOO_SERVICE_Y7_PING = 0x8A, - YAHOO_SERVICE_CHATONLINE = 0x96, /* > 109(id), 1, 6(abcde) < 0,1 */ - YAHOO_SERVICE_CHATGOTO, - YAHOO_SERVICE_CHATJOIN, /* > 1 104-room 129-1600326591 62-2 */ - YAHOO_SERVICE_CHATLEAVE, - YAHOO_SERVICE_CHATEXIT = 0x9b, - YAHOO_SERVICE_CHATADDINVITE = 0x9d, - YAHOO_SERVICE_CHATLOGOUT = 0xa0, - YAHOO_SERVICE_CHATPING, - YAHOO_SERVICE_COMMENT = 0xa8, - YAHOO_SERVICE_GAME_INVITE = 0xb7, - YAHOO_SERVICE_STEALTH_PERM = 0xb9, - YAHOO_SERVICE_STEALTH_SESSION = 0xba, - YAHOO_SERVICE_AVATAR = 0xbc, - YAHOO_SERVICE_PICTURE_CHECKSUM = 0xbd, - YAHOO_SERVICE_PICTURE = 0xbe, - YAHOO_SERVICE_PICTURE_UPDATE = 0xc1, - YAHOO_SERVICE_PICTURE_UPLOAD = 0xc2, - YAHOO_SERVICE_YAB_UPDATE = 0xc4, - YAHOO_SERVICE_Y6_VISIBLE_TOGGLE = 0xc5, /* YMSG13, key 13: 2 = invisible, 1 = visible */ - YAHOO_SERVICE_Y6_STATUS_UPDATE = 0xc6, /* YMSG13 */ - YAHOO_SERVICE_PICTURE_STATUS = 0xc7, /* YMSG13, key 213: 0 = none, 1 = avatar, 2 = picture */ - YAHOO_SERVICE_VERIFY_ID_EXISTS = 0xc8, - YAHOO_SERVICE_AUDIBLE = 0xd0, - YAHOO_SERVICE_Y7_PHOTO_SHARING = 0xd2, - YAHOO_SERVICE_Y7_CONTACT_DETAILS = 0xd3, /* YMSG13 */ - YAHOO_SERVICE_Y7_CHAT_SESSION = 0xd4, - YAHOO_SERVICE_Y7_AUTHORIZATION = 0xd6, /* YMSG13 */ - YAHOO_SERVICE_Y7_FILETRANSFER = 0xdc, /* YMSG13 */ - YAHOO_SERVICE_Y7_FILETRANSFERINFO, /* YMSG13 */ - YAHOO_SERVICE_Y7_FILETRANSFERACCEPT, /* YMSG13 */ - YAHOO_SERVICE_Y7_MINGLE = 0xe1, /* YMSG13 */ - YAHOO_SERVICE_Y7_CHANGE_GROUP = 0xe7, /* YMSG13 */ - YAHOO_SERVICE_MYSTERY = 0xef, /* Don't know what this is for */ - YAHOO_SERVICE_Y8_STATUS = 0xf0, /* YMSG15 */ - YAHOO_SERVICE_Y8_LIST = 0Xf1, /* YMSG15 */ - YAHOO_SERVICE_MESSAGE_CONFIRM = 0xfb, - YAHOO_SERVICE_WEBLOGIN = 0x0226, - YAHOO_SERVICE_SMS_MSG = 0x02ea - }; - - enum yahoo_status { - YAHOO_STATUS_AVAILABLE = 0, - YAHOO_STATUS_BRB, - YAHOO_STATUS_BUSY, - YAHOO_STATUS_NOTATHOME, - YAHOO_STATUS_NOTATDESK, - YAHOO_STATUS_NOTINOFFICE, - YAHOO_STATUS_ONPHONE, - YAHOO_STATUS_ONVACATION, - YAHOO_STATUS_OUTTOLUNCH, - YAHOO_STATUS_STEPPEDOUT, - YAHOO_STATUS_INVISIBLE = 12, - YAHOO_STATUS_CUSTOM = 99, - YAHOO_STATUS_IDLE = 999, - YAHOO_STATUS_OFFLINE = 0x5a55aa56 /* don't ask */ - }; - - enum ypacket_status { - YPACKET_STATUS_DISCONNECTED = -1, - YPACKET_STATUS_DEFAULT = 0, - YPACKET_STATUS_SERVERACK = 1, - YPACKET_STATUS_GAME = 0x2, - YPACKET_STATUS_AWAY = 0x4, - YPACKET_STATUS_CONTINUED = 0x5, - YPACKET_STATUS_INVISIBLE = 12, - YPACKET_STATUS_NOTIFY = 0x16, /* TYPING */ - YPACKET_STATUS_WEBLOGIN = 0x5a55aa55, - YPACKET_STATUS_OFFLINE = 0x5a55aa56 - }; - -#define YAHOO_STATUS_GAME 0x2 /* Games don't fit into the regular status model */ - - enum yahoo_login_status { - YAHOO_LOGIN_OK = 0, - YAHOO_LOGIN_LOGOFF = 1, - YAHOO_LOGIN_UNAME = 3, - YAHOO_LOGIN_PASSWD = 13, - YAHOO_LOGIN_LOCK = 14, - YAHOO_LOGIN_DUPL = 99, - YAHOO_LOGIN_SOCK = -1, - YAHOO_LOGIN_UNKNOWN = 999 - }; - - enum yahoo_error { - E_UNKNOWN = -1, - E_CONNECTION = -2, - E_SYSTEM = -3, - E_CUSTOM = 0, - - /* responses from ignore buddy */ - E_IGNOREDUP = 2, - E_IGNORENONE = 3, - E_IGNORECONF = 12, - - /* conference */ - E_CONFNOTAVAIL = 20 - }; - - enum yahoo_log_level { - YAHOO_LOG_NONE = 0, - YAHOO_LOG_FATAL, - YAHOO_LOG_ERR, - YAHOO_LOG_WARNING, - YAHOO_LOG_NOTICE, - YAHOO_LOG_INFO, - YAHOO_LOG_DEBUG - }; - - enum yahoo_file_transfer { - YAHOO_FILE_TRANSFER_INIT = 1, - YAHOO_FILE_TRANSFER_ACCEPT = 3, - YAHOO_FILE_TRANSFER_REJECT = 4, - YAHOO_FILE_TRANSFER_DONE = 5, - YAHOO_FILE_TRANSFER_RELAY, - YAHOO_FILE_TRANSFER_FAILED, - YAHOO_FILE_TRANSFER_UNKNOWN - }; +enum yahoo_service { /* these are easier to see in hex */ + YAHOO_SERVICE_LOGON = 1, + YAHOO_SERVICE_LOGOFF, + YAHOO_SERVICE_ISAWAY, + YAHOO_SERVICE_ISBACK, + YAHOO_SERVICE_IDLE, /* 5 (placemarker) */ + YAHOO_SERVICE_MESSAGE, + YAHOO_SERVICE_IDACT, + YAHOO_SERVICE_IDDEACT, + YAHOO_SERVICE_MAILSTAT, + YAHOO_SERVICE_USERSTAT, /* 0xa */ + YAHOO_SERVICE_NEWMAIL, + YAHOO_SERVICE_CHATINVITE, + YAHOO_SERVICE_CALENDAR, + YAHOO_SERVICE_NEWPERSONALMAIL, + YAHOO_SERVICE_NEWCONTACT, + YAHOO_SERVICE_ADDIDENT, /* 0x10 */ + YAHOO_SERVICE_ADDIGNORE, + YAHOO_SERVICE_PING, + YAHOO_SERVICE_GOTGROUPRENAME, /* < 1, 36(old), 37(new) */ + YAHOO_SERVICE_SYSMESSAGE = 0x14, + YAHOO_SERVICE_SKINNAME = 0x15, + YAHOO_SERVICE_PASSTHROUGH2 = 0x16, + YAHOO_SERVICE_CONFINVITE = 0x18, + YAHOO_SERVICE_CONFLOGON, + YAHOO_SERVICE_CONFDECLINE, + YAHOO_SERVICE_CONFLOGOFF, + YAHOO_SERVICE_CONFADDINVITE, + YAHOO_SERVICE_CONFMSG, + YAHOO_SERVICE_CHATLOGON, + YAHOO_SERVICE_CHATLOGOFF, + YAHOO_SERVICE_CHATMSG = 0x20, + YAHOO_SERVICE_GAMELOGON = 0x28, + YAHOO_SERVICE_GAMELOGOFF, + YAHOO_SERVICE_GAMEMSG = 0x2a, + YAHOO_SERVICE_FILETRANSFER = 0x46, + YAHOO_SERVICE_VOICECHAT = 0x4A, + YAHOO_SERVICE_NOTIFY, + YAHOO_SERVICE_VERIFY, + YAHOO_SERVICE_P2PFILEXFER, + YAHOO_SERVICE_PEERTOPEER = 0x4F, /* Checks if P2P possible */ + YAHOO_SERVICE_WEBCAM, + YAHOO_SERVICE_AUTHRESP = 0x54, + YAHOO_SERVICE_LIST, + YAHOO_SERVICE_AUTH = 0x57, + YAHOO_SERVICE_AUTHBUDDY = 0x6d, + YAHOO_SERVICE_ADDBUDDY = 0x83, + YAHOO_SERVICE_REMBUDDY, + YAHOO_SERVICE_IGNORECONTACT, /* > 1, 7, 13 < 1, 66, 13, 0 */ + YAHOO_SERVICE_REJECTCONTACT, + YAHOO_SERVICE_GROUPRENAME = 0x89, /* > 1, 65(new), 66(0), 67(old) */ + YAHOO_SERVICE_Y7_PING = 0x8A, + YAHOO_SERVICE_CHATONLINE = 0x96, /* > 109(id), 1, 6(abcde) < 0,1 */ + YAHOO_SERVICE_CHATGOTO, + YAHOO_SERVICE_CHATJOIN, /* > 1 104-room 129-1600326591 62-2 */ + YAHOO_SERVICE_CHATLEAVE, + YAHOO_SERVICE_CHATEXIT = 0x9b, + YAHOO_SERVICE_CHATADDINVITE = 0x9d, + YAHOO_SERVICE_CHATLOGOUT = 0xa0, + YAHOO_SERVICE_CHATPING, + YAHOO_SERVICE_COMMENT = 0xa8, + YAHOO_SERVICE_GAME_INVITE = 0xb7, + YAHOO_SERVICE_STEALTH_PERM = 0xb9, + YAHOO_SERVICE_STEALTH_SESSION = 0xba, + YAHOO_SERVICE_AVATAR = 0xbc, + YAHOO_SERVICE_PICTURE_CHECKSUM = 0xbd, + YAHOO_SERVICE_PICTURE = 0xbe, + YAHOO_SERVICE_PICTURE_UPDATE = 0xc1, + YAHOO_SERVICE_PICTURE_UPLOAD = 0xc2, + YAHOO_SERVICE_YAB_UPDATE = 0xc4, + YAHOO_SERVICE_Y6_VISIBLE_TOGGLE = 0xc5, /* YMSG13, key 13: 2 = invisible, 1 = visible */ + YAHOO_SERVICE_Y6_STATUS_UPDATE = 0xc6, /* YMSG13 */ + YAHOO_SERVICE_PICTURE_STATUS = 0xc7, /* YMSG13, key 213: 0 = none, 1 = avatar, 2 = picture */ + YAHOO_SERVICE_VERIFY_ID_EXISTS = 0xc8, + YAHOO_SERVICE_AUDIBLE = 0xd0, + YAHOO_SERVICE_Y7_PHOTO_SHARING = 0xd2, + YAHOO_SERVICE_Y7_CONTACT_DETAILS = 0xd3, /* YMSG13 */ + YAHOO_SERVICE_Y7_CHAT_SESSION = 0xd4, + YAHOO_SERVICE_Y7_AUTHORIZATION = 0xd6, /* YMSG13 */ + YAHOO_SERVICE_Y7_FILETRANSFER = 0xdc, /* YMSG13 */ + YAHOO_SERVICE_Y7_FILETRANSFERINFO, /* YMSG13 */ + YAHOO_SERVICE_Y7_FILETRANSFERACCEPT, /* YMSG13 */ + YAHOO_SERVICE_Y7_MINGLE = 0xe1, /* YMSG13 */ + YAHOO_SERVICE_Y7_CHANGE_GROUP = 0xe7, /* YMSG13 */ + YAHOO_SERVICE_MYSTERY = 0xef, /* Don't know what this is for */ + YAHOO_SERVICE_Y8_STATUS = 0xf0, /* YMSG15 */ + YAHOO_SERVICE_Y8_LIST = 0Xf1, /* YMSG15 */ + YAHOO_SERVICE_MESSAGE_CONFIRM = 0xfb, + YAHOO_SERVICE_WEBLOGIN = 0x0226, + YAHOO_SERVICE_SMS_MSG = 0x02ea +}; + +enum yahoo_status { + YAHOO_STATUS_AVAILABLE = 0, + YAHOO_STATUS_BRB, + YAHOO_STATUS_BUSY, + YAHOO_STATUS_NOTATHOME, + YAHOO_STATUS_NOTATDESK, + YAHOO_STATUS_NOTINOFFICE, + YAHOO_STATUS_ONPHONE, + YAHOO_STATUS_ONVACATION, + YAHOO_STATUS_OUTTOLUNCH, + YAHOO_STATUS_STEPPEDOUT, + YAHOO_STATUS_INVISIBLE = 12, + YAHOO_STATUS_CUSTOM = 99, + YAHOO_STATUS_IDLE = 999, + YAHOO_STATUS_OFFLINE = 0x5a55aa56 /* don't ask */ +}; + +enum ypacket_status { + YPACKET_STATUS_DISCONNECTED = -1, + YPACKET_STATUS_DEFAULT = 0, + YPACKET_STATUS_SERVERACK = 1, + YPACKET_STATUS_GAME = 0x2, + YPACKET_STATUS_AWAY = 0x4, + YPACKET_STATUS_CONTINUED = 0x5, + YPACKET_STATUS_INVISIBLE = 12, + YPACKET_STATUS_NOTIFY = 0x16, /* TYPING */ + YPACKET_STATUS_WEBLOGIN = 0x5a55aa55, + YPACKET_STATUS_OFFLINE = 0x5a55aa56 +}; + +#define YAHOO_STATUS_GAME 0x2 /* Games don't fit into the regular status model */ + +enum yahoo_login_status { + YAHOO_LOGIN_OK = 0, + YAHOO_LOGIN_LOGOFF = 1, + YAHOO_LOGIN_UNAME = 3, + YAHOO_LOGIN_PASSWD = 13, + YAHOO_LOGIN_LOCK = 14, + YAHOO_LOGIN_DUPL = 99, + YAHOO_LOGIN_SOCK = -1, + YAHOO_LOGIN_UNKNOWN = 999 +}; + +enum yahoo_error { + E_UNKNOWN = -1, + E_CONNECTION = -2, + E_SYSTEM = -3, + E_CUSTOM = 0, + + /* responses from ignore buddy */ + E_IGNOREDUP = 2, + E_IGNORENONE = 3, + E_IGNORECONF = 12, + + /* conference */ + E_CONFNOTAVAIL = 20 +}; + +enum yahoo_log_level { + YAHOO_LOG_NONE = 0, + YAHOO_LOG_FATAL, + YAHOO_LOG_ERR, + YAHOO_LOG_WARNING, + YAHOO_LOG_NOTICE, + YAHOO_LOG_INFO, + YAHOO_LOG_DEBUG +}; + +enum yahoo_file_transfer { + YAHOO_FILE_TRANSFER_INIT = 1, + YAHOO_FILE_TRANSFER_ACCEPT = 3, + YAHOO_FILE_TRANSFER_REJECT = 4, + YAHOO_FILE_TRANSFER_DONE = 5, + YAHOO_FILE_TRANSFER_RELAY, + YAHOO_FILE_TRANSFER_FAILED, + YAHOO_FILE_TRANSFER_UNKNOWN +}; #define YAHOO_PROTO_VER 0x0010 @@ -221,27 +221,27 @@ extern "C" { #define YAHOO_STYLE_URLON "\033[lm" #define YAHOO_STYLE_URLOFF "\033[xlm" - enum yahoo_connection_type { - YAHOO_CONNECTION_PAGER = 0, - YAHOO_CONNECTION_FT, - YAHOO_CONNECTION_YAB, - YAHOO_CONNECTION_WEBCAM_MASTER, - YAHOO_CONNECTION_WEBCAM, - YAHOO_CONNECTION_CHATCAT, - YAHOO_CONNECTION_SEARCH, - YAHOO_CONNECTION_AUTH - }; - - enum yahoo_webcam_direction_type { - YAHOO_WEBCAM_DOWNLOAD = 0, - YAHOO_WEBCAM_UPLOAD - }; - - enum yahoo_stealth_visibility_type { - YAHOO_STEALTH_DEFAULT = 0, - YAHOO_STEALTH_ONLINE, - YAHOO_STEALTH_PERM_OFFLINE - }; +enum yahoo_connection_type { + YAHOO_CONNECTION_PAGER = 0, + YAHOO_CONNECTION_FT, + YAHOO_CONNECTION_YAB, + YAHOO_CONNECTION_WEBCAM_MASTER, + YAHOO_CONNECTION_WEBCAM, + YAHOO_CONNECTION_CHATCAT, + YAHOO_CONNECTION_SEARCH, + YAHOO_CONNECTION_AUTH +}; + +enum yahoo_webcam_direction_type { + YAHOO_WEBCAM_DOWNLOAD = 0, + YAHOO_WEBCAM_UPLOAD +}; + +enum yahoo_stealth_visibility_type { + YAHOO_STEALTH_DEFAULT = 0, + YAHOO_STEALTH_ONLINE, + YAHOO_STEALTH_PERM_OFFLINE +}; /* chat member attribs */ #define YAHOO_CHAT_MALE 0x8000 @@ -250,145 +250,145 @@ extern "C" { #define YAHOO_CHAT_DUNNO 0x400 #define YAHOO_CHAT_WEBCAM 0x10 - enum yahoo_webcam_conn_type { Y_WCM_DIALUP, Y_WCM_DSL, Y_WCM_T1 }; - - struct yahoo_webcam { - int direction; /* Uploading or downloading */ - int conn_type; /* 0=Dialup, 1=DSL/Cable, 2=T1/Lan */ - - char *user; /* user we are viewing */ - char *server; /* webcam server to connect to */ - int port; /* webcam port to connect on */ - char *key; /* key to connect to the server with */ - char *description; /* webcam description */ - char *my_ip; /* own ip number */ - }; - - struct yahoo_webcam_data { - unsigned int data_size; - unsigned int to_read; - unsigned int timestamp; - unsigned char packet_type; - }; - - struct yahoo_data { - char *user; - char *password; - - char *cookie_y; - char *cookie_t; - char *cookie_c; - char *cookie_b; - char *login_cookie; - char *crumb; - char *seed; - - YList *buddies; - YList *ignore; - YList *identities; - char *login_id; - - int current_status; - int initial_status; - int logged_in; - - int session_id; - - int client_id; - - char *rawbuddylist; - char *ignorelist; - - void *server_settings; - - struct yahoo_process_status_entry *half_user; - }; - - struct yab { - int yid; - char *id; - char *fname; - char *lname; - char *nname; - char *email; - char *hphone; - char *wphone; - char *mphone; - int dbid; - }; - - struct yahoo_buddy { - char *group; - char *id; - char *real_name; - struct yab *yab_entry; - }; - - enum yahoo_search_type { - YAHOO_SEARCH_KEYWORD = 0, - YAHOO_SEARCH_YID, - YAHOO_SEARCH_NAME - }; - - enum yahoo_search_gender { - YAHOO_GENDER_NONE = 0, - YAHOO_GENDER_MALE, - YAHOO_GENDER_FEMALE - }; - - enum yahoo_search_agerange { - YAHOO_AGERANGE_NONE = 0 - }; - - struct yahoo_found_contact { - char *id; - char *gender; - char *location; - int age; - int online; - }; +enum yahoo_webcam_conn_type { Y_WCM_DIALUP, Y_WCM_DSL, Y_WCM_T1 }; + +struct yahoo_webcam { + int direction; /* Uploading or downloading */ + int conn_type; /* 0=Dialup, 1=DSL/Cable, 2=T1/Lan */ + + char *user; /* user we are viewing */ + char *server; /* webcam server to connect to */ + int port; /* webcam port to connect on */ + char *key; /* key to connect to the server with */ + char *description; /* webcam description */ + char *my_ip; /* own ip number */ +}; + +struct yahoo_webcam_data { + unsigned int data_size; + unsigned int to_read; + unsigned int timestamp; + unsigned char packet_type; +}; + +struct yahoo_data { + char *user; + char *password; + + char *cookie_y; + char *cookie_t; + char *cookie_c; + char *cookie_b; + char *login_cookie; + char *crumb; + char *seed; + + YList *buddies; + YList *ignore; + YList *identities; + char *login_id; + + int current_status; + int initial_status; + int logged_in; + + int session_id; + + int client_id; + + char *rawbuddylist; + char *ignorelist; + + void *server_settings; + + struct yahoo_process_status_entry *half_user; +}; + +struct yab { + int yid; + char *id; + char *fname; + char *lname; + char *nname; + char *email; + char *hphone; + char *wphone; + char *mphone; + int dbid; +}; + +struct yahoo_buddy { + char *group; + char *id; + char *real_name; + struct yab *yab_entry; +}; + +enum yahoo_search_type { + YAHOO_SEARCH_KEYWORD = 0, + YAHOO_SEARCH_YID, + YAHOO_SEARCH_NAME +}; + +enum yahoo_search_gender { + YAHOO_GENDER_NONE = 0, + YAHOO_GENDER_MALE, + YAHOO_GENDER_FEMALE +}; + +enum yahoo_search_agerange { + YAHOO_AGERANGE_NONE = 0 +}; + +struct yahoo_found_contact { + char *id; + char *gender; + char *location; + int age; + int online; +}; /* * Function pointer to be passed to http get/post and send file */ - typedef void (*yahoo_get_fd_callback) (int id, void *fd, int error, - void *data); +typedef void (*yahoo_get_fd_callback) (int id, void *fd, int error, + void *data); /* * Function pointer to be passed to yahoo_get_url_handle */ - typedef void (*yahoo_get_url_handle_callback) (int id, void *fd, - int error, const char *filename, unsigned long size, - void *data); - - struct yahoo_chat_member { - char *id; - int age; - int attribs; - char *alias; - char *location; - }; - - struct yahoo_process_status_entry { - char *name; /* 7 name */ - int state; /* 10 state */ - int flags; /* 13 flags, bit 0 = pager, bit 1 = chat, bit 2 = game */ - int mobile; /* 60 mobile */ - char *msg; /* 19 custom status message */ - int away; /* 47 away (or invisible) */ - int buddy_session; /* 11 state */ - int f17; /* 17 in chat? then what about flags? */ - int idle; /* 137 seconds idle */ - int f138; /* 138 state */ - char *f184; /* 184 state */ - int f192; /* 192 state */ - int f10001; /* 10001 state */ - int f10002; /* 10002 state */ - int f198; /* 198 state */ - char *f197; /* 197 state */ - char *f205; /* 205 state */ - int f213; /* 213 state */ - }; +typedef void (*yahoo_get_url_handle_callback) (int id, void *fd, + int error, const char *filename, unsigned long size, + void *data); + +struct yahoo_chat_member { + char *id; + int age; + int attribs; + char *alias; + char *location; +}; + +struct yahoo_process_status_entry { + char *name; /* 7 name */ + int state; /* 10 state */ + int flags; /* 13 flags, bit 0 = pager, bit 1 = chat, bit 2 = game */ + int mobile; /* 60 mobile */ + char *msg; /* 19 custom status message */ + int away; /* 47 away (or invisible) */ + int buddy_session; /* 11 state */ + int f17; /* 17 in chat? then what about flags? */ + int idle; /* 137 seconds idle */ + int f138; /* 138 state */ + char *f184; /* 184 state */ + int f192; /* 192 state */ + int f10001; /* 10001 state */ + int f10002; /* 10002 state */ + int f198; /* 198 state */ + char *f197; /* 197 state */ + char *f205; /* 205 state */ + int f213; /* 213 state */ +}; #ifdef __cplusplus } diff --git a/protocols/yahoo/yahoo_debug.h b/protocols/yahoo/yahoo_debug.h index 08382d64..ddcd91c5 100644 --- a/protocols/yahoo/yahoo_debug.h +++ b/protocols/yahoo/yahoo_debug.h @@ -21,18 +21,20 @@ extern int yahoo_log_message(char *fmt, ...); -#define NOTICE(x) if(yahoo_get_log_level() >= YAHOO_LOG_NOTICE) { yahoo_log_message x; yahoo_log_message("\n"); } +#define NOTICE(x) if (yahoo_get_log_level() >= YAHOO_LOG_NOTICE) { yahoo_log_message x; yahoo_log_message("\n"); } -#define LOG(x) if(yahoo_get_log_level() >= YAHOO_LOG_INFO) { yahoo_log_message("%s:%d: ", __FILE__, __LINE__); \ - yahoo_log_message x; \ - yahoo_log_message("\n"); } +#define LOG(x) if (yahoo_get_log_level() >= YAHOO_LOG_INFO) { yahoo_log_message("%s:%d: ", __FILE__, __LINE__); \ + yahoo_log_message x; \ + yahoo_log_message("\n"); } -#define WARNING(x) if(yahoo_get_log_level() >= YAHOO_LOG_WARNING) { yahoo_log_message("%s:%d: warning: ", __FILE__, __LINE__); \ - yahoo_log_message x; \ - yahoo_log_message("\n"); } +#define WARNING(x) if (yahoo_get_log_level() >= YAHOO_LOG_WARNING) { yahoo_log_message("%s:%d: warning: ", __FILE__, \ + __LINE__); \ + yahoo_log_message x; \ + yahoo_log_message("\n"); } -#define DEBUG_MSG(x) if(yahoo_get_log_level() >= YAHOO_LOG_DEBUG) { yahoo_log_message("%s:%d: debug: ", __FILE__, __LINE__); \ - yahoo_log_message x; \ - yahoo_log_message("\n"); } +#define DEBUG_MSG(x) if (yahoo_get_log_level() >= YAHOO_LOG_DEBUG) { yahoo_log_message("%s:%d: debug: ", __FILE__, \ + __LINE__); \ + yahoo_log_message x; \ + yahoo_log_message("\n"); } diff --git a/protocols/yahoo/yahoo_httplib.c b/protocols/yahoo/yahoo_httplib.c index ec153234..968a2696 100644 --- a/protocols/yahoo/yahoo_httplib.c +++ b/protocols/yahoo/yahoo_httplib.c @@ -31,8 +31,8 @@ # endif char *strchr(), *strrchr(); # if !HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) +# define memcpy(d, s, n) bcopy((s), (d), (n)) +# define memmove(d, s, n) bcopy((s), (d), (n)) # endif #endif @@ -52,9 +52,9 @@ char *strchr(), *strrchr(); #ifdef USE_STRUCT_CALLBACKS extern struct yahoo_callbacks *yc; -#define YAHOO_CALLBACK(x) yc->x +#define YAHOO_CALLBACK(x) yc->x #else -#define YAHOO_CALLBACK(x) x +#define YAHOO_CALLBACK(x) x #endif extern enum yahoo_log_level log_level; @@ -68,21 +68,24 @@ int yahoo_tcp_readline(char *ptr, int maxlen, void *fd) for (n = 1; n < maxlen; n++) { do { - rc = YAHOO_CALLBACK(ext_yahoo_read) (fd, &c, 1); - } while (rc == -1 && (errno == EINTR || errno == EAGAIN)); /* this is bad - it should be done asynchronously */ + rc = YAHOO_CALLBACK (ext_yahoo_read) (fd, &c, 1); + } while (rc == -1 && (errno == EINTR || errno == EAGAIN)); /* this is bad - it should be done asynchronously */ if (rc == 1) { - if (c == '\r') /* get rid of \r */ + if (c == '\r') { /* get rid of \r */ continue; + } *ptr = c; - if (c == '\n') + if (c == '\n') { break; + } ptr++; } else if (rc == 0) { - if (n == 1) - return (0); /* EOF, no data */ - else - break; /* EOF, w/ data */ + if (n == 1) { + return (0); /* EOF, no data */ + } else { + break; /* EOF, w/ data */ + } } else { return -1; } @@ -94,7 +97,7 @@ int yahoo_tcp_readline(char *ptr, int maxlen, void *fd) #endif static int url_to_host_port_path(const char *url, - char *host, int *port, char *path, int *ssl) + char *host, int *port, char *path, int *ssl) { char *urlcopy = NULL; char *slash = NULL; @@ -126,10 +129,11 @@ static int url_to_host_port_path(const char *url, colon = strchr(urlcopy, ':'); if (!colon || (slash && slash < colon)) { - if (*ssl) + if (*ssl) { *port = 443; - else + } else { *port = 80; + } } else { *colon = 0; *port = atoi(colon + 1); @@ -160,14 +164,17 @@ char *yahoo_urlencode(const char *instr) char *str = NULL; int len = strlen(instr); - if (!(str = y_new(char, 3 *len + 1))) - return ""; + if (!(str = y_new(char, 3 * len + 1))) { + return ""; + } while (instr[ipos]) { - while (isurlchar(instr[ipos])) + while (isurlchar(instr[ipos])) { str[bpos++] = instr[ipos++]; - if (!instr[ipos]) + } + if (!instr[ipos]) { break; + } snprintf(&str[bpos], 4, "%%%02x", instr[ipos] & 0xff); bpos += 3; @@ -191,25 +198,29 @@ char *yahoo_urldecode(const char *instr) unsigned dec; int len = strlen(instr); - if (!(str = y_new(char, len + 1))) - return ""; + if (!(str = y_new(char, len + 1))) { + return ""; + } while (instr[ipos]) { - while (instr[ipos] && instr[ipos] != '%') + while (instr[ipos] && instr[ipos] != '%') { if (instr[ipos] == '+') { str[bpos++] = ' '; ipos++; - } else + } else { str[bpos++] = instr[ipos++]; - if (!instr[ipos]) + } + } + if (!instr[ipos]) { break; + } if (instr[ipos + 1] && instr[ipos + 2]) { ipos++; entity[0] = instr[ipos++]; entity[1] = instr[ipos++]; sscanf(entity, "%2x", &dec); - str[bpos++] = (char)dec; + str[bpos++] = (char) dec; } else { str[bpos++] = instr[ipos++]; } @@ -229,46 +240,52 @@ char *yahoo_xmldecode(const char *instr) char *str = NULL; char entity[4] = { 0, 0, 0, 0 }; char *entitymap[5][2] = { - {"amp;", "&"}, - {"quot;", "\""}, - {"lt;", "<"}, - {"gt;", "<"}, - {"nbsp;", " "} + { "amp;", "&" }, + { "quot;", "\"" }, + { "lt;", "<" }, + { "gt;", "<" }, + { "nbsp;", " " } }; unsigned dec; int len = strlen(instr); - if (!(str = y_new(char, len + 1))) - return ""; + if (!(str = y_new(char, len + 1))) { + return ""; + } while (instr[ipos]) { - while (instr[ipos] && instr[ipos] != '&') + while (instr[ipos] && instr[ipos] != '&') { if (instr[ipos] == '+') { str[bpos++] = ' '; ipos++; - } else + } else { str[bpos++] = instr[ipos++]; - if (!instr[ipos] || !instr[ipos + 1]) + } + } + if (!instr[ipos] || !instr[ipos + 1]) { break; + } ipos++; if (instr[ipos] == '#') { ipos++; epos = 0; - while (instr[ipos] != ';') + while (instr[ipos] != ';') { entity[epos++] = instr[ipos++]; + } sscanf(entity, "%u", &dec); - str[bpos++] = (char)dec; + str[bpos++] = (char) dec; ipos++; } else { int i; - for (i = 0; i < 5; i++) + for (i = 0; i < 5; i++) { if (!strncmp(instr + ipos, entitymap[i][0], - strlen(entitymap[i][0]))) { + strlen(entitymap[i][0]))) { str[bpos++] = entitymap[i][1][0]; ipos += strlen(entitymap[i][0]); break; } + } } } str[bpos] = '\0'; @@ -293,29 +310,32 @@ struct callback_data { static void connect_complete(void *fd, int error, void *data) { struct callback_data *ccd = data; - if (error == 0) - YAHOO_CALLBACK(ext_yahoo_write) (fd, ccd->request, - strlen(ccd->request)); + + if (error == 0) { + YAHOO_CALLBACK (ext_yahoo_write) (fd, ccd->request, + strlen(ccd->request)); + } free(ccd->request); ccd->callback(ccd->id, fd, error, ccd->user_data); FREE(ccd); } static void yahoo_send_http_request(int id, char *host, int port, char *request, - yahoo_get_fd_callback callback, void *data, int use_ssl) + yahoo_get_fd_callback callback, void *data, int use_ssl) { struct callback_data *ccd = y_new0(struct callback_data, 1); + ccd->callback = callback; ccd->id = id; ccd->request = strdup(request); ccd->user_data = data; - YAHOO_CALLBACK(ext_yahoo_connect_async) (id, host, port, - connect_complete, ccd, use_ssl); + YAHOO_CALLBACK (ext_yahoo_connect_async) (id, host, port, + connect_complete, ccd, use_ssl); } void yahoo_http_post(int id, const char *url, const char *cookies, - long content_length, yahoo_get_fd_callback callback, void *data) + long content_length, yahoo_get_fd_callback callback, void *data) { char host[255]; int port = 80; @@ -323,24 +343,25 @@ void yahoo_http_post(int id, const char *url, const char *cookies, char buff[1024]; int ssl = 0; - if (!url_to_host_port_path(url, host, &port, path, &ssl)) + if (!url_to_host_port_path(url, host, &port, path, &ssl)) { return; + } /* thanks to kopete dumpcap */ snprintf(buff, sizeof(buff), - "POST %s HTTP/1.1\r\n" - "Cookie: %s\r\n" - "User-Agent: Mozilla/5.0\r\n" - "Host: %s\r\n" - "Content-Length: %ld\r\n" - "Cache-Control: no-cache\r\n" - "\r\n", path, cookies, host, content_length); + "POST %s HTTP/1.1\r\n" + "Cookie: %s\r\n" + "User-Agent: Mozilla/5.0\r\n" + "Host: %s\r\n" + "Content-Length: %ld\r\n" + "Cache-Control: no-cache\r\n" + "\r\n", path, cookies, host, content_length); yahoo_send_http_request(id, host, port, buff, callback, data, ssl); } void yahoo_http_get(int id, const char *url, const char *cookies, int http11, - int keepalive, yahoo_get_fd_callback callback, void *data) + int keepalive, yahoo_get_fd_callback callback, void *data) { char host[255]; int port = 80; @@ -349,29 +370,31 @@ void yahoo_http_get(int id, const char *url, const char *cookies, int http11, char cookiebuff[1024]; int ssl = 0; - if (!url_to_host_port_path(url, host, &port, path, &ssl)) + if (!url_to_host_port_path(url, host, &port, path, &ssl)) { return; + } /* Allow cases when we don't need to send a cookie */ - if (cookies) + if (cookies) { snprintf(cookiebuff, sizeof(cookiebuff), "Cookie: %s\r\n", - cookies); - else + cookies); + } else { cookiebuff[0] = '\0'; + } snprintf(buff, sizeof(buff), - "GET %s HTTP/1.%s\r\n" - "%sHost: %s\r\n" - "User-Agent: Mozilla/4.5 [en] (" PACKAGE "/" VERSION ")\r\n" - "Accept: */*\r\n" - "%s" "\r\n", path, http11?"1":"0", cookiebuff, host, - keepalive? "Connection: Keep-Alive\r\n":"Connection: close\r\n"); + "GET %s HTTP/1.%s\r\n" + "%sHost: %s\r\n" + "User-Agent: Mozilla/4.5 [en] (" PACKAGE "/" VERSION ")\r\n" + "Accept: */*\r\n" + "%s" "\r\n", path, http11 ? "1" : "0", cookiebuff, host, + keepalive ? "Connection: Keep-Alive\r\n" : "Connection: close\r\n"); yahoo_send_http_request(id, host, port, buff, callback, data, ssl); } void yahoo_http_head(int id, const char *url, const char *cookies, int len, - char *payload, yahoo_get_fd_callback callback, void *data) + char *payload, yahoo_get_fd_callback callback, void *data) { char host[255]; int port = 80; @@ -380,26 +403,28 @@ void yahoo_http_head(int id, const char *url, const char *cookies, int len, char cookiebuff[1024]; int ssl = 0; - if (!url_to_host_port_path(url, host, &port, path, &ssl)) + if (!url_to_host_port_path(url, host, &port, path, &ssl)) { return; + } /* Allow cases when we don't need to send a cookie */ - if (cookies) + if (cookies) { snprintf(cookiebuff, sizeof(cookiebuff), "Cookie: %s\r\n", - cookies); - else + cookies); + } else { cookiebuff[0] = '\0'; + } snprintf(buff, sizeof(buff), - "HEAD %s HTTP/1.0\r\n" - "Accept: */*\r\n" - "Host: %s:%d\r\n" - "User-Agent: Mozilla/4.5 [en] (" PACKAGE "/" VERSION ")\r\n" - "%s" - "Content-Length: %d\r\n" - "Cache-Control: no-cache\r\n" - "\r\n%s", path, host, port, cookiebuff, len, - payload?payload:""); + "HEAD %s HTTP/1.0\r\n" + "Accept: */*\r\n" + "Host: %s:%d\r\n" + "User-Agent: Mozilla/4.5 [en] (" PACKAGE "/" VERSION ")\r\n" + "%s" + "Content-Length: %d\r\n" + "Cache-Control: no-cache\r\n" + "\r\n%s", path, host, port, cookiebuff, len, + payload ? payload : ""); yahoo_send_http_request(id, host, port, buff, callback, data, ssl); } diff --git a/protocols/yahoo/yahoo_httplib.h b/protocols/yahoo/yahoo_httplib.h index 8e386717..9ee30ad6 100644 --- a/protocols/yahoo/yahoo_httplib.h +++ b/protocols/yahoo/yahoo_httplib.h @@ -28,19 +28,19 @@ extern "C" { #include "yahoo2_types.h" - char *yahoo_urlencode(const char *instr); - char *yahoo_urldecode(const char *instr); - char *yahoo_xmldecode(const char *instr); +char *yahoo_urlencode(const char *instr); +char *yahoo_urldecode(const char *instr); +char *yahoo_xmldecode(const char *instr); - int yahoo_tcp_readline(char *ptr, int maxlen, void *fd); - void yahoo_http_post(int id, const char *url, const char *cookies, - long size, yahoo_get_fd_callback callback, void *data); - void yahoo_http_get(int id, const char *url, const char *cookies, - int http11, int keepalive, yahoo_get_fd_callback callback, - void *data); - void yahoo_http_head(int id, const char *url, const char *cookies, - int size, char *payload, yahoo_get_fd_callback callback, - void *data); +int yahoo_tcp_readline(char *ptr, int maxlen, void *fd); +void yahoo_http_post(int id, const char *url, const char *cookies, + long size, yahoo_get_fd_callback callback, void *data); +void yahoo_http_get(int id, const char *url, const char *cookies, + int http11, int keepalive, yahoo_get_fd_callback callback, + void *data); +void yahoo_http_head(int id, const char *url, const char *cookies, + int size, char *payload, yahoo_get_fd_callback callback, + void *data); #ifdef __cplusplus } diff --git a/protocols/yahoo/yahoo_util.c b/protocols/yahoo/yahoo_util.c index 1b6168aa..7fc50fda 100644 --- a/protocols/yahoo/yahoo_util.c +++ b/protocols/yahoo/yahoo_util.c @@ -26,10 +26,10 @@ # define strchr index # define strrchr rindex # endif -char *strchr (), *strrchr (); +char *strchr(), *strrchr(); # if !HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) +# define memcpy(d, s, n) bcopy((s), (d), (n)) +# define memmove(d, s, n) bcopy((s), (d), (n)) # endif #endif @@ -56,7 +56,8 @@ char *y_string_append(char *string, char *append) void y_strfreev(char ** vector) { char **v; - for(v = vector; *v; v++) { + + for (v = vector; *v; v++) { FREE(*v); } FREE(vector); @@ -66,31 +67,35 @@ char ** y_strsplit(char * str, char * sep, int nelem) { char ** vector; char *s, *p; - int i=0; + int i = 0; int l = strlen(sep); - if(nelem <= 0) { + + if (nelem <= 0) { char * s; - nelem=0; + nelem = 0; if (*str) { - for(s=strstr(str, sep); s; s=strstr(s+l, sep),nelem++) + for (s = strstr(str, sep); s; s = strstr(s + l, sep), nelem++) { ; - if(strcmp(str+strlen(str)-l, sep)) + } + if (strcmp(str + strlen(str) - l, sep)) { nelem++; + } } } vector = y_new(char *, nelem + 1); - for(p=str, s=strstr(p,sep); i<nelem && s; p=s+l, s=strstr(p,sep), i++) { - int len = s-p; - vector[i] = y_new(char, len+1); + for (p = str, s = strstr(p, sep); i < nelem && s; p = s + l, s = strstr(p, sep), i++) { + int len = s - p; + vector[i] = y_new(char, len + 1); strncpy(vector[i], p, len); vector[i][len] = '\0'; } - if(i<nelem && *str) /* str didn't end with sep, and str isn't empty */ + if (i < nelem && *str) { /* str didn't end with sep, and str isn't empty */ vector[i++] = strdup(p); - + } + vector[i] = NULL; return vector; @@ -99,8 +104,10 @@ char ** y_strsplit(char * str, char * sep, int nelem) void * y_memdup(const void * addr, int n) { void * new_chunk = malloc(n); - if(new_chunk) + + if (new_chunk) { memcpy(new_chunk, addr, n); + } return new_chunk; } diff --git a/protocols/yahoo/yahoo_util.h b/protocols/yahoo/yahoo_util.h index 6099bf8f..1a033a66 100644 --- a/protocols/yahoo/yahoo_util.h +++ b/protocols/yahoo/yahoo_util.h @@ -29,39 +29,39 @@ #if HAVE_GLIB # include <glib.h> -# define FREE(x) if(x) {g_free(x); x=NULL;} +# define FREE(x) if (x) { g_free(x); x = NULL; } -# define y_new g_new -# define y_new0 g_new0 -# define y_renew g_renew +# define y_new g_new +# define y_new0 g_new0 +# define y_renew g_renew -# define y_memdup g_memdup -# define y_strsplit g_strsplit -# define y_strfreev g_strfreev +# define y_memdup g_memdup +# define y_strsplit g_strsplit +# define y_strfreev g_strfreev # ifndef strdup -# define strdup g_strdup +# define strdup g_strdup # endif # ifndef strncasecmp -# define strncasecmp g_strncasecmp -# define strcasecmp g_strcasecmp +# define strncasecmp g_strncasecmp +# define strcasecmp g_strcasecmp # endif -# define snprintf g_snprintf +# define snprintf g_snprintf #ifdef vsnprintf #undef vsnprintf #endif -# define vsnprintf g_vsnprintf +# define vsnprintf g_vsnprintf #else # include <stdlib.h> # include <stdarg.h> -# define FREE(x) if(x) {free(x); x=NULL;} +# define FREE(x) if (x) { free(x); x = NULL; } -# define y_new(type, n) (type *)malloc(sizeof(type) * (n)) -# define y_new0(type, n) (type *)calloc((n), sizeof(type)) -# define y_renew(type, mem, n) (type *)realloc(mem, n) +# define y_new(type, n) (type *) malloc(sizeof(type) * (n)) +# define y_new0(type, n) (type *) calloc((n), sizeof(type)) +# define y_renew(type, mem, n) (type *) realloc(mem, n) void *y_memdup(const void *addr, int n); char **y_strsplit(char *str, char *sep, int nelem); @@ -86,14 +86,14 @@ int vsnprintf(char *str, size_t size, const char *format, va_list ap); #endif #ifndef MIN -#define MIN(x,y) ((x)<(y)?(x):(y)) +#define MIN(x, y) ((x) < (y) ? (x) : (y)) #endif #ifndef MAX -#define MAX(x,y) ((x)>(y)?(x):(y)) +#define MAX(x, y) ((x) > (y) ? (x) : (y)) #endif -/* +/* * The following three functions return newly allocated memory. * You must free it yourself */ |