diff options
| author | Indent <please@skip.me> | 2015-02-19 02:47:20 -0300 | 
|---|---|---|
| committer | dequis <dx@dxzone.com.ar> | 2015-02-20 19:50:54 -0300 | 
| commit | 5ebff60479fc7a9f7f50ac03b124c91d4e6ebe11 (patch) | |
| tree | 9fc0d50cb1f4bc9768d9f00de94eafd876bb55b0 /protocols/oscar/oscar.c | |
| parent | af359b4316f9d392c6b752495a1b2ed631576ed8 (diff) | |
Reindent everything to K&R style with tabs
Used uncrustify, with the configuration file in ./doc/uncrustify.cfg
Commit author set to "Indent <please@skip.me>" so that it's easier to
skip while doing git blame.
Diffstat (limited to 'protocols/oscar/oscar.c')
| -rw-r--r-- | protocols/oscar/oscar.c | 1511 | 
1 files changed, 834 insertions, 677 deletions
diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 1c74e7a2..22244f6c 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -49,25 +49,25 @@  #define USEROPT_AUTH      0  #define USEROPT_AUTHPORT  1 -#define UC_AOL		0x02 -#define UC_ADMIN	0x04 -#define UC_UNCONFIRMED	0x08 -#define UC_NORMAL	0x10 -#define UC_AB		0x20 -#define UC_WIRELESS	0x40 +#define UC_AOL          0x02 +#define UC_ADMIN        0x04 +#define UC_UNCONFIRMED  0x08 +#define UC_NORMAL       0x10 +#define UC_AB           0x20 +#define UC_WIRELESS     0x40  #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"  #define OSCAR_GROUP "Friends"  #define BUF_LEN 2048 -#define BUF_LONG ( BUF_LEN * 2 ) +#define BUF_LONG (BUF_LEN * 2)  /* Don't know if support for UTF8 is really working. For now it's UTF16 here.     static int gaim_caps = AIM_CAPS_UTF8; */  static int gaim_caps = AIM_CAPS_INTEROP | AIM_CAPS_ICHAT | AIM_CAPS_ICQSERVERRELAY | AIM_CAPS_CHAT; -static guint8 gaim_features[] = {0x01, 0x01, 0x01, 0x02}; +static guint8 gaim_features[] = { 0x01, 0x01, 0x01, 0x02 };  struct oscar_data {  	aim_session_t *sess; @@ -93,7 +93,7 @@ struct oscar_data {  	gboolean killme, no_reconnect;  	gboolean icq;  	GSList *evilhack; -	 +  	GHashTable *ips;  	struct { @@ -138,13 +138,19 @@ struct icq_auth {  	guint32 uin;  }; -static char *extract_name(const char *name) { +static char *extract_name(const char *name) +{  	char *tmp;  	int i, j;  	char *x = strchr(name, '-'); -	if (!x) return g_strdup(name); + +	if (!x) { +		return g_strdup(name); +	}  	x = strchr(++x, '-'); -	if (!x) return g_strdup(name); +	if (!x) { +		return g_strdup(name); +	}  	tmp = g_strdup(++x);  	for (i = 0, j = 0; x[i]; i++) { @@ -155,7 +161,7 @@ static char *extract_name(const char *name) {  		}  		strncpy(hex, x + ++i, 2); hex[2] = 0;  		i++; -		tmp[j++] = (char)strtol(hex, NULL, 16); +		tmp[j++] = (char) strtol(hex, NULL, 16);  	}  	tmp[j] = 0; @@ -163,14 +169,16 @@ static char *extract_name(const char *name) {  }  static struct chat_connection *find_oscar_chat_by_conn(struct im_connection *ic, -							aim_conn_t *conn) { -	GSList *g = ((struct oscar_data *)ic->proto_data)->oscar_chats; +                                                       aim_conn_t *conn) +{ +	GSList *g = ((struct oscar_data *) ic->proto_data)->oscar_chats;  	struct chat_connection *c = NULL;  	while (g) { -		c = (struct chat_connection *)g->data; -		if (c->conn == conn) +		c = (struct chat_connection *) g->data; +		if (c->conn == conn) {  			break; +		}  		g = g->next;  		c = NULL;  	} @@ -178,41 +186,41 @@ static struct chat_connection *find_oscar_chat_by_conn(struct im_connection *ic,  	return c;  } -static int gaim_parse_auth_resp  (aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_login      (aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_logout     (aim_session_t *, aim_frame_t *, ...); -static int gaim_handle_redirect  (aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_oncoming   (aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_offgoing   (aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_auth_resp(aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_login(aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_logout(aim_session_t *, aim_frame_t *, ...); +static int gaim_handle_redirect(aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_oncoming(aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_offgoing(aim_session_t *, aim_frame_t *, ...);  static int gaim_parse_incoming_im(aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_misses     (aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_motd       (aim_session_t *, aim_frame_t *, ...); -static int gaim_chatnav_info     (aim_session_t *, aim_frame_t *, ...); -static int gaim_chat_join        (aim_session_t *, aim_frame_t *, ...); -static int gaim_chat_leave       (aim_session_t *, aim_frame_t *, ...); -static int gaim_chat_info_update (aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_misses(aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_motd(aim_session_t *, aim_frame_t *, ...); +static int gaim_chatnav_info(aim_session_t *, aim_frame_t *, ...); +static int gaim_chat_join(aim_session_t *, aim_frame_t *, ...); +static int gaim_chat_leave(aim_session_t *, aim_frame_t *, ...); +static int gaim_chat_info_update(aim_session_t *, aim_frame_t *, ...);  static int gaim_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...); -static int gaim_bosrights        (aim_session_t *, aim_frame_t *, ...); -static int conninitdone_bos      (aim_session_t *, aim_frame_t *, ...); -static int conninitdone_admin    (aim_session_t *, aim_frame_t *, ...); -static int conninitdone_chat     (aim_session_t *, aim_frame_t *, ...); -static int conninitdone_chatnav  (aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_msgerr     (aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_ratechange(aim_session_t *, aim_frame_t *, ...); +static int gaim_bosrights(aim_session_t *, aim_frame_t *, ...); +static int conninitdone_bos(aim_session_t *, aim_frame_t *, ...); +static int conninitdone_admin(aim_session_t *, aim_frame_t *, ...); +static int conninitdone_chat(aim_session_t *, aim_frame_t *, ...); +static int conninitdone_chatnav(aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_msgerr(aim_session_t *, aim_frame_t *, ...);  static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);  static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_locerr     (aim_session_t *, aim_frame_t *, ...); -static int gaim_icbm_param_info  (aim_session_t *, aim_frame_t *, ...); -static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...); -static int gaim_selfinfo         (aim_session_t *, aim_frame_t *, ...); -static int gaim_offlinemsg       (aim_session_t *, aim_frame_t *, ...); -static int gaim_offlinemsgdone   (aim_session_t *, aim_frame_t *, ...); -static int gaim_ssi_parserights  (aim_session_t *, aim_frame_t *, ...); -static int gaim_ssi_parselist    (aim_session_t *, aim_frame_t *, ...); -static int gaim_ssi_parseack     (aim_session_t *, aim_frame_t *, ...); -static int gaim_parsemtn         (aim_session_t *, aim_frame_t *, ...); -static int gaim_icqinfo          (aim_session_t *, aim_frame_t *, ...); -static int gaim_parseaiminfo     (aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_locerr(aim_session_t *, aim_frame_t *, ...); +static int gaim_icbm_param_info(aim_session_t *, aim_frame_t *, ...); +static int gaim_parse_genericerr(aim_session_t *, aim_frame_t *, ...); +static int gaim_selfinfo(aim_session_t *, aim_frame_t *, ...); +static int gaim_offlinemsg(aim_session_t *, aim_frame_t *, ...); +static int gaim_offlinemsgdone(aim_session_t *, aim_frame_t *, ...); +static int gaim_ssi_parserights(aim_session_t *, aim_frame_t *, ...); +static int gaim_ssi_parselist(aim_session_t *, aim_frame_t *, ...); +static int gaim_ssi_parseack(aim_session_t *, aim_frame_t *, ...); +static int gaim_parsemtn(aim_session_t *, aim_frame_t *, ...); +static int gaim_icqinfo(aim_session_t *, aim_frame_t *, ...); +static int gaim_parseaiminfo(aim_session_t *, aim_frame_t *, ...);  static char *msgerrreason[] = {  	"Invalid error", @@ -267,8 +275,9 @@ static char *normalize(const char *s)  }  static gboolean oscar_callback(gpointer data, gint source, -				b_input_condition condition) { -	aim_conn_t *conn = (aim_conn_t *)data; +                               b_input_condition condition) +{ +	aim_conn_t *conn = (aim_conn_t *) data;  	aim_session_t *sess = aim_conn_getsess(conn);  	struct im_connection *ic = sess ? sess->aux_data : NULL;  	struct oscar_data *odata; @@ -277,50 +286,54 @@ static gboolean oscar_callback(gpointer data, gint source,  		/* ic is null. we return, else we seg SIGSEG on next line. */  		return FALSE;  	} -       +  	if (!g_slist_find(get_connections(), ic)) { -		/* oh boy. this is probably bad. i guess the only thing we  +		/* oh boy. this is probably bad. i guess the only thing we  		 * can really do is return? */  		return FALSE;  	} -	odata = (struct oscar_data *)ic->proto_data; +	odata = (struct oscar_data *) ic->proto_data;  	if (condition & B_EV_IO_READ) {  		if (aim_get_command(odata->sess, conn) >= 0) {  			aim_rxdispatch(odata->sess); -                               if (odata->killme) -                                       imc_logout(ic, !odata->no_reconnect); +			if (odata->killme) { +				imc_logout(ic, !odata->no_reconnect); +			}  		} else {  			if ((conn->type == AIM_CONN_TYPE_BOS) || -				   !(aim_getconn_type(odata->sess, AIM_CONN_TYPE_BOS))) { +			    !(aim_getconn_type(odata->sess, AIM_CONN_TYPE_BOS))) {  				imcb_error(ic, _("Disconnected."));  				imc_logout(ic, TRUE);  			} else if (conn->type == AIM_CONN_TYPE_CHAT) {  				struct chat_connection *c = find_oscar_chat_by_conn(ic, conn);  				c->conn = NULL; -				if (c->inpa > 0) +				if (c->inpa > 0) {  					b_event_remove(c->inpa); +				}  				c->inpa = 0;  				c->fd = -1;  				aim_conn_kill(odata->sess, &conn);  				imcb_error(sess->aux_data, _("You have been disconnected from chat room %s."), c->name);  			} else if (conn->type == AIM_CONN_TYPE_CHATNAV) { -				if (odata->cnpa > 0) +				if (odata->cnpa > 0) {  					b_event_remove(odata->cnpa); +				}  				odata->cnpa = 0;  				while (odata->create_rooms) {  					struct create_room *cr = odata->create_rooms->data;  					g_free(cr->name);  					odata->create_rooms = -						g_slist_remove(odata->create_rooms, cr); +					        g_slist_remove(odata->create_rooms, cr);  					g_free(cr);  					imcb_error(sess->aux_data, _("Chat is currently unavailable"));  				}  				aim_conn_kill(odata->sess, &conn);  			} else if (conn->type == AIM_CONN_TYPE_AUTH) { -				if (odata->paspa > 0) +				if (odata->paspa > 0) {  					b_event_remove(odata->paspa); +				}  				odata->paspa = 0;  				aim_conn_kill(odata->sess, &conn);  			} else { @@ -331,7 +344,7 @@ static gboolean oscar_callback(gpointer data, gint source,  		/* WTF??? */  		return FALSE;  	} -		 +  	return TRUE;  } @@ -359,8 +372,8 @@ static gboolean oscar_login_connect(gpointer data, gint source, b_input_conditio  	aim_conn_completeconnect(sess, conn);  	ic->inpa = b_input_add(conn->fd, B_EV_IO_READ, -			oscar_callback, conn); -	 +	                       oscar_callback, conn); +  	return FALSE;  } @@ -368,35 +381,37 @@ static void oscar_init(account_t *acc)  {  	set_t *s;  	gboolean icq = g_ascii_isdigit(acc->user[0]); -	 +  	if (icq) {  		set_add(&acc->set, "ignore_auth_requests", "false", set_eval_bool, acc);  		set_add(&acc->set, "old_icq_auth", "false", set_eval_bool, acc);  	} -	 +  	s = set_add(&acc->set, "server",  	            icq ? AIM_DEFAULT_LOGIN_SERVER_ICQ -	                : AIM_DEFAULT_LOGIN_SERVER_AIM, set_eval_account, acc); +		    : AIM_DEFAULT_LOGIN_SERVER_AIM, set_eval_account, acc);  	s->flags |= SET_NOSAVE | ACC_SET_OFFLINE_ONLY; -	 +  	if (icq) {  		s = set_add(&acc->set, "web_aware", "false", set_eval_bool, acc);  		s->flags |= ACC_SET_OFFLINE_ONLY;  	} -	 +  	acc->flags |= ACC_FLAG_AWAY_MESSAGE;  } -static void oscar_login(account_t *acc) { +static void oscar_login(account_t *acc) +{  	aim_session_t *sess;  	aim_conn_t *conn;  	struct im_connection *ic = imcb_new(acc);  	struct oscar_data *odata = ic->proto_data = g_new0(struct oscar_data, 1); -	if (g_ascii_isdigit(acc->user[0])) +	if (g_ascii_isdigit(acc->user[0])) {  		odata->icq = TRUE; -	else +	} else {  		ic->flags |= OPT_DOES_HTML; +	}  	sess = g_new0(aim_session_t, 1); @@ -414,7 +429,7 @@ static void oscar_login(account_t *acc) {  		imc_logout(ic, TRUE);  		return;  	} -	 +  	imcb_log(ic, _("Signon: %s"), ic->acc->user);  	aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0); @@ -431,13 +446,15 @@ static void oscar_login(account_t *acc) {  	aim_request_login(sess, conn, ic->acc->user);  } -static void oscar_logout(struct im_connection *ic) { -	struct oscar_data *odata = (struct oscar_data *)ic->proto_data; -	 +static void oscar_logout(struct im_connection *ic) +{ +	struct oscar_data *odata = (struct oscar_data *) ic->proto_data; +  	while (odata->oscar_chats) {  		struct chat_connection *n = odata->oscar_chats->data; -		if (n->inpa > 0) +		if (n->inpa > 0) {  			b_event_remove(n->inpa); +		}  		g_free(n->name);  		g_free(n->show);  		odata->oscar_chats = g_slist_remove(odata->oscar_chats, n); @@ -449,20 +466,27 @@ static void oscar_logout(struct im_connection *ic) {  		odata->create_rooms = g_slist_remove(odata->create_rooms, cr);  		g_free(cr);  	} -	if (odata->ips) +	if (odata->ips) {  		g_hash_table_destroy(odata->ips); -	if (odata->email) +	} +	if (odata->email) {  		g_free(odata->email); -	if (odata->newp) +	} +	if (odata->newp) {  		g_free(odata->newp); -	if (odata->oldp) +	} +	if (odata->oldp) {  		g_free(odata->oldp); -	if (ic->inpa > 0) +	} +	if (ic->inpa > 0) {  		b_event_remove(ic->inpa); -	if (odata->cnpa > 0) +	} +	if (odata->cnpa > 0) {  		b_event_remove(odata->cnpa); -	if (odata->paspa > 0) +	} +	if (odata->paspa > 0) {  		b_event_remove(odata->paspa); +	}  	aim_session_kill(odata->sess);  	g_free(odata->sess);  	odata->sess = NULL; @@ -470,7 +494,8 @@ static void oscar_logout(struct im_connection *ic) {  	ic->proto_data = NULL;  } -static gboolean oscar_bos_connect(gpointer data, gint source, b_input_condition cond) { +static gboolean oscar_bos_connect(gpointer data, gint source, b_input_condition cond) +{  	struct im_connection *ic = data;  	struct oscar_data *odata;  	aim_session_t *sess; @@ -493,20 +518,22 @@ static gboolean oscar_bos_connect(gpointer data, gint source, b_input_condition  	aim_conn_completeconnect(sess, bosconn);  	ic->inpa = b_input_add(bosconn->fd, B_EV_IO_READ, -			oscar_callback, bosconn); +	                       oscar_callback, bosconn);  	imcb_log(ic, _("Connection established, cookie sent")); -	 +  	return FALSE;  } -static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	struct aim_authresp_info *info;  	int i; char *host; int port;  	aim_conn_t *bosconn;  	struct im_connection *ic = sess->aux_data; -        struct oscar_data *od = ic->proto_data; +	struct oscar_data *od = ic->proto_data; +  	port = AIM_LOGIN_PORT;  	va_start(ap, fr); @@ -520,11 +547,12 @@ static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {  			imcb_error(ic, _("Incorrect nickname or password."));  			{  				int max = od->icq ? 8 : 16; -				if (strlen(ic->acc->pass) > max) +				if (strlen(ic->acc->pass) > max) {  					imcb_log(ic, "Note that the maximum password "  					         "length supported by this protocol is "  					         "%d characters, try logging in using "  					         "a shorter password.", max); +				}  			}  //			plugin_event(event_error, (void *)980, 0, 0, 0);  			break; @@ -535,7 +563,9 @@ static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {  		case 0x18:  			/* connecting too frequently */  			od->no_reconnect = TRUE; -			imcb_error(ic, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer.")); +			imcb_error(ic, +			           _( +			                   "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."));  			break;  		case 0x1c:  			/* client too old */ @@ -588,10 +618,10 @@ static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {  	aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MTN, gaim_parsemtn, 0);  	aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_parse_logout, 0); -	((struct oscar_data *)ic->proto_data)->conn = bosconn; -	for (i = 0; i < (int)strlen(info->bosip); i++) { +	((struct oscar_data *) ic->proto_data)->conn = bosconn; +	for (i = 0; i < (int) strlen(info->bosip); i++) {  		if (info->bosip[i] == ':') { -			port = atoi(&(info->bosip[i+1])); +			port = atoi(&(info->bosip[i + 1]));  			break;  		}  	} @@ -613,9 +643,10 @@ static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {  /* size of icbmui.ocm, the largest module in AIM 3.5 */  #define AIM_MAX_FILE_SIZE 98304 -static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) +{  #if 0 -	struct client_info_s info = {"gaim", 4, 1, 2010, "us", "en", 0x0004, 0x0000, 0x04b}; +	struct client_info_s info = { "gaim", 4, 1, 2010, "us", "en", 0x0004, 0x0000, 0x04b };  #else  	struct client_info_s info = AIM_CLIENTINFO_KNOWNGOOD;  #endif @@ -632,7 +663,8 @@ static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_parse_logout(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_logout(aim_session_t *sess, aim_frame_t *fr, ...) +{  	struct im_connection *ic = sess->aux_data;  	struct oscar_data *odata = ic->proto_data;  	int code; @@ -641,22 +673,23 @@ static int gaim_parse_logout(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_start(ap, fr);  	code = va_arg(ap, int);  	va_end(ap); -	 -	imcb_error( ic, "Connection aborted by server: %s", code == 1 ? -	                "someone else logged in with your account" : -	                "unknown reason" ); -	 + +	imcb_error(ic, "Connection aborted by server: %s", code == 1 ? +	           "someone else logged in with your account" : +	           "unknown reason"); +  	/* Tell BitlBee to disable auto_reconnect if code == 1, since that  	   means a concurrent login somewhere else. */  	odata->no_reconnect = code == 1; -	 +  	/* DO NOT log out here! Just tell the callback to do it. */  	odata->killme = TRUE;  	return 1;  } -static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) { +static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) +{  	struct im_connection *ic = sess->aux_data;  	struct chat_connection *chatcon;  	struct groupchat *c = NULL; @@ -672,18 +705,20 @@ static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) {  	chatcon = find_oscar_chat_by_conn(ic, fr->conn);  	chatcon->id = id; -	 +  	c = bee_chat_by_title(ic->bee, ic, chatcon->show); -	if (c && !c->data) +	if (c && !c->data) {  		chatcon->cnv = c; -	else +	} else {  		chatcon->cnv = imcb_chat_new(ic, chatcon->show); +	}  	chatcon->cnv->data = chatcon;  	return 1;  } -static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) { +static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) +{  	aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_ERROR, gaim_parse_genericerr, 0);  	aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0); @@ -695,7 +730,8 @@ static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static gboolean oscar_chatnav_connect(gpointer data, gint source, b_input_condition cond) { +static gboolean oscar_chatnav_connect(gpointer data, gint source, b_input_condition cond) +{  	struct im_connection *ic = data;  	struct oscar_data *odata;  	aim_session_t *sess; @@ -717,8 +753,8 @@ static gboolean oscar_chatnav_connect(gpointer data, gint source, b_input_condit  	aim_conn_completeconnect(sess, tstconn);  	odata->cnpa = b_input_add(tstconn->fd, B_EV_IO_READ, -					oscar_callback, tstconn); -	 +	                          oscar_callback, tstconn); +  	return FALSE;  } @@ -745,8 +781,8 @@ static gboolean oscar_auth_connect(gpointer data, gint source, b_input_condition  	aim_conn_completeconnect(sess, tstconn);  	odata->paspa = b_input_add(tstconn->fd, B_EV_IO_READ, -				oscar_callback, tstconn); -	 +	                           oscar_callback, tstconn); +  	return FALSE;  } @@ -780,15 +816,16 @@ static gboolean oscar_chat_connect(gpointer data, gint source, b_input_condition  	aim_conn_completeconnect(sess, ccon->conn);  	ccon->inpa = b_input_add(tstconn->fd, -			B_EV_IO_READ, -			oscar_callback, tstconn); +	                         B_EV_IO_READ, +	                         oscar_callback, tstconn);  	odata->oscar_chats = g_slist_append(odata->oscar_chats, ccon); -	 +  	return FALSE;  }  /* Hrmph. I don't know how to make this look better. --mid */ -static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	struct aim_redirect_data *redir;  	struct im_connection *ic = sess->aux_data; @@ -802,22 +839,23 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_end(ap);  	port = AIM_LOGIN_PORT; -	for (i = 0; i < (int)strlen(redir->ip); i++) { +	for (i = 0; i < (int) strlen(redir->ip); i++) {  		if (redir->ip[i] == ':') { -			port = atoi(&(redir->ip[i+1])); +			port = atoi(&(redir->ip[i + 1]));  			break;  		}  	}  	host = g_strndup(redir->ip, i); -	switch(redir->group) { +	switch (redir->group) {  	case 0x7: /* Authorizer */  		tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);  		if (tstconn == NULL) {  			g_free(host);  			return 1;  		} -		aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, 0); +		aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, +		                    0);  //		aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0);  //		aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0);  //		aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0); @@ -837,7 +875,8 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  			g_free(host);  			return 1;  		} -		aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chatnav, 0); +		aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, +		                    conninitdone_chatnav, 0);  		tstconn->status |= AIM_CONN_STATUS_INPROGRESS;  		tstconn->fd = proxy_connect(host, port, oscar_chatnav_connect, ic); @@ -849,7 +888,7 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  		aim_sendcookie(sess, tstconn, redir->cookie);  		break;  	case 0xe: /* Chat */ -		{ +	{  		struct chat_connection *ccon;  		tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL); @@ -858,7 +897,8 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  			return 1;  		} -		aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, 0); +		aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, +		                    0);  		ccon = g_new0(struct chat_connection, 1);  		ccon->conn = tstconn; @@ -868,7 +908,7 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  		ccon->exchange = redir->chat.exchange;  		ccon->instance = redir->chat.instance;  		ccon->show = extract_name(redir->chat.room); -		 +  		ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;  		ccon->conn->fd = proxy_connect(host, port, oscar_chat_connect, ccon);  		if (ccon->conn->fd < 0) { @@ -880,8 +920,8 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  			return 1;  		}  		aim_sendcookie(sess, tstconn, redir->cookie); -		} -		break; +	} +	break;  	default: /* huh? */  		break;  	} @@ -890,7 +930,8 @@ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) +{  	struct im_connection *ic = sess->aux_data;  	struct oscar_data *od = ic->proto_data;  	aim_userinfo_t *info; @@ -899,51 +940,58 @@ static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) {  	char *tmp, *state_string = NULL;  	va_list ap; +  	va_start(ap, fr);  	info = va_arg(ap, aim_userinfo_t *);  	va_end(ap);  	if ((!od->icq) && (info->present & AIM_USERINFO_PRESENT_FLAGS)) { -		if (info->flags & AIM_FLAG_AWAY) +		if (info->flags & AIM_FLAG_AWAY) {  			flags |= OPT_AWAY; +		}  	} -	 +  	/* Maybe this should be done just for AIM contacts, not sure. */ -	if (info->flags & AIM_FLAG_WIRELESS) +	if (info->flags & AIM_FLAG_WIRELESS) {  		flags |= OPT_MOBILE; -	 +	} +  	if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {  		if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) && -		      (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) { +		    (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {  			flags |= OPT_AWAY;  		} -		 -		if( info->icqinfo.status & AIM_ICQ_STATE_DND ) + +		if (info->icqinfo.status & AIM_ICQ_STATE_DND) {  			state_string = "Do Not Disturb"; -		else if( info->icqinfo.status & AIM_ICQ_STATE_OUT ) +		} else if (info->icqinfo.status & AIM_ICQ_STATE_OUT) {  			state_string = "Not Available"; -		else if( info->icqinfo.status & AIM_ICQ_STATE_BUSY ) +		} else if (info->icqinfo.status & AIM_ICQ_STATE_BUSY) {  			state_string = "Occupied"; -		else if( info->icqinfo.status & AIM_ICQ_STATE_INVISIBLE ) +		} else if (info->icqinfo.status & AIM_ICQ_STATE_INVISIBLE) {  			state_string = "Invisible"; +		}  	}  	if (info->present & AIM_USERINFO_PRESENT_IDLE) {  		time(&time_idle); -		time_idle -= info->idletime*60; +		time_idle -= info->idletime * 60;  	} -	if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) +	if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) {  		signon = time(NULL) - info->sessionlen; +	}  	if (info->present & AIM_USERINFO_PRESENT_ICQIPADDR) {  		uint32_t *uin = g_new0(uint32_t, 1); -		 -		if (od->ips == NULL) + +		if (od->ips == NULL) {  			od->ips = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, NULL); -		 -		if (sscanf(info->sn, "%d", uin) == 1) +		} + +		if (sscanf(info->sn, "%d", uin) == 1) {  			g_hash_table_insert(od->ips, uin, (gpointer) (long) info->icqinfo.ipaddr); +		}  	}  	tmp = normalize(info->sn); @@ -954,7 +1002,8 @@ static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) +{  	aim_userinfo_t *info;  	va_list ap;  	struct im_connection *ic = sess->aux_data; @@ -963,42 +1012,46 @@ static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) {  	info = va_arg(ap, aim_userinfo_t *);  	va_end(ap); -	imcb_buddy_status(ic, normalize(info->sn), 0, NULL, NULL ); +	imcb_buddy_status(ic, normalize(info->sn), 0, NULL, NULL);  	return 1;  } -static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) { +static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, +                            struct aim_incomingim_ch1_args *args) +{  	char *tmp = g_malloc(BUF_LONG + 1);  	struct im_connection *ic = sess->aux_data;  	int flags = 0; -	 -	if (args->icbmflags & AIM_IMFLAGS_AWAY) + +	if (args->icbmflags & AIM_IMFLAGS_AWAY) {  		flags |= OPT_AWAY; -	 +	} +  	if ((args->icbmflags & AIM_IMFLAGS_UNICODE) || (args->icbmflags & AIM_IMFLAGS_ISO_8859_1)) {  		char *src; -		 -		if (args->icbmflags & AIM_IMFLAGS_UNICODE) + +		if (args->icbmflags & AIM_IMFLAGS_UNICODE) {  			src = "UCS-2BE"; -		else +		} else {  			src = "ISO8859-1"; -		 +		} +  		/* Try to use iconv first to convert the message to UTF8 - which is what BitlBee expects */  		if (do_iconv(src, "UTF-8", args->msg, tmp, args->msglen, BUF_LONG) >= 0) {  			// Successfully converted!  		} else if (args->icbmflags & AIM_IMFLAGS_UNICODE) {  			int i; -			 +  			for (i = 0, tmp[0] = '\0'; i < args->msglen; i += 2) {  				unsigned short uni; -				 -				uni = ((args->msg[i] & 0xff) << 8) | (args->msg[i+1] & 0xff); -	 + +				uni = ((args->msg[i] & 0xff) << 8) | (args->msg[i + 1] & 0xff); +  				if ((uni < 128) || ((uni >= 160) && (uni <= 255))) { /* ISO 8859-1 */ -					g_snprintf(tmp+strlen(tmp), BUF_LONG-strlen(tmp), "%c", uni); +					g_snprintf(tmp + strlen(tmp), BUF_LONG - strlen(tmp), "%c", uni);  				} else { /* something else, do UNICODE entity */ -					g_snprintf(tmp+strlen(tmp), BUF_LONG-strlen(tmp), "&#%04x;", uni); +					g_snprintf(tmp + strlen(tmp), BUF_LONG - strlen(tmp), "&#%04x;", uni);  				}  			}  		} else { @@ -1008,31 +1061,34 @@ static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_  		g_snprintf(tmp, BUF_LONG, "%s", args->msg);  	} else {  		aim_mpmsg_section_t *part; -		 +  		*tmp = 0;  		for (part = args->mpmsg.parts; part; part = part->next) {  			if (part->data) { -				g_strlcat(tmp, (char*) part->data, BUF_LONG); +				g_strlcat(tmp, (char *) part->data, BUF_LONG);  				g_strlcat(tmp, "\n", BUF_LONG);  			}  		}  	} -	 +  	strip_linefeed(tmp);  	imcb_buddy_msg(ic, normalize(userinfo->sn), tmp, flags, 0);  	g_free(tmp); -	 +  	return 1;  }  void oscar_accept_chat(void *data);  void oscar_reject_chat(void *data); -	 -static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) { + +static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, +                            struct aim_incomingim_ch2_args *args) +{  	struct im_connection *ic = sess->aux_data; -	if (args->status != AIM_RENDEZVOUS_PROPOSE) +	if (args->status != AIM_RENDEZVOUS_PROPOSE) {  		return 1; +	}  	if (args->reqclass & AIM_CAPS_CHAT) {  		char *name = extract_name(args->info.chat.roominfo.name); @@ -1050,14 +1106,15 @@ static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_  		inv->ic = ic;  		inv->exchange = *exch;  		inv->name = g_strdup(name); -		 +  		imcb_ask(ic, txt, inv, oscar_accept_chat, oscar_reject_chat); -	 -		if (name) + +		if (name) {  			g_free(name); +		}  	} else if (args->reqclass & AIM_CAPS_ICQRTF) {  		// TODO: constify -		char text[strlen(args->info.rtfmsg.rtfmsg)+1]; +		char text[strlen(args->info.rtfmsg.rtfmsg) + 1];  		strncpy(text, args->info.rtfmsg.rtfmsg, sizeof(text));  		imcb_buddy_msg(ic, normalize(userinfo->sn), text, 0, 0);  	} @@ -1065,32 +1122,34 @@ static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_  	return 1;  } -static void gaim_icq_authgrant(void *data_) { +static void gaim_icq_authgrant(void *data_) +{  	struct icq_auth *data = data_;  	char *uin; -	struct oscar_data *od = (struct oscar_data *)data->ic->proto_data; -	 +	struct oscar_data *od = (struct oscar_data *) data->ic->proto_data; +  	uin = g_strdup_printf("%u", data->uin);  	aim_ssi_auth_reply(od->sess, od->conn, uin, 1, "");  	// char *message = 0;  	// aim_send_im_ch4(od->sess, uin, AIM_ICQMSG_AUTHGRANTED, &message);  	imcb_ask_add(data->ic, uin, NULL); -	 +  	g_free(uin);  	g_free(data);  } -static void gaim_icq_authdeny(void *data_) { +static void gaim_icq_authdeny(void *data_) +{  	struct icq_auth *data = data_;  	char *uin, *message; -	struct oscar_data *od = (struct oscar_data *)data->ic->proto_data; -	 +	struct oscar_data *od = (struct oscar_data *) data->ic->proto_data; +  	uin = g_strdup_printf("%u", data->uin);  	message = g_strdup_printf("No reason given.");  	aim_ssi_auth_reply(od->sess, od->conn, uin, 0, "");  	// aim_send_im_ch4(od->sess, uin, AIM_ICQMSG_AUTHDENIED, message);  	g_free(message); -	 +  	g_free(uin);  	g_free(data);  } @@ -1098,84 +1157,94 @@ static void gaim_icq_authdeny(void *data_) {  /*   * For when other people ask you for authorization   */ -static void gaim_icq_authask(struct im_connection *ic, guint32 uin, char *msg) { +static void gaim_icq_authask(struct im_connection *ic, guint32 uin, char *msg) +{  	struct icq_auth *data;  	char *reason = NULL;  	char *dialog_msg; -	if (set_getbool(&ic->acc->set, "ignore_auth_requests")) +	if (set_getbool(&ic->acc->set, "ignore_auth_requests")) {  		return; -	 +	} +  	data = g_new(struct icq_auth, 1); -	if (strlen(msg) > 6) +	if (strlen(msg) > 6) {  		reason = msg + 6; -	 -	dialog_msg = g_strdup_printf("The user %u wants to add you to their buddy list for the following reason: %s", uin, reason ? reason : "No reason given."); +	} + +	dialog_msg = g_strdup_printf("The user %u wants to add you to their buddy list for the following reason: %s", +	                             uin, reason ? reason : "No reason given.");  	data->ic = ic;  	data->uin = uin;  	imcb_ask(ic, dialog_msg, data, gaim_icq_authgrant, gaim_icq_authdeny);  	g_free(dialog_msg);  } -static int incomingim_chan4(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch4_args *args) { +static int incomingim_chan4(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, +                            struct aim_incomingim_ch4_args *args) +{  	struct im_connection *ic = sess->aux_data;  	switch (args->type) { -		case 0x0001: { /* An almost-normal instant message.  Mac ICQ sends this.  It's peculiar. */ -			char *uin, *message; -			uin = g_strdup_printf("%u", args->uin); -			message = g_strdup(args->msg); -			strip_linefeed(message); -			imcb_buddy_msg(ic, normalize(uin), message, 0, 0); -			g_free(uin); -			g_free(message); -		} break; - -		case 0x0004: { /* Someone sent you a URL */ -		  	char *uin, *message; -			char **m; -	 -			uin = g_strdup_printf("%u", args->uin); -			m = g_strsplit(args->msg, "\376", 2); - -			if ((strlen(m[0]) != 0)) { -			  message = g_strjoinv(" -- ", m); -			} else { -			  message = m[1]; -			} +	case 0x0001: {         /* An almost-normal instant message.  Mac ICQ sends this.  It's peculiar. */ +		char *uin, *message; +		uin = g_strdup_printf("%u", args->uin); +		message = g_strdup(args->msg); +		strip_linefeed(message); +		imcb_buddy_msg(ic, normalize(uin), message, 0, 0); +		g_free(uin); +		g_free(message); +	} break; + +	case 0x0004: {         /* Someone sent you a URL */ +		char *uin, *message; +		char **m; + +		uin = g_strdup_printf("%u", args->uin); +		m = g_strsplit(args->msg, "\376", 2); + +		if ((strlen(m[0]) != 0)) { +			message = g_strjoinv(" -- ", m); +		} else { +			message = m[1]; +		} + +		strip_linefeed(message); +		imcb_buddy_msg(ic, normalize(uin), message, 0, 0); +		g_free(uin); +		g_free(m); +		g_free(message); +	} break; -			strip_linefeed(message); -			imcb_buddy_msg(ic, normalize(uin), message, 0, 0); -			g_free(uin); -			g_free(m); -			g_free(message); -		} break; -		 -		case 0x0006: { /* Someone requested authorization */ -			gaim_icq_authask(ic, args->uin, args->msg); -		} break; +	case 0x0006: {         /* Someone requested authorization */ +		gaim_icq_authask(ic, args->uin, args->msg); +	} break; -		case 0x0007: { /* Someone has denied you authorization */ -			imcb_log(sess->aux_data, "The user %u has denied your request to add them to your contact list for the following reason:\n%s", args->uin, args->msg ? args->msg : _("No reason given.") ); -		} break; +	case 0x0007: {         /* Someone has denied you authorization */ +		imcb_log(sess->aux_data, +		         "The user %u has denied your request to add them to your contact list for the following reason:\n%s", args->uin, +		         args->msg ? args->msg : _("No reason given.")); +	} break; -		case 0x0008: { /* Someone has granted you authorization */ -			imcb_log(sess->aux_data, "The user %u has granted your request to add them to your contact list for the following reason:\n%s", args->uin, args->msg ? args->msg : _("No reason given.") ); -		} break; +	case 0x0008: {         /* Someone has granted you authorization */ +		imcb_log(sess->aux_data, +		         "The user %u has granted your request to add them to your contact list for the following reason:\n%s", args->uin, +		         args->msg ? args->msg : _("No reason given.")); +	} break; -		case 0x0012: { -			/* Ack for authorizing/denying someone.  Or possibly an ack for sending any system notice */ -		} break; +	case 0x0012: { +		/* Ack for authorizing/denying someone.  Or possibly an ack for sending any system notice */ +	} break; -		default: {; -		} break; +	default: {; } break;  	}  	return 1;  } -static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) +{  	int channel, ret = 0;  	aim_userinfo_t *userinfo;  	va_list ap; @@ -1185,26 +1254,25 @@ static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) {  	userinfo = va_arg(ap, aim_userinfo_t *);  	switch (channel) { -		case 1: { /* standard message */ -			struct aim_incomingim_ch1_args *args; -			args = va_arg(ap, struct aim_incomingim_ch1_args *); -			ret = incomingim_chan1(sess, fr->conn, userinfo, args); -		} break; +	case 1: {         /* standard message */ +		struct aim_incomingim_ch1_args *args; +		args = va_arg(ap, struct aim_incomingim_ch1_args *); +		ret = incomingim_chan1(sess, fr->conn, userinfo, args); +	} break; -		case 2: { /* rendevous */ -			struct aim_incomingim_ch2_args *args; -			args = va_arg(ap, struct aim_incomingim_ch2_args *); -			ret = incomingim_chan2(sess, fr->conn, userinfo, args); -		} break; +	case 2: {         /* rendevous */ +		struct aim_incomingim_ch2_args *args; +		args = va_arg(ap, struct aim_incomingim_ch2_args *); +		ret = incomingim_chan2(sess, fr->conn, userinfo, args); +	} break; -		case 4: { /* ICQ */ -			struct aim_incomingim_ch4_args *args; -			args = va_arg(ap, struct aim_incomingim_ch4_args *); -			ret = incomingim_chan4(sess, fr->conn, userinfo, args); -		} break; +	case 4: {         /* ICQ */ +		struct aim_incomingim_ch4_args *args; +		args = va_arg(ap, struct aim_incomingim_ch4_args *); +		ret = incomingim_chan4(sess, fr->conn, userinfo, args); +	} break; -		default: {; -		} break; +	default: {; } break;  	}  	va_end(ap); @@ -1212,7 +1280,8 @@ static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) {  	return ret;  } -static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	guint16 nummissed, reason;  	aim_userinfo_t *userinfo; @@ -1220,183 +1289,190 @@ static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_start(ap, fr);  	va_arg(ap, unsigned int); /* chan */  	userinfo = va_arg(ap, aim_userinfo_t *); -	nummissed = (guint16)va_arg(ap, unsigned int); -	reason = (guint16)va_arg(ap, unsigned int); +	nummissed = (guint16) va_arg(ap, unsigned int); +	reason = (guint16) va_arg(ap, unsigned int);  	va_end(ap); -	switch(reason) { -		case 0: -			/* Invalid (0) */ -			imcb_error(sess->aux_data, -				   nummissed == 1 ?  -				   _("You missed %d message from %s because it was invalid.") : -				   _("You missed %d messages from %s because they were invalid."), -				   nummissed, -				   userinfo->sn); -			break; -		case 1: -			/* Message too large */ -			imcb_error(sess->aux_data, -				   nummissed == 1 ? -				   _("You missed %d message from %s because it was too large.") : -				   _("You missed %d messages from %s because they were too large."), -				   nummissed, -				   userinfo->sn); -			break; -		case 2: -			/* Rate exceeded */ -			imcb_error(sess->aux_data, -				   nummissed == 1 ?  -				   _("You missed %d message from %s because the rate limit has been exceeded.") : -				   _("You missed %d messages from %s because the rate limit has been exceeded."), -				   nummissed, -				   userinfo->sn); -			break; -		case 3: -			/* Evil Sender */ -			imcb_error(sess->aux_data, -				   nummissed == 1 ? -				   _("You missed %d message from %s because it was too evil.") :  -				   _("You missed %d messages from %s because they are too evil."), -				   nummissed, -				   userinfo->sn); -			break; -		case 4: -			/* Evil Receiver */ -			imcb_error(sess->aux_data, -				   nummissed == 1 ?  -				   _("You missed %d message from %s because you are too evil.") : -				   _("You missed %d messages from %s because you are too evil."), -				   nummissed, -				   userinfo->sn); -			break; -		default: -			imcb_error(sess->aux_data, -				   nummissed == 1 ?  -				   _("You missed %d message from %s for unknown reasons.") : -				   _("You missed %d messages from %s for unknown reasons."), -				   nummissed, -				   userinfo->sn); -			break; +	switch (reason) { +	case 0: +		/* Invalid (0) */ +		imcb_error(sess->aux_data, +		           nummissed == 1 ? +		           _("You missed %d message from %s because it was invalid.") : +		           _("You missed %d messages from %s because they were invalid."), +		           nummissed, +		           userinfo->sn); +		break; +	case 1: +		/* Message too large */ +		imcb_error(sess->aux_data, +		           nummissed == 1 ? +		           _("You missed %d message from %s because it was too large.") : +		           _("You missed %d messages from %s because they were too large."), +		           nummissed, +		           userinfo->sn); +		break; +	case 2: +		/* Rate exceeded */ +		imcb_error(sess->aux_data, +		           nummissed == 1 ? +		           _("You missed %d message from %s because the rate limit has been exceeded.") : +		           _("You missed %d messages from %s because the rate limit has been exceeded."), +		           nummissed, +		           userinfo->sn); +		break; +	case 3: +		/* Evil Sender */ +		imcb_error(sess->aux_data, +		           nummissed == 1 ? +		           _("You missed %d message from %s because it was too evil.") : +		           _("You missed %d messages from %s because they are too evil."), +		           nummissed, +		           userinfo->sn); +		break; +	case 4: +		/* Evil Receiver */ +		imcb_error(sess->aux_data, +		           nummissed == 1 ? +		           _("You missed %d message from %s because you are too evil.") : +		           _("You missed %d messages from %s because you are too evil."), +		           nummissed, +		           userinfo->sn); +		break; +	default: +		imcb_error(sess->aux_data, +		           nummissed == 1 ? +		           _("You missed %d message from %s for unknown reasons.") : +		           _("You missed %d messages from %s for unknown reasons."), +		           nummissed, +		           userinfo->sn); +		break;  	}  	return 1;  } -static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	guint16 reason;  	va_start(ap, fr); -	reason = (guint16)va_arg(ap, unsigned int); +	reason = (guint16) va_arg(ap, unsigned int);  	va_end(ap);  	imcb_error(sess->aux_data, _("SNAC threw error: %s"), -	          reason < msgerrreasonlen ? msgerrreason[reason] : "Unknown error"); +	           reason < msgerrreasonlen ? msgerrreason[reason] : "Unknown error");  	return 1;  } -static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	char *destn;  	guint16 reason;  	va_start(ap, fr); -	reason = (guint16)va_arg(ap, unsigned int); +	reason = (guint16) va_arg(ap, unsigned int);  	destn = va_arg(ap, char *);  	va_end(ap);  	imcb_error(sess->aux_data, _("Your message to %s did not get sent: %s"), destn, -			(reason < msgerrreasonlen) ? msgerrreason[reason] : _("Reason unknown")); +	           (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Reason unknown"));  	return 1;  } -static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	char *destn;  	guint16 reason;  	va_start(ap, fr); -	reason = (guint16)va_arg(ap, unsigned int); +	reason = (guint16) va_arg(ap, unsigned int);  	destn = va_arg(ap, char *);  	va_end(ap);  	imcb_error(sess->aux_data, _("User information for %s unavailable: %s"), destn, -			(reason < msgerrreasonlen) ? msgerrreason[reason] : _("Reason unknown")); +	           (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Reason unknown"));  	return 1;  } -static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) +{  	guint16 id;  	va_list ap;  	va_start(ap, fr); -	id  = (guint16)va_arg(ap, unsigned int); +	id  = (guint16) va_arg(ap, unsigned int);  	va_arg(ap, char *); /* msg */  	va_end(ap); -	if (id < 4) +	if (id < 4) {  		imcb_error(sess->aux_data, _("Your connection may be lost.")); +	}  	return 1;  } -static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	guint16 type;  	struct im_connection *ic = sess->aux_data; -	struct oscar_data *odata = (struct oscar_data *)ic->proto_data; +	struct oscar_data *odata = (struct oscar_data *) ic->proto_data;  	va_start(ap, fr); -	type = (guint16)va_arg(ap, unsigned int); - -	switch(type) { -		case 0x0002: { -			va_arg(ap, unsigned int); /* maxrooms */ -			va_arg(ap, int); /* exchangecount */ -			va_arg(ap, struct aim_chat_exchangeinfo *); /* exchanges */ -			va_end(ap); - -			while (odata->create_rooms) { -				struct create_room *cr = odata->create_rooms->data; -				aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange); -				g_free(cr->name); -				odata->create_rooms = g_slist_remove(odata->create_rooms, cr); -				g_free(cr); -			} -			} -			break; -		case 0x0008: { -			char *ck; -			guint16 instance, exchange; - -			va_arg(ap, char *); /* fqcn */ -			instance = (guint16)va_arg(ap, unsigned int); -			exchange = (guint16)va_arg(ap, unsigned int); -			va_arg(ap, unsigned int); /* flags */ -			va_arg(ap, guint32); /* createtime */ -			va_arg(ap, unsigned int); /* maxmsglen */ -			va_arg(ap, unsigned int); /* maxoccupancy */ -			va_arg(ap, int); /* createperms */ -			va_arg(ap, unsigned int); /* unknown */ -			va_arg(ap, char *); /* name */ -			ck = va_arg(ap, char *); -			va_end(ap); - -			aim_chat_join(odata->sess, odata->conn, exchange, ck, instance); -			} -			break; -		default: -			va_end(ap); -			break; +	type = (guint16) va_arg(ap, unsigned int); + +	switch (type) { +	case 0x0002: { +		va_arg(ap, unsigned int);         /* maxrooms */ +		va_arg(ap, int);         /* exchangecount */ +		va_arg(ap, struct aim_chat_exchangeinfo *);         /* exchanges */ +		va_end(ap); + +		while (odata->create_rooms) { +			struct create_room *cr = odata->create_rooms->data; +			aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange); +			g_free(cr->name); +			odata->create_rooms = g_slist_remove(odata->create_rooms, cr); +			g_free(cr); +		} +	} +	break; +	case 0x0008: { +		char *ck; +		guint16 instance, exchange; + +		va_arg(ap, char *);         /* fqcn */ +		instance = (guint16) va_arg(ap, unsigned int); +		exchange = (guint16) va_arg(ap, unsigned int); +		va_arg(ap, unsigned int);         /* flags */ +		va_arg(ap, guint32);         /* createtime */ +		va_arg(ap, unsigned int);         /* maxmsglen */ +		va_arg(ap, unsigned int);         /* maxoccupancy */ +		va_arg(ap, int);         /* createperms */ +		va_arg(ap, unsigned int);         /* unknown */ +		va_arg(ap, char *);         /* name */ +		ck = va_arg(ap, char *); +		va_end(ap); + +		aim_chat_join(odata->sess, odata->conn, exchange, ck, instance); +	} +	break; +	default: +		va_end(ap); +		break;  	}  	return 1;  } -static int gaim_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	int count, i;  	aim_userinfo_t *info; @@ -1410,16 +1486,19 @@ static int gaim_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_end(ap);  	c = find_oscar_chat_by_conn(g, fr->conn); -	if (!c) +	if (!c) {  		return 1; +	} -	for (i = 0; i < count; i++) +	for (i = 0; i < count; i++) {  		imcb_chat_add_buddy(c->cnv, normalize(info[i].sn)); +	}  	return 1;  } -static int gaim_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	int count, i;  	aim_userinfo_t *info; @@ -1433,16 +1512,19 @@ static int gaim_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_end(ap);  	c = find_oscar_chat_by_conn(g, fr->conn); -	if (!c) +	if (!c) {  		return 1; +	} -	for (i = 0; i < count; i++) +	for (i = 0; i < count; i++) {  		imcb_chat_remove_buddy(c->cnv, normalize(info[i].sn), NULL); +	}  	return 1;  } -static int gaim_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	guint16 maxmsglen, maxvisiblemsglen;  	struct im_connection *ic = sess->aux_data; @@ -1456,10 +1538,10 @@ static int gaim_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_arg(ap, char *); /* roomdesc */  	va_arg(ap, int); /* unknown_c9 */  	va_arg(ap, unsigned long); /* creationtime */ -	maxmsglen = (guint16)va_arg(ap, int); +	maxmsglen = (guint16) va_arg(ap, int);  	va_arg(ap, int); /* unknown_d2 */  	va_arg(ap, int); /* unknown_d5 */ -	maxvisiblemsglen = (guint16)va_arg(ap, int); +	maxvisiblemsglen = (guint16) va_arg(ap, int);  	va_end(ap);  	ccon->maxlen = maxmsglen; @@ -1468,7 +1550,8 @@ static int gaim_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	aim_userinfo_t *info;  	char *msg; @@ -1488,42 +1571,44 @@ static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_parse_ratechange(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_ratechange(aim_session_t *sess, aim_frame_t *fr, ...) +{  #if 0  	static const char *codes[5] = {  		"invalid", -		 "change", -		 "warning", -		 "limit", -		 "limit cleared", +		"change", +		"warning", +		"limit", +		"limit cleared",  	};  #endif  	va_list ap;  	guint16 code;  	guint32 windowsize, clear, currentavg; -	va_start(ap, fr);  -	code = (guint16)va_arg(ap, unsigned int); +	va_start(ap, fr); +	code = (guint16) va_arg(ap, unsigned int);  	va_arg(ap, unsigned int); /* rateclass */ -	windowsize = (guint32)va_arg(ap, unsigned long); -	clear = (guint32)va_arg(ap, unsigned long); +	windowsize = (guint32) va_arg(ap, unsigned long); +	clear = (guint32) va_arg(ap, unsigned long);  	va_arg(ap, unsigned long); /* alert */  	va_arg(ap, unsigned long); /* limit */  	va_arg(ap, unsigned long); /* disconnect */ -	currentavg = (guint32)va_arg(ap, unsigned long); +	currentavg = (guint32) va_arg(ap, unsigned long);  	va_arg(ap, unsigned long); /* maxavg */  	va_end(ap);  	/* XXX fix these values */  	if (code == AIM_RATE_CODE_CHANGE) { -		if (currentavg >= clear) +		if (currentavg >= clear) {  			aim_conn_setlatency(fr->conn, 0); +		}  	} else if (code == AIM_RATE_CODE_WARNING) { -		aim_conn_setlatency(fr->conn, windowsize/4); +		aim_conn_setlatency(fr->conn, windowsize / 4);  	} else if (code == AIM_RATE_CODE_LIMIT) {  		imcb_error(sess->aux_data, _("The last message was not sent because you are over the rate limit. " -			  "Please wait 10 seconds and try again.")); -		aim_conn_setlatency(fr->conn, windowsize/2); +		                             "Please wait 10 seconds and try again.")); +		aim_conn_setlatency(fr->conn, windowsize / 2);  	} else if (code == AIM_RATE_CODE_CLEARLIMIT) {  		aim_conn_setlatency(fr->conn, 0);  	} @@ -1531,11 +1616,13 @@ static int gaim_parse_ratechange(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) +{  	return 1;  } -static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) { +static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) +{  	aim_reqpersonalinfo(sess, fr->conn);  	aim_bos_reqlocaterights(sess, fr->conn); @@ -1546,12 +1633,13 @@ static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) {  	aim_bos_reqrights(sess, fr->conn);  	aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);  	aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE | -						     AIM_PRIVFLAGS_ALLOWMEMBERSINCE); +	                        AIM_PRIVFLAGS_ALLOWMEMBERSINCE);  	return 1;  } -static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) { +static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) +{  	struct im_connection *ic = sess->aux_data;  	struct oscar_data *od = ic->proto_data; @@ -1588,7 +1676,8 @@ static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_icbm_param_info(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_icbm_param_info(aim_session_t *sess, aim_frame_t *fr, ...) +{  	struct aim_icbmparameters *params;  	va_list ap; @@ -1611,52 +1700,54 @@ static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...)  	va_list ap;  	guint16 maxsiglen;  	struct im_connection *ic = sess->aux_data; -	struct oscar_data *odata = (struct oscar_data *)ic->proto_data; +	struct oscar_data *odata = (struct oscar_data *) ic->proto_data;  	va_start(ap, fr);  	maxsiglen = va_arg(ap, int);  	va_end(ap); -	odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint)maxsiglen; +	odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint) maxsiglen;  	/* FIXME: It seems we're not really using this, and it broke now that  	   struct aim_user is dead.  	aim_bos_setprofile(sess, fr->conn, ic->user->user_info, NULL, gaim_caps);  	*/ -	 +  	return 1;  } -static int gaim_parse_buddyrights(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_parse_buddyrights(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	guint16 maxbuddies, maxwatchers;  	struct im_connection *ic = sess->aux_data; -	struct oscar_data *odata = (struct oscar_data *)ic->proto_data; +	struct oscar_data *odata = (struct oscar_data *) ic->proto_data;  	va_start(ap, fr); -	maxbuddies = (guint16)va_arg(ap, unsigned int); -	maxwatchers = (guint16)va_arg(ap, unsigned int); +	maxbuddies = (guint16) va_arg(ap, unsigned int); +	maxwatchers = (guint16) va_arg(ap, unsigned int);  	va_end(ap); -	odata->rights.maxbuddies = (guint)maxbuddies; -	odata->rights.maxwatchers = (guint)maxwatchers; +	odata->rights.maxbuddies = (guint) maxbuddies; +	odata->rights.maxwatchers = (guint) maxwatchers;  	return 1;  } -static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) +{  	guint16 maxpermits, maxdenies;  	va_list ap;  	struct im_connection *ic = sess->aux_data; -	struct oscar_data *odata = (struct oscar_data *)ic->proto_data; +	struct oscar_data *odata = (struct oscar_data *) ic->proto_data;  	va_start(ap, fr); -	maxpermits = (guint16)va_arg(ap, unsigned int); -	maxdenies = (guint16)va_arg(ap, unsigned int); +	maxpermits = (guint16) va_arg(ap, unsigned int); +	maxdenies = (guint16) va_arg(ap, unsigned int);  	va_end(ap); -	odata->rights.maxpermits = (guint)maxpermits; -	odata->rights.maxdenies = (guint)maxdenies; +	odata->rights.maxpermits = (guint) maxpermits; +	odata->rights.maxdenies = (guint) maxdenies;  	aim_clientready(sess, fr->conn); @@ -1668,7 +1759,8 @@ static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) {  	return 1;  } -static int gaim_offlinemsg(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_offlinemsg(aim_session_t *sess, aim_frame_t *fr, ...) +{  	va_list ap;  	struct aim_icq_offlinemsg *msg;  	struct im_connection *ic = sess->aux_data; @@ -1678,56 +1770,59 @@ static int gaim_offlinemsg(aim_session_t *sess, aim_frame_t *fr, ...) {  	va_end(ap);  	switch (msg->type) { -		case 0x0001: { /* Basic offline message */ -			char sender[32]; -			char *dialog_msg = g_strdup(msg->msg); -			time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); -			g_snprintf(sender, sizeof(sender), "%u", msg->sender); -			strip_linefeed(dialog_msg); -			imcb_buddy_msg(ic, normalize(sender), dialog_msg, 0, t); -			g_free(dialog_msg); -		} break; - -		case 0x0004: { /* Someone sent you a URL */ -		  	char sender[32]; -		  	char *dialog_msg; -			char **m; - -			time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); -			g_snprintf(sender, sizeof(sender), "%u", msg->sender); - -			m = g_strsplit(msg->msg, "\376", 2); - -			if ((strlen(m[0]) != 0)) { -			  dialog_msg = g_strjoinv(" -- ", m); -			} else { -			  dialog_msg = m[1]; -			} - -			strip_linefeed(dialog_msg); -			imcb_buddy_msg(ic, normalize(sender), dialog_msg, 0, t); -			g_free(dialog_msg); -			g_free(m); -		} break; -		 -		case 0x0006: { /* Authorization request */ -			gaim_icq_authask(ic, msg->sender, msg->msg); -		} break; - -		case 0x0007: { /* Someone has denied you authorization */ -			imcb_log(sess->aux_data, "The user %u has denied your request to add them to your contact list for the following reason:\n%s", msg->sender, msg->msg ? msg->msg : _("No reason given.") ); -		} break; - -		case 0x0008: { /* Someone has granted you authorization */ -			imcb_log(sess->aux_data, "The user %u has granted your request to add them to your contact list for the following reason:\n%s", msg->sender, msg->msg ? msg->msg : _("No reason given.") ); -		} break; - -		case 0x0012: { -			/* Ack for authorizing/denying someone.  Or possibly an ack for sending any system notice */ -		} break; - -		default: {; +	case 0x0001: {         /* Basic offline message */ +		char sender[32]; +		char *dialog_msg = g_strdup(msg->msg); +		time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); +		g_snprintf(sender, sizeof(sender), "%u", msg->sender); +		strip_linefeed(dialog_msg); +		imcb_buddy_msg(ic, normalize(sender), dialog_msg, 0, t); +		g_free(dialog_msg); +	} break; + +	case 0x0004: {         /* Someone sent you a URL */ +		char sender[32]; +		char *dialog_msg; +		char **m; + +		time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); +		g_snprintf(sender, sizeof(sender), "%u", msg->sender); + +		m = g_strsplit(msg->msg, "\376", 2); + +		if ((strlen(m[0]) != 0)) { +			dialog_msg = g_strjoinv(" -- ", m); +		} else { +			dialog_msg = m[1];  		} + +		strip_linefeed(dialog_msg); +		imcb_buddy_msg(ic, normalize(sender), dialog_msg, 0, t); +		g_free(dialog_msg); +		g_free(m); +	} break; + +	case 0x0006: {         /* Authorization request */ +		gaim_icq_authask(ic, msg->sender, msg->msg); +	} break; + +	case 0x0007: {         /* Someone has denied you authorization */ +		imcb_log(sess->aux_data, +		         "The user %u has denied your request to add them to your contact list for the following reason:\n%s", msg->sender, +		         msg->msg ? msg->msg : _("No reason given.")); +	} break; + +	case 0x0008: {         /* Someone has granted you authorization */ +		imcb_log(sess->aux_data, +		         "The user %u has granted your request to add them to your contact list for the following reason:\n%s", msg->sender, +		         msg->msg ? msg->msg : _("No reason given.")); +	} break; + +	case 0x0012: { +		/* Ack for authorizing/denying someone.  Or possibly an ack for sending any system notice */ +	} break; + +	default: {; }  	}  	return 1; @@ -1739,27 +1834,34 @@ static int gaim_offlinemsgdone(aim_session_t *sess, aim_frame_t *fr, ...)  	return 1;  } -static void oscar_keepalive(struct im_connection *ic) { -	struct oscar_data *odata = (struct oscar_data *)ic->proto_data; +static void oscar_keepalive(struct im_connection *ic) +{ +	struct oscar_data *odata = (struct oscar_data *) ic->proto_data; +  	aim_flap_nop(odata->sess, odata->conn);  } -static int oscar_buddy_msg(struct im_connection *ic, char *name, char *message, int imflags) { -	struct oscar_data *odata = (struct oscar_data *)ic->proto_data; +static int oscar_buddy_msg(struct im_connection *ic, char *name, char *message, int imflags) +{ +	struct oscar_data *odata = (struct oscar_data *) ic->proto_data;  	int ret = 0, len = strlen(message); +  	if (imflags & OPT_AWAY) {  		ret = aim_send_im(odata->sess, name, AIM_IMFLAGS_AWAY, message);  	} else {  		struct aim_sendimext_args args;  		char *s; -		 +  		args.flags = AIM_IMFLAGS_ACK; -		if (odata->icq) +		if (odata->icq) {  			args.flags |= AIM_IMFLAGS_OFFLINE; -		for (s = message; *s; s++) -			if (*s & 128) +		} +		for (s = message; *s; s++) { +			if (*s & 128) {  				break; -		 +			} +		} +  		/* Message contains high ASCII chars, time for some translation! */  		if (*s) {  			s = g_malloc(BUF_LONG); @@ -1773,59 +1875,66 @@ static int oscar_buddy_msg(struct im_connection *ic, char *name, char *message,  				len = ret;  			} else {  				/* OOF, translation failed... Oh well.. */ -				g_free( s ); +				g_free(s);  				s = message;  			}  		} else {  			s = message;  		} -		 +  		args.features = gaim_features;  		args.featureslen = sizeof(gaim_features); -		 +  		args.destsn = name;  		args.msg    = s;  		args.msglen = len; -		 +  		ret = aim_send_im_ext(odata->sess, &args); -		 +  		if (s != message) {  			g_free(s);  		}  	} -	if (ret >= 0) +	if (ret >= 0) {  		return 1; +	}  	return ret;  } -static void oscar_get_info(struct im_connection *g, char *name) { -	struct oscar_data *odata = (struct oscar_data *)g->proto_data; -	if (odata->icq) +static void oscar_get_info(struct im_connection *g, char *name) +{ +	struct oscar_data *odata = (struct oscar_data *) g->proto_data; + +	if (odata->icq) {  		aim_icq_getallinfo(odata->sess, name); -	else { +	} else {  		aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_AWAYMESSAGE);  		aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_GENERALINFO);  	}  } -static void oscar_get_away(struct im_connection *g, char *who) { -	struct oscar_data *odata = (struct oscar_data *)g->proto_data; +static void oscar_get_away(struct im_connection *g, char *who) +{ +	struct oscar_data *odata = (struct oscar_data *) g->proto_data; +  	if (odata->icq) {  		/** FIXME(wilmer): Hmm, lost the ability to get away msgs here, do we care to get that back?  		struct buddy *budlight = imcb_find_buddy(g, who);  		if (budlight) -			if ((budlight->uc & 0xff80) >> 7) -				if (budlight->caps & AIM_CAPS_ICQSERVERRELAY) -					aim_send_im_ch2_geticqmessage(odata->sess, who, (budlight->uc & 0xff80) >> 7); +		        if ((budlight->uc & 0xff80) >> 7) +		                if (budlight->caps & AIM_CAPS_ICQSERVERRELAY) +		                        aim_send_im_ch2_geticqmessage(odata->sess, who, (budlight->uc & 0xff80) >> 7);  		*/ -	} else +	} else {  		aim_getinfo(odata->sess, odata->conn, who, AIM_GETINFO_AWAYMESSAGE); +	}  }  static void oscar_set_away_aim(struct im_connection *ic, struct oscar_data *od, const char *state, const char *message)  { -	if (state == NULL) +	if (state == NULL) {  		state = ""; +	}  	if (!g_strcasecmp(state, _("Visible"))) {  		aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NORMAL); @@ -1837,8 +1946,9 @@ static void oscar_set_away_aim(struct im_connection *ic, struct oscar_data *od,  		message = state;  	} -	if (od->rights.maxawaymsglen == 0) +	if (od->rights.maxawaymsglen == 0) {  		imcb_error(ic, "oscar_set_away_aim called before locate rights received"); +	}  	aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NORMAL); @@ -1851,7 +1961,8 @@ static void oscar_set_away_aim(struct im_connection *ic, struct oscar_data *od,  	}  	if (strlen(message) > od->rights.maxawaymsglen) { -		imcb_error(ic, "Maximum away message length of %d bytes exceeded, truncating", od->rights.maxawaymsglen); +		imcb_error(ic, "Maximum away message length of %d bytes exceeded, truncating", +		           od->rights.maxawaymsglen);  	}  	ic->away = g_strndup(message, od->rights.maxawaymsglen); @@ -1904,7 +2015,7 @@ static void oscar_set_away_icq(struct im_connection *ic, struct oscar_data *od,  		aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_INVISIBLE);  		ic->away = g_strdup(msg);  	} else { -	 	if (no_message) { +		if (no_message) {  			aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NORMAL);  		} else {  			aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_AWAY); @@ -1918,36 +2029,48 @@ static void oscar_set_away_icq(struct im_connection *ic, struct oscar_data *od,  static void oscar_set_away(struct im_connection *ic, char *state, char *message)  { -	struct oscar_data *od = (struct oscar_data *)ic->proto_data; +	struct oscar_data *od = (struct oscar_data *) ic->proto_data;  	oscar_set_away_aim(ic, od, state, message); -	if (od->icq) +	if (od->icq) {  		oscar_set_away_icq(ic, od, state, message); +	}  	return;  } -static void oscar_add_buddy(struct im_connection *g, char *name, char *group) { -	struct oscar_data *odata = (struct oscar_data *)g->proto_data; +static void oscar_add_buddy(struct im_connection *g, char *name, char *group) +{ +	struct oscar_data *odata = (struct oscar_data *) g->proto_data;  	bee_user_t *bu; -	 -	if (group && (bu = bee_user_by_handle(g->bee, g, name)) && bu->group) + +	if (group && (bu = bee_user_by_handle(g->bee, g, name)) && bu->group) {  		aim_ssi_movebuddy(odata->sess, odata->conn, bu->group->name, group, name); -	else +	} else {  		aim_ssi_addbuddies(odata->sess, odata->conn, group ? : OSCAR_GROUP, &name, 1, 0); +	}  } -static void oscar_remove_buddy(struct im_connection *g, char *name, char *group) { -	struct oscar_data *odata = (struct oscar_data *)g->proto_data; +static void oscar_remove_buddy(struct im_connection *g, char *name, char *group) +{ +	struct oscar_data *odata = (struct oscar_data *) g->proto_data;  	struct aim_ssi_item *ssigroup; -	while ((ssigroup = aim_ssi_itemlist_findparent(odata->sess->ssi.items, name)) && !aim_ssi_delbuddies(odata->sess, odata->conn, ssigroup->name, &name, 1)); + +	while ((ssigroup = +	                aim_ssi_itemlist_findparent(odata->sess->ssi.items, +	                                            name)) && +	       !aim_ssi_delbuddies(odata->sess, odata->conn, ssigroup->name, &name, 1)) { +		; +	}  } -static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) +{  	return 1;  } -static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) { +static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) +{  	struct im_connection *ic = sess->aux_data;  	struct aim_ssi_item *curitem, *curgroup = NULL;  	int tmp; @@ -1955,172 +2078,185 @@ static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {  	/* Add from server list to local list */  	tmp = 0; -	for (curitem=sess->ssi.items; curitem; curitem=curitem->next) { +	for (curitem = sess->ssi.items; curitem; curitem = curitem->next) {  		nrm = curitem->name ? normalize(curitem->name) : NULL; -		 +  		switch (curitem->type) { -			case 0x0000: /* Buddy */ -				if ((curitem->name) && (!imcb_buddy_by_handle(ic, nrm))) { -					char *realname = NULL; - -					if (curitem->data && aim_gettlv(curitem->data, 0x0131, 1)) -						    realname = aim_gettlv_str(curitem->data, 0x0131, 1); -					 -					imcb_add_buddy(ic, nrm, curgroup ? (curgroup->gid == curitem->gid ? curgroup->name : NULL) : NULL); -					 -					if (realname) { -						imcb_buddy_nick_hint(ic, nrm, realname); -						imcb_rename_buddy(ic, nrm, realname); -						g_free(realname); -					} +		case 0x0000:         /* Buddy */ +			if ((curitem->name) && (!imcb_buddy_by_handle(ic, nrm))) { +				char *realname = NULL; + +				if (curitem->data && aim_gettlv(curitem->data, 0x0131, 1)) { +					realname = aim_gettlv_str(curitem->data, 0x0131, 1);  				} -				break; -			case 0x0001: /* Group */ -				curgroup = curitem; -				break; +				imcb_add_buddy(ic, nrm, +				               curgroup ? (curgroup->gid == +				                           curitem->gid ? curgroup->name : NULL) : NULL); -			case 0x0002: /* Permit buddy */ -				if (curitem->name) { -					GSList *list; -					for (list=ic->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next); -					if (!list) { -						char *name; -						name = g_strdup(nrm); -						ic->permit = g_slist_append(ic->permit, name); -						tmp++; -					} +				if (realname) { +					imcb_buddy_nick_hint(ic, nrm, realname); +					imcb_rename_buddy(ic, nrm, realname); +					g_free(realname);  				} -				break; +			} +			break; -			case 0x0003: /* Deny buddy */ -				if (curitem->name) { -					GSList *list; -					for (list=ic->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next); -					if (!list) { -						char *name; -						name = g_strdup(nrm); -						ic->deny = g_slist_append(ic->deny, name); -						tmp++; -					} +		case 0x0001:         /* Group */ +			curgroup = curitem; +			break; + +		case 0x0002:         /* Permit buddy */ +			if (curitem->name) { +				GSList *list; +				for (list = ic->permit; (list && aim_sncmp(curitem->name, list->data)); +				     list = list->next) { +					;  				} -				break; +				if (!list) { +					char *name; +					name = g_strdup(nrm); +					ic->permit = g_slist_append(ic->permit, name); +					tmp++; +				} +			} +			break; -			case 0x0004: /* Permit/deny setting */ -				if (curitem->data) { -					guint8 permdeny; -					if ((permdeny = aim_ssi_getpermdeny(sess->ssi.items)) && (permdeny != ic->permdeny)) { -						ic->permdeny = permdeny; -						tmp++; -					} +		case 0x0003:         /* Deny buddy */ +			if (curitem->name) { +				GSList *list; +				for (list = ic->deny; +				     (list && aim_sncmp(curitem->name, list->data)); list = list->next) { +					;  				} -				break; +				if (!list) { +					char *name; +					name = g_strdup(nrm); +					ic->deny = g_slist_append(ic->deny, name); +					tmp++; +				} +			} +			break; -			case 0x0005: /* Presence setting */ -				/* We don't want to change Gaim's setting because it applies to all accounts */ -				break; +		case 0x0004:         /* Permit/deny setting */ +			if (curitem->data) { +				guint8 permdeny; +				if ((permdeny = aim_ssi_getpermdeny(sess->ssi.items)) && (permdeny != ic->permdeny)) { +					ic->permdeny = permdeny; +					tmp++; +				} +			} +			break; + +		case 0x0005:         /* Presence setting */ +			/* We don't want to change Gaim's setting because it applies to all accounts */ +			break;  		} /* End of switch on curitem->type */  	} /* End of for loop */  	aim_ssi_enable(sess, fr->conn); -	 +  	/* Request offline messages, now that the buddy list is complete. */  	aim_icq_reqofflinemsgs(sess); -	 +  	/* Now that we have a buddy list, we can tell BitlBee that we're online. */  	imcb_connected(ic); -	 +  	return 1;  } -static int gaim_ssi_parseack( aim_session_t *sess, aim_frame_t *fr, ... ) +static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...)  {  	aim_snac_t *origsnac;  	va_list ap; -	va_start( ap, fr ); -	origsnac = va_arg( ap, aim_snac_t * ); -	va_end( ap ); -	 -	if( origsnac && origsnac->family == AIM_CB_FAM_SSI && origsnac->type == AIM_CB_SSI_ADD && origsnac->data ) -	{ -		int i, st, count = aim_bstream_empty( &fr->data ); +	va_start(ap, fr); +	origsnac = va_arg(ap, aim_snac_t *); +	va_end(ap); + +	if (origsnac && origsnac->family == AIM_CB_FAM_SSI && origsnac->type == AIM_CB_SSI_ADD && origsnac->data) { +		int i, st, count = aim_bstream_empty(&fr->data);  		char *list; -		 -		if( count & 1 ) -		{ + +		if (count & 1) {  			/* Hmm, the length should be even... */ -			imcb_error( sess->aux_data, "Received SSI ACK package with non-even length"); -			return( 0 ); +			imcb_error(sess->aux_data, "Received SSI ACK package with non-even length"); +			return(0);  		}  		count >>= 1; -		 +  		list = (char *) origsnac->data; -		for( i = 0; i < count; i ++ ) -		{ -			struct aim_ssi_item *ssigroup = aim_ssi_itemlist_findparent( sess->ssi.items, list ); +		for (i = 0; i < count; i++) { +			struct aim_ssi_item *ssigroup = aim_ssi_itemlist_findparent(sess->ssi.items, list);  			char *group = ssigroup ? ssigroup->name : NULL; -			 -			st = aimbs_get16( &fr->data ); -			if( st == 0x00 ) -			{ -				imcb_add_buddy( sess->aux_data, normalize(list), group ); -			} -			else if( st == 0x0E ) -			{ -				imcb_log( sess->aux_data, "Buddy %s can't be added without authorization, requesting authorization", list ); -				 -				aim_ssi_auth_request( sess, fr->conn, list, "" ); -				aim_ssi_addbuddies( sess, fr->conn, OSCAR_GROUP, &list, 1, 1 ); -			} -			else if( st == 0x0A ) -			{ -				imcb_error( sess->aux_data, "Buddy %s is already in your list", list ); -			} -			else -			{ -				imcb_error( sess->aux_data, "Error while adding buddy: 0x%04x", st ); + +			st = aimbs_get16(&fr->data); +			if (st == 0x00) { +				imcb_add_buddy(sess->aux_data, normalize(list), group); +			} else if (st == 0x0E) { +				imcb_log(sess->aux_data, +				         "Buddy %s can't be added without authorization, requesting authorization", +				         list); + +				aim_ssi_auth_request(sess, fr->conn, list, ""); +				aim_ssi_addbuddies(sess, fr->conn, OSCAR_GROUP, &list, 1, 1); +			} else if (st == 0x0A) { +				imcb_error(sess->aux_data, "Buddy %s is already in your list", list); +			} else { +				imcb_error(sess->aux_data, "Error while adding buddy: 0x%04x", st);  			} -			list += strlen( list ) + 1; +			list += strlen(list) + 1;  		}  	} -	 -	return( 1 ); + +	return(1);  } -static void oscar_add_permit(struct im_connection *ic, char *who) { -	struct oscar_data *od = (struct oscar_data *)ic->proto_data; +static void oscar_add_permit(struct im_connection *ic, char *who) +{ +	struct oscar_data *od = (struct oscar_data *) ic->proto_data; +  	if (od->icq) {  		aim_ssi_auth_reply(od->sess, od->conn, who, 1, "");  	} else { -		if (od->sess->ssi.received_data) +		if (od->sess->ssi.received_data) {  			aim_ssi_addpord(od->sess, od->conn, &who, 1, AIM_SSI_TYPE_PERMIT); +		}  	}  } -static void oscar_add_deny(struct im_connection *ic, char *who) { -	struct oscar_data *od = (struct oscar_data *)ic->proto_data; +static void oscar_add_deny(struct im_connection *ic, char *who) +{ +	struct oscar_data *od = (struct oscar_data *) ic->proto_data; +  	if (od->icq) {  		aim_ssi_auth_reply(od->sess, od->conn, who, 0, "");  	} else { -		if (od->sess->ssi.received_data) +		if (od->sess->ssi.received_data) {  			aim_ssi_addpord(od->sess, od->conn, &who, 1, AIM_SSI_TYPE_DENY); +		}  	}  } -static void oscar_rem_permit(struct im_connection *ic, char *who) { -	struct oscar_data *od = (struct oscar_data *)ic->proto_data; +static void oscar_rem_permit(struct im_connection *ic, char *who) +{ +	struct oscar_data *od = (struct oscar_data *) ic->proto_data; +  	if (!od->icq) { -		if (od->sess->ssi.received_data) +		if (od->sess->ssi.received_data) {  			aim_ssi_delpord(od->sess, od->conn, &who, 1, AIM_SSI_TYPE_PERMIT); +		}  	}  } -static void oscar_rem_deny(struct im_connection *ic, char *who) { -	struct oscar_data *od = (struct oscar_data *)ic->proto_data; +static void oscar_rem_deny(struct im_connection *ic, char *who) +{ +	struct oscar_data *od = (struct oscar_data *) ic->proto_data; +  	if (!od->icq) { -		if (od->sess->ssi.received_data) +		if (od->sess->ssi.received_data) {  			aim_ssi_delpord(od->sess, od->conn, &who, 1, AIM_SSI_TYPE_DENY); +		}  	}  } @@ -2158,14 +2294,15 @@ static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)  	info = va_arg(ap, struct aim_icq_info *);  	va_end(ap); -	if (!info->uin) +	if (!info->uin) {  		return 0; +	}  	str = g_string_sized_new(512);  	g_snprintf(who, sizeof(who), "%u", info->uin); -	g_string_printf(str, "%s: %s - %s: %s", _("UIN"), who, _("Nick"),  -	info->nick ? info->nick : "-"); +	g_string_printf(str, "%s: %s - %s: %s", _("UIN"), who, _("Nick"), +	                info->nick ? info->nick : "-");  	g_string_append_printf(str, "\n%s: %s", _("First Name"), info->first);  	g_string_append_printf(str, "\n%s: %s", _("Last Name"), info->last);  	g_string_append_printf(str, "\n%s: %s", _("Email Address"), info->email); @@ -2180,15 +2317,16 @@ static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)  		                       (ip >> 24), (ip >> 16) & 0xff, (ip >> 8) & 0xff, ip & 0xff);  	}  	g_string_append_printf(str, "\n%s: %s", _("Mobile Phone"), info->mobile); -	if (info->gender != 0) -		g_string_append_printf(str, "\n%s: %s", _("Gender"), info->gender==1 ? _("Female") : _("Male")); +	if (info->gender != 0) { +		g_string_append_printf(str, "\n%s: %s", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); +	}  	if (info->birthyear || info->birthmonth || info->birthday) {  		char date[30];  		struct tm tm;  		memset(&tm, 0, sizeof(struct tm)); -		tm.tm_mday = (int)info->birthday; -		tm.tm_mon = (int)info->birthmonth-1; -		tm.tm_year = (int)info->birthyear%100; +		tm.tm_mday = (int) info->birthday; +		tm.tm_mon = (int) info->birthmonth - 1; +		tm.tm_year = (int) info->birthyear % 100;  		strftime(date, sizeof(date), "%Y-%m-%d", &tm);  		g_string_append_printf(str, "\n%s: %s", _("Birthday"), date);  	} @@ -2199,19 +2337,25 @@ static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)  	}  	g_string_append_printf(str, "\n%s: %s", _("Personal Web Page"), info->personalwebpage);  	if (info->info && info->info[0]) { -		g_string_sprintfa(str, "\n%s:\n%s\n%s", _("Additional Information"),  -		info->info, _("End of Additional Information")); +		g_string_sprintfa(str, "\n%s:\n%s\n%s", _("Additional Information"), +		                  info->info, _("End of Additional Information"));  	}  	g_string_append_c(str, '\n'); -	if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) { +	if ((info->homeaddr && +	     (info->homeaddr[0])) || +	    (info->homecity && +	     info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) {  		g_string_append_printf(str, "%s:", _("Home Address"));  		g_string_append_printf(str, "\n%s: %s", _("Address"), info->homeaddr);  		g_string_append_printf(str, "\n%s: %s", _("City"), info->homecity); -		g_string_append_printf(str, "\n%s: %s", _("State"), info->homestate);  +		g_string_append_printf(str, "\n%s: %s", _("State"), info->homestate);  		g_string_append_printf(str, "\n%s: %s", _("Zip Code"), info->homezip);  		g_string_append_c(str, '\n');  	} -	if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) { +	if ((info->workaddr && +	     info->workaddr[0]) || +	    (info->workcity && +	     info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) {  		g_string_append_printf(str, "%s:", _("Work Address"));  		g_string_append_printf(str, "\n%s: %s", _("Address"), info->workaddr);  		g_string_append_printf(str, "\n%s: %s", _("City"), info->workcity); @@ -2219,7 +2363,11 @@ static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)  		g_string_append_printf(str, "\n%s: %s", _("Zip Code"), info->workzip);  		g_string_append_c(str, '\n');  	} -	if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) { +	if ((info->workcompany && +	     info->workcompany[0]) || +	    (info->workdivision && +	     info->workdivision[0]) || +	    (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) {  		g_string_append_printf(str, "%s:", _("Work Information"));  		g_string_append_printf(str, "\n%s: %s", _("Company"), info->workcompany);  		g_string_append_printf(str, "\n%s: %s", _("Division"), info->workdivision); @@ -2246,19 +2394,19 @@ static char *oscar_encoding_extract(const char *encoding)  	/* Make sure encoding begins with charset= */  	if (strncmp(encoding, "text/plain; charset=", 20) && -		strncmp(encoding, "text/aolrtf; charset=", 21) && -		strncmp(encoding, "text/x-aolrtf; charset=", 23)) -	{ +	    strncmp(encoding, "text/aolrtf; charset=", 21) && +	    strncmp(encoding, "text/x-aolrtf; charset=", 23)) {  		return NULL;  	}  	begin = strchr(encoding, '"');  	end = strrchr(encoding, '"'); -	if ((begin == NULL) || (end == NULL) || (begin >= end)) +	if ((begin == NULL) || (end == NULL) || (begin >= end)) {  		return NULL; +	} -	ret = g_strndup(begin+1, (end-1) - begin); +	ret = g_strndup(begin + 1, (end - 1) - begin);  	return ret;  } @@ -2287,7 +2435,7 @@ static char *oscar_encoding_to_utf8(char *encoding, char *text, int textlen)  	 * that was specified.  So we assume it's UTF-8 and hope for the best.  	 */  	if (*utf8 == 0) { -	    strncpy(utf8, text, textlen); +		strncpy(utf8, text, textlen);  	}  	return utf8; @@ -2311,13 +2459,14 @@ static int gaim_parseaiminfo(aim_session_t *sess, aim_frame_t *fr, ...)  	text_length = va_arg(ap, int);  	va_end(ap); -	if(text_encoding) +	if (text_encoding) {  		extracted_encoding = oscar_encoding_extract(text_encoding); -	if(infotype == AIM_GETINFO_GENERALINFO) { +	} +	if (infotype == AIM_GETINFO_GENERALINFO) {  		/*Display idle time*/  		char buff[256];  		struct tm idletime; -		if(userinfo->idletime) { +		if (userinfo->idletime) {  			memset(&idletime, 0, sizeof(struct tm));  			idletime.tm_mday = (userinfo->idletime / 60) / 24;  			idletime.tm_hour = (userinfo->idletime / 60) % 24; @@ -2326,20 +2475,20 @@ static int gaim_parseaiminfo(aim_session_t *sess, aim_frame_t *fr, ...)  			strftime(buff, 256, _("%d days %H hours %M minutes"), &idletime);  			imcb_log(ic, "%s: %s", _("Idle Time"), buff);  		} -		 -		if(text) { + +		if (text) {  			utf8 = oscar_encoding_to_utf8(extracted_encoding, text, text_length);  			imcb_log(ic, "%s\n%s", _("User Info"), utf8);  		} else {  			imcb_log(ic, _("No user info available."));  		} -	} else if(infotype == AIM_GETINFO_AWAYMESSAGE && userinfo->flags & AIM_FLAG_AWAY) { +	} else if (infotype == AIM_GETINFO_AWAYMESSAGE && userinfo->flags & AIM_FLAG_AWAY) {  		utf8 = oscar_encoding_to_utf8(extracted_encoding, text, text_length);  		imcb_log(ic, "%s\n%s", _("Away Message"), utf8);  	}  	g_free(utf8); -    +  	return 1;  } @@ -2355,48 +2504,50 @@ int gaim_parsemtn(aim_session_t *sess, aim_frame_t *fr, ...)  	sn = va_arg(ap, char*);  	type2 = va_arg(ap, int);  	va_end(ap); -     -	if(type2 == 0x0002) { + +	if (type2 == 0x0002) {  		/* User is typing */  		imcb_buddy_typing(ic, normalize(sn), OPT_TYPING); -	}  -	else if (type2 == 0x0001) { +	} else if (type2 == 0x0001) {  		/* User has typed something, but is not actively typing (stale) */  		imcb_buddy_typing(ic, normalize(sn), OPT_THINKING); -	} -	else { +	} else {  		/* User has stopped typing */  		imcb_buddy_typing(ic, normalize(sn), 0);  	} -	 +  	return 1;  }  int oscar_send_typing(struct im_connection *ic, char * who, int typing)  {  	struct oscar_data *od = ic->proto_data; -	return( aim_im_sendmtn(od->sess, 1, who, (typing & OPT_TYPING) ? 0x0002 : 0x0000) ); + +	return(aim_im_sendmtn(od->sess, 1, who, (typing & OPT_TYPING) ? 0x0002 : 0x0000));  }  void oscar_chat_msg(struct groupchat *c, char *message, int msgflags)  {  	struct im_connection *ic = c->ic; -	struct oscar_data * od = (struct oscar_data*)ic->proto_data; +	struct oscar_data * od = (struct oscar_data*) ic->proto_data;  	struct chat_connection * ccon;  	int ret;  	guint8 len = strlen(message);  	guint16 flags;  	char *s; -	 -	if (!(ccon = c->data)) + +	if (!(ccon = c->data)) {  		return; -	  	 -	for (s = message; *s; s++) -		if (*s & 128) +	} + +	for (s = message; *s; s++) { +		if (*s & 128) {  			break; -	 +		} +	} +  	flags = AIM_CHATFLAGS_NOREFLECT; -	 +  	/* Message contains high ASCII chars, time for some translation! */  	if (*s) {  		s = g_malloc(BUF_LONG); @@ -2410,46 +2561,48 @@ void oscar_chat_msg(struct groupchat *c, char *message, int msgflags)  			len = ret;  		} else {  			/* OOF, translation failed... Oh well.. */ -			g_free( s ); +			g_free(s);  			s = message;  		}  	} else {  		s = message;  	} -	  	 +  	ret = aim_chat_send_im(od->sess, ccon->conn, flags, s, len); -	  	 -	if (s != message) {	 + +	if (s != message) {  		g_free(s); -  } -   +	} +  /*  return (ret >= 0); */  }  void oscar_chat_invite(struct groupchat *c, char *who, char *message)  {  	struct im_connection *ic = c->ic; -	struct oscar_data * od = (struct oscar_data *)ic->proto_data; +	struct oscar_data * od = (struct oscar_data *) ic->proto_data;  	struct chat_connection *ccon; -	 -	if (!(ccon = c->data)) + +	if (!(ccon = c->data)) {  		return; -	 +	} +  	aim_chat_invite(od->sess, od->conn, who, message ? message : "", -					ccon->exchange, ccon->name, 0x0); +	                ccon->exchange, ccon->name, 0x0);  }  void oscar_chat_kill(struct im_connection *ic, struct chat_connection *cc)  { -	struct oscar_data *od = (struct oscar_data *)ic->proto_data; +	struct oscar_data *od = (struct oscar_data *) ic->proto_data;  	/* Notify the conversation window that we've left the chat */  	imcb_chat_free(cc->cnv);  	/* Destroy the chat_connection */  	od->oscar_chats = g_slist_remove(od->oscar_chats, cc); -	if (cc->inpa > 0) +	if (cc->inpa > 0) {  		b_event_remove(cc->inpa); +	}  	aim_conn_kill(od->sess, &cc->conn);  	g_free(cc->name);  	g_free(cc->show); @@ -2458,66 +2611,69 @@ void oscar_chat_kill(struct im_connection *ic, struct chat_connection *cc)  void oscar_chat_leave(struct groupchat *c)  { -	if (!c->data) +	if (!c->data) {  		return; +	}  	oscar_chat_kill(c->ic, c->data);  }  struct groupchat *oscar_chat_join_internal(struct im_connection *ic, const char *room, -	const char *nick, const char *password, int exchange_number) +                                           const char *nick, const char *password, int exchange_number)  { -	struct oscar_data * od = (struct oscar_data *)ic->proto_data; +	struct oscar_data * od = (struct oscar_data *) ic->proto_data;  	struct groupchat *ret = imcb_chat_new(ic, room);  	aim_conn_t * cur; -	if((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) { +	if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) {  		aim_chatnav_createroom(od->sess, cur, room, exchange_number); -		 +  		return ret;  	} else {  		struct create_room * cr = g_new0(struct create_room, 1); -		 +  		cr->exchange = exchange_number;  		cr->name = g_strdup(room);  		od->create_rooms = g_slist_append(od->create_rooms, cr);  		aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV); -		 +  		return ret;  	}  }  struct groupchat *oscar_chat_join(struct im_connection *ic, const char *room, -	const char *nick, const char *password, set_t **sets) +                                  const char *nick, const char *password, set_t **sets)  {  	return oscar_chat_join_internal(ic, room, nick, password, set_getint(sets, "exchange_number"));  }  struct groupchat *oscar_chat_with(struct im_connection * ic, char *who)  { -	struct oscar_data * od = (struct oscar_data *)ic->proto_data; +	struct oscar_data * od = (struct oscar_data *) ic->proto_data;  	struct groupchat *ret;  	static int chat_id = 0;  	char * chatname, *s; -	 +  	chatname = g_strdup_printf("%s%s%d", g_ascii_isdigit(*ic->acc->user) ? "icq" : "",  	                           ic->acc->user, chat_id++); -	 -	for (s = chatname; *s; s ++) -		if (!g_ascii_isalnum(*s)) + +	for (s = chatname; *s; s++) { +		if (!g_ascii_isalnum(*s)) {  			*s = '0'; -	 +		} +	} +  	ret = oscar_chat_join_internal(ic, chatname, NULL, NULL, 4);  	aim_chat_invite(od->sess, od->conn, who, "", 4, chatname, 0x0);  	g_free(chatname); -	 +  	return ret;  }  void oscar_accept_chat(void *data)  {  	struct aim_chat_invitation * inv = data; -	 +  	oscar_chat_join_internal(inv->ic, inv->name, NULL, NULL, 4);  	g_free(inv->name);  	g_free(inv); @@ -2526,7 +2682,7 @@ void oscar_accept_chat(void *data)  void oscar_reject_chat(void *data)  {  	struct aim_chat_invitation * inv = data; -	 +  	g_free(inv->name);  	g_free(inv);  } @@ -2541,11 +2697,12 @@ void oscar_chat_free_settings(account_t *acc, set_t **head)  	set_del(head, "exchange_number");  } -void oscar_initmodule()  +void oscar_initmodule()  {  	struct prpl *ret = g_new0(struct prpl, 1); +  	ret->name = "oscar"; -    ret->mms = 2343;       /* this guess taken from libotr UPGRADING file */ +	ret->mms = 2343;   /* this guess taken from libotr UPGRADING file */  	ret->away_states = oscar_away_states;  	ret->init = oscar_init;  	ret->login = oscar_login; @@ -2569,7 +2726,7 @@ void oscar_initmodule()  	ret->rem_permit = oscar_rem_permit;  	ret->rem_deny = oscar_rem_deny;  	ret->send_typing = oscar_send_typing; -	 +  	ret->handle_cmp = aim_sncmp;  	register_protocol(ret);  | 
