aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/oscar/oscar.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/oscar/oscar.c')
-rw-r--r--protocols/oscar/oscar.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c
index 4e552bce..5174f95c 100644
--- a/protocols/oscar/oscar.c
+++ b/protocols/oscar/oscar.c
@@ -1,6 +1,8 @@
/*
* gaim
*
+ * Some code copyright (C) 2002-2006, Jelmer Vernooij <jelmer@samba.org>
+ * and the BitlBee team.
* Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
* libfaim code copyright 1998, 1999 Adam Fritzler <afritz@auk.cx>
*
@@ -355,7 +357,9 @@ static void oscar_login(struct aim_user *user) {
if (isdigit(*user->username)) {
odata->icq = TRUE;
- /* this is odd but it's necessary for a proper do_import and do_export */
+ /* This is odd but it's necessary for a proper do_import and do_export.
+ We don't do those anymore, but let's stick with it, just in case
+ it accidentally fixes something else too... */
gc->password[8] = 0;
} else {
gc->flags |= OPT_CONN_HTML;
@@ -380,7 +384,7 @@ static void oscar_login(struct aim_user *user) {
if (g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.icq.com") != 0 &&
g_strcasecmp(user->proto_opt[USEROPT_AUTH], "login.oscar.aol.com") != 0) {
- serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.");
+ serv_got_crap(gc, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",user->proto_opt[USEROPT_AUTH]);
}
g_snprintf(buf, sizeof(buf), _("Signon: %s"), gc->username);
@@ -1116,7 +1120,8 @@ static void gaim_icq_authgrant(gpointer w, struct icq_auth *data) {
message = 0;
aim_ssi_auth_reply(od->sess, od->conn, uin, 1, "");
// aim_send_im_ch4(od->sess, uin, AIM_ICQMSG_AUTHGRANTED, &message);
- show_got_added(data->gc, NULL, uin, NULL, NULL);
+ if(find_buddy(data->gc, uin) == NULL)
+ show_got_added(data->gc, uin, NULL);
g_free(uin);
g_free(data);
@@ -1147,7 +1152,7 @@ static void gaim_icq_authask(struct gaim_connection *gc, guint32 uin, char *msg)
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:\n\n%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->gc = gc;
data->uin = uin;
do_ask_dialog(gc, dialog_msg, data, gaim_icq_authgrant, gaim_icq_authdeny);
@@ -1736,11 +1741,6 @@ static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) {
odata->rights.maxpermits = (guint)maxpermits;
odata->rights.maxdenies = (guint)maxdenies;
-// serv_finish_login(gc);
-
- if (bud_list_cache_exists(gc))
- do_import(gc, NULL);
-
aim_clientready(sess, fr->conn);
aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
@@ -2059,7 +2059,6 @@ static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
char *name;
name = g_strdup(normalize(curitem->name));
gc->permit = g_slist_append(gc->permit, name);
- build_allow_list();
tmp++;
}
}
@@ -2073,7 +2072,6 @@ static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
char *name;
name = g_strdup(normalize(curitem->name));
gc->deny = g_slist_append(gc->deny, name);
- build_block_list();
tmp++;
}
}
@@ -2095,8 +2093,6 @@ static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
} /* End of switch on curitem->type */
} /* End of for loop */
- if (tmp)
- do_export(gc);
aim_ssi_enable(sess, fr->conn);
/* Request offline messages, now that the buddy list is complete. */
@@ -2281,7 +2277,7 @@ static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)
struct tm tm;
tm.tm_mday = (int)info->birthday;
tm.tm_mon = (int)info->birthmonth-1;
- tm.tm_year = (int)info->birthyear-1900;
+ tm.tm_year = (int)info->birthyear%100;
strftime(date, sizeof(date), "%Y-%m-%d", &tm);
info_string_append(str, "\n", _("Birthday"), date);
}
@@ -2505,6 +2501,7 @@ int oscar_chat_send(struct gaim_connection * gc, int id, char *message)
struct chat_connection * ccon;
int ret;
guint8 len = strlen(message);
+ guint16 flags;
char *s;
if(!(ccon = find_oscar_chat(gc, id)))
@@ -2513,15 +2510,19 @@ int oscar_chat_send(struct gaim_connection * gc, int id, char *message)
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);
/* Try if we can put it in an ISO8859-1 string first.
If we can't, fall back to UTF16. */
if ((ret = do_iconv("UTF-8", "ISO8859-1", message, s, len, BUF_LONG)) >= 0) {
+ flags |= AIM_CHATFLAGS_ISO_8859_1;
len = ret;
} else if ((ret = do_iconv("UTF-8", "UNICODEBIG", message, s, len, BUF_LONG)) >= 0) {
+ flags |= AIM_CHATFLAGS_UNICODE;
len = ret;
} else {
/* OOF, translation failed... Oh well.. */
@@ -2532,7 +2533,7 @@ int oscar_chat_send(struct gaim_connection * gc, int id, char *message)
s = message;
}
- ret = aim_chat_send_im(od->sess, ccon->conn, AIM_CHATFLAGS_NOREFLECT, s, len);
+ ret = aim_chat_send_im(od->sess, ccon->conn, flags, s, len);
if (s != message) {
g_free(s);