aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/skype/skype.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/skype/skype.c')
-rw-r--r--protocols/skype/skype.c493
1 files changed, 294 insertions, 199 deletions
diff --git a/protocols/skype/skype.c b/protocols/skype/skype.c
index 20897d99..1727c4af 100644
--- a/protocols/skype/skype.c
+++ b/protocols/skype/skype.c
@@ -29,7 +29,7 @@
#define SKYPE_DEFAULT_SERVER "localhost"
#define SKYPE_DEFAULT_PORT "2727"
#define IRC_LINE_SIZE 16384
-#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
/*
* Enumerations
@@ -150,7 +150,7 @@ const struct skype_away_state skype_away_state_list[] = {
{ "OFFLINE", "Offline" },
{ "SKYPEME", "Skype Me" },
{ "ONLINE", "Online" },
- { NULL, NULL}
+ { NULL, NULL }
};
/*
@@ -162,8 +162,9 @@ int skype_write(struct im_connection *ic, char *buf, int len)
struct skype_data *sd = ic->proto_data;
struct pollfd pfd[1];
- if (!sd->ssl)
+ if (!sd->ssl) {
return FALSE;
+ }
pfd[0].fd = sd->fd;
pfd[0].events = POLLOUT;
@@ -195,8 +196,9 @@ int skype_printf(struct im_connection *ic, char *fmt, ...)
static void skype_buddy_ask_yes(void *data)
{
struct skype_buddy_ask_data *bla = data;
+
skype_printf(bla->ic, "SET USER %s ISAUTHORIZED TRUE\n",
- bla->handle);
+ bla->handle);
g_free(bla->handle);
g_free(bla);
}
@@ -204,8 +206,9 @@ static void skype_buddy_ask_yes(void *data)
static void skype_buddy_ask_no(void *data)
{
struct skype_buddy_ask_data *bla = data;
+
skype_printf(bla->ic, "SET USER %s ISAUTHORIZED FALSE\n",
- bla->handle);
+ bla->handle);
g_free(bla->handle);
g_free(bla);
}
@@ -213,7 +216,7 @@ static void skype_buddy_ask_no(void *data)
void skype_buddy_ask(struct im_connection *ic, char *handle, char *message)
{
struct skype_buddy_ask_data *bla = g_new0(struct skype_buddy_ask_data,
- 1);
+ 1);
char *buf;
bla->ic = ic;
@@ -227,8 +230,9 @@ void skype_buddy_ask(struct im_connection *ic, char *handle, char *message)
static void skype_call_ask_yes(void *data)
{
struct skype_buddy_ask_data *bla = data;
+
skype_printf(bla->ic, "SET CALL %s STATUS INPROGRESS\n",
- bla->handle);
+ bla->handle);
g_free(bla->handle);
g_free(bla);
}
@@ -236,8 +240,9 @@ static void skype_call_ask_yes(void *data)
static void skype_call_ask_no(void *data)
{
struct skype_buddy_ask_data *bla = data;
+
skype_printf(bla->ic, "SET CALL %s STATUS FINISHED\n",
- bla->handle);
+ bla->handle);
g_free(bla->handle);
g_free(bla);
}
@@ -245,7 +250,7 @@ static void skype_call_ask_no(void *data)
void skype_call_ask(struct im_connection *ic, char *call_id, char *message)
{
struct skype_buddy_ask_data *bla = g_new0(struct skype_buddy_ask_data,
- 1);
+ 1);
bla->ic = ic;
bla->handle = g_strdup(call_id);
@@ -296,8 +301,9 @@ static char *skype_group_by_username(struct im_connection *ic, char *username)
for (i = 0; i < g_list_length(sd->groups); i++) {
struct skype_group *sg = g_list_nth_data(sd->groups, i);
for (j = 0; j < g_list_length(sg->users); j++) {
- if (!strcmp(g_list_nth_data(sg->users, j), username))
+ if (!strcmp(g_list_nth_data(sg->users, j), username)) {
return sg->name;
+ }
}
}
return NULL;
@@ -310,8 +316,9 @@ static struct skype_group *skype_group_by_name(struct im_connection *ic, char *n
for (i = 0; i < g_list_length(sd->groups); i++) {
struct skype_group *sg = g_list_nth_data(sd->groups, i);
- if (!strcmp(sg->name, name))
+ if (!strcmp(sg->name, name)) {
return sg;
+ }
}
return NULL;
}
@@ -338,29 +345,35 @@ static void skype_parse_user(struct im_connection *ic, char *line)
status++;
ptr = strchr(++user, ' ');
- if (!ptr)
+ if (!ptr) {
return;
+ }
*ptr = '\0';
ptr++;
if (!strncmp(ptr, "ONLINESTATUS ", 13)) {
- if (!strlen(user) || !strcmp(user, sd->username))
+ if (!strlen(user) || !strcmp(user, sd->username)) {
return;
+ }
if (!set_getbool(&ic->acc->set, "test_join")
- && !strcmp(user, "echo123"))
+ && !strcmp(user, "echo123")) {
return;
+ }
ptr = g_strdup_printf("%s@skype.com", user);
imcb_add_buddy(ic, ptr, skype_group_by_username(ic, user));
if (strcmp(status, "OFFLINE") && (strcmp(status, "SKYPEOUT") ||
- !set_getbool(&ic->acc->set, "skypeout_offline")))
+ !set_getbool(&ic->acc->set, "skypeout_offline"))) {
flags |= OPT_LOGGED_IN;
- if (strcmp(status, "ONLINE") && strcmp(status, "SKYPEME"))
+ }
+ if (strcmp(status, "ONLINE") && strcmp(status, "SKYPEME")) {
flags |= OPT_AWAY;
+ }
imcb_buddy_status(ic, ptr, flags, NULL, NULL);
g_free(ptr);
} else if (!strncmp(ptr, "RECEIVEDAUTHREQUEST ", 20)) {
char *message = ptr + 20;
- if (strlen(message))
+ if (strlen(message)) {
skype_buddy_ask(ic, user, message);
+ }
} else if (!strncmp(ptr, "BUDDYSTATUS ", 12)) {
char *st = ptr + 12;
if (!strcmp(st, "3")) {
@@ -373,11 +386,13 @@ static void skype_parse_user(struct im_connection *ic, char *line)
bee_user_t *bu = bee_user_by_handle(ic->bee, ic, buf);
g_free(buf);
buf = ptr + 10;
- if (bu)
+ if (bu) {
imcb_buddy_status(ic, bu->handle, bu->flags, NULL,
- *buf ? buf : NULL);
- if (set_getbool(&ic->acc->set, "show_moods"))
+ *buf ? buf : NULL);
+ }
+ if (set_getbool(&ic->acc->set, "show_moods")) {
imcb_log(ic, "User `%s' changed mood text to `%s'", user, buf);
+ }
} else if (!strncmp(ptr, "FULLNAME ", 9)) {
char *name = ptr + 9;
if (sd->is_info) {
@@ -388,35 +403,35 @@ static void skype_parse_user(struct im_connection *ic, char *line)
imcb_rename_buddy(ic, buf, name);
g_free(buf);
}
- } else if (!strncmp(ptr, "PHONE_HOME ", 11))
+ } else if (!strncmp(ptr, "PHONE_HOME ", 11)) {
sd->info_phonehome = g_strdup(ptr + 11);
- else if (!strncmp(ptr, "PHONE_OFFICE ", 13))
+ } else if (!strncmp(ptr, "PHONE_OFFICE ", 13)) {
sd->info_phoneoffice = g_strdup(ptr + 13);
- else if (!strncmp(ptr, "PHONE_MOBILE ", 13))
+ } else if (!strncmp(ptr, "PHONE_MOBILE ", 13)) {
sd->info_phonemobile = g_strdup(ptr + 13);
- else if (!strncmp(ptr, "NROF_AUTHED_BUDDIES ", 20))
+ } else if (!strncmp(ptr, "NROF_AUTHED_BUDDIES ", 20)) {
sd->info_nrbuddies = g_strdup(ptr + 20);
- else if (!strncmp(ptr, "TIMEZONE ", 9))
+ } else if (!strncmp(ptr, "TIMEZONE ", 9)) {
sd->info_tz = g_strdup(ptr + 9);
- else if (!strncmp(ptr, "LASTONLINETIMESTAMP ", 20))
+ } else if (!strncmp(ptr, "LASTONLINETIMESTAMP ", 20)) {
sd->info_seen = g_strdup(ptr + 20);
- else if (!strncmp(ptr, "SEX ", 4))
+ } else if (!strncmp(ptr, "SEX ", 4)) {
sd->info_sex = g_strdup(ptr + 4);
- else if (!strncmp(ptr, "LANGUAGE ", 9))
+ } else if (!strncmp(ptr, "LANGUAGE ", 9)) {
sd->info_language = g_strdup(ptr + 9);
- else if (!strncmp(ptr, "COUNTRY ", 8))
+ } else if (!strncmp(ptr, "COUNTRY ", 8)) {
sd->info_country = g_strdup(ptr + 8);
- else if (!strncmp(ptr, "PROVINCE ", 9))
+ } else if (!strncmp(ptr, "PROVINCE ", 9)) {
sd->info_province = g_strdup(ptr + 9);
- else if (!strncmp(ptr, "CITY ", 5))
+ } else if (!strncmp(ptr, "CITY ", 5)) {
sd->info_city = g_strdup(ptr + 5);
- else if (!strncmp(ptr, "HOMEPAGE ", 9))
+ } else if (!strncmp(ptr, "HOMEPAGE ", 9)) {
sd->info_homepage = g_strdup(ptr + 9);
- else if (!strncmp(ptr, "ABOUT ", 6)) {
+ } else if (!strncmp(ptr, "ABOUT ", 6)) {
/* Support multiple about lines. */
- if (!sd->info_about)
+ if (!sd->info_about) {
sd->info_about = g_strdup(ptr + 6);
- else {
+ } else {
GString *st = g_string_new(sd->info_about);
g_string_append_printf(st, "\n%s", ptr + 6);
g_free(sd->info_about);
@@ -429,38 +444,43 @@ static void skype_parse_user(struct im_connection *ic, char *line)
GString *st = g_string_new("Contact Information\n");
g_string_append_printf(st, "Skype Name: %s\n", user);
if (sd->info_fullname) {
- if (strlen(sd->info_fullname))
+ if (strlen(sd->info_fullname)) {
g_string_append_printf(st, "Full Name: %s\n",
- sd->info_fullname);
+ sd->info_fullname);
+ }
g_free(sd->info_fullname);
sd->info_fullname = NULL;
}
if (sd->info_phonehome) {
- if (strlen(sd->info_phonehome))
+ if (strlen(sd->info_phonehome)) {
g_string_append_printf(st, "Home Phone: %s\n",
- sd->info_phonehome);
+ sd->info_phonehome);
+ }
g_free(sd->info_phonehome);
sd->info_phonehome = NULL;
}
if (sd->info_phoneoffice) {
- if (strlen(sd->info_phoneoffice))
+ if (strlen(sd->info_phoneoffice)) {
g_string_append_printf(st, "Office Phone: %s\n",
- sd->info_phoneoffice);
+ sd->info_phoneoffice);
+ }
g_free(sd->info_phoneoffice);
sd->info_phoneoffice = NULL;
}
if (sd->info_phonemobile) {
- if (strlen(sd->info_phonemobile))
+ if (strlen(sd->info_phonemobile)) {
g_string_append_printf(st, "Mobile Phone: %s\n",
- sd->info_phonemobile);
+ sd->info_phonemobile);
+ }
g_free(sd->info_phonemobile);
sd->info_phonemobile = NULL;
}
g_string_append_printf(st, "Personal Information\n");
if (sd->info_nrbuddies) {
- if (strlen(sd->info_nrbuddies))
+ if (strlen(sd->info_nrbuddies)) {
g_string_append_printf(st,
- "Contacts: %s\n", sd->info_nrbuddies);
+ "Contacts: %s\n", sd->info_nrbuddies);
+ }
g_free(sd->info_nrbuddies);
sd->info_nrbuddies = NULL;
}
@@ -468,11 +488,11 @@ static void skype_parse_user(struct im_connection *ic, char *line)
if (strlen(sd->info_tz)) {
char ib[256];
time_t t = time(NULL);
- t += atoi(sd->info_tz)-(60*60*24);
+ t += atoi(sd->info_tz) - (60 * 60 * 24);
struct tm *gt = gmtime(&t);
strftime(ib, 256, "%H:%M:%S", gt);
g_string_append_printf(st,
- "Local Time: %s\n", ib);
+ "Local Time: %s\n", ib);
}
g_free(sd->info_tz);
sd->info_tz = NULL;
@@ -484,27 +504,27 @@ static void skype_parse_user(struct im_connection *ic, char *line)
struct tm *tm = localtime(&it);
strftime(ib, 256, ("%Y. %m. %d. %H:%M"), tm);
g_string_append_printf(st,
- "Last Seen: %s\n", ib);
+ "Last Seen: %s\n", ib);
}
g_free(sd->info_seen);
sd->info_seen = NULL;
}
if (sd->info_birthday) {
if (strlen(sd->info_birthday) &&
- strcmp(sd->info_birthday, "0")) {
+ strcmp(sd->info_birthday, "0")) {
char ib[256];
struct tm tm;
strptime(sd->info_birthday, "%Y%m%d", &tm);
strftime(ib, 256, "%B %d, %Y", &tm);
g_string_append_printf(st,
- "Birthday: %s\n", ib);
+ "Birthday: %s\n", ib);
strftime(ib, 256, "%Y", &tm);
int year = atoi(ib);
time_t t = time(NULL);
struct tm *lt = localtime(&t);
g_string_append_printf(st,
- "Age: %d\n", lt->tm_year+1900-year);
+ "Age: %d\n", lt->tm_year + 1900 - year);
}
g_free(sd->info_birthday);
sd->info_birthday = NULL;
@@ -512,10 +532,11 @@ static void skype_parse_user(struct im_connection *ic, char *line)
if (sd->info_sex) {
if (strlen(sd->info_sex)) {
char *iptr = sd->info_sex;
- while (*iptr++)
+ while (*iptr++) {
*iptr = g_ascii_tolower(*iptr);
+ }
g_string_append_printf(st,
- "Gender: %s\n", sd->info_sex);
+ "Gender: %s\n", sd->info_sex);
}
g_free(sd->info_sex);
sd->info_sex = NULL;
@@ -523,12 +544,13 @@ static void skype_parse_user(struct im_connection *ic, char *line)
if (sd->info_language) {
if (strlen(sd->info_language)) {
char *iptr = strchr(sd->info_language, ' ');
- if (iptr)
+ if (iptr) {
iptr++;
- else
+ } else {
iptr = sd->info_language;
+ }
g_string_append_printf(st,
- "Language: %s\n", iptr);
+ "Language: %s\n", iptr);
}
g_free(sd->info_language);
sd->info_language = NULL;
@@ -536,41 +558,46 @@ static void skype_parse_user(struct im_connection *ic, char *line)
if (sd->info_country) {
if (strlen(sd->info_country)) {
char *iptr = strchr(sd->info_country, ' ');
- if (iptr)
+ if (iptr) {
iptr++;
- else
+ } else {
iptr = sd->info_country;
+ }
g_string_append_printf(st,
- "Country: %s\n", iptr);
+ "Country: %s\n", iptr);
}
g_free(sd->info_country);
sd->info_country = NULL;
}
if (sd->info_province) {
- if (strlen(sd->info_province))
+ if (strlen(sd->info_province)) {
g_string_append_printf(st,
- "Region: %s\n", sd->info_province);
+ "Region: %s\n", sd->info_province);
+ }
g_free(sd->info_province);
sd->info_province = NULL;
}
if (sd->info_city) {
- if (strlen(sd->info_city))
+ if (strlen(sd->info_city)) {
g_string_append_printf(st,
- "City: %s\n", sd->info_city);
+ "City: %s\n", sd->info_city);
+ }
g_free(sd->info_city);
sd->info_city = NULL;
}
if (sd->info_homepage) {
- if (strlen(sd->info_homepage))
+ if (strlen(sd->info_homepage)) {
g_string_append_printf(st,
- "Homepage: %s\n", sd->info_homepage);
+ "Homepage: %s\n", sd->info_homepage);
+ }
g_free(sd->info_homepage);
sd->info_homepage = NULL;
}
if (sd->info_about) {
- if (strlen(sd->info_about))
+ if (strlen(sd->info_about)) {
g_string_append_printf(st, "%s\n",
- sd->info_about);
+ sd->info_about);
+ }
g_free(sd->info_about);
sd->info_about = NULL;
}
@@ -583,21 +610,24 @@ static void skype_parse_chatmessage_said_emoted(struct im_connection *ic, struct
{
struct skype_data *sd = ic->proto_data;
char buf[IRC_LINE_SIZE];
+
if (!strcmp(sd->type, "SAID")) {
- if (!sd->is_edit)
+ if (!sd->is_edit) {
g_snprintf(buf, IRC_LINE_SIZE, "%s", body);
- else {
+ } else {
g_snprintf(buf, IRC_LINE_SIZE, "%s %s", set_getstr(&ic->acc->set, "edit_prefix"), body);
sd->is_edit = 0;
}
- } else
+ } else {
g_snprintf(buf, IRC_LINE_SIZE, "/me %s", body);
- if (!gc)
+ }
+ if (!gc) {
/* Private message */
imcb_buddy_msg(ic, sd->handle, buf, 0, 0);
- else
+ } else {
/* Groupchat message */
imcb_chat_msg(gc, sd->handle, buf, 0, 0);
+ }
}
static void skype_parse_chatmessage(struct im_connection *ic, char *line)
@@ -605,12 +635,14 @@ static void skype_parse_chatmessage(struct im_connection *ic, char *line)
struct skype_data *sd = ic->proto_data;
char *id = strchr(line, ' ');
- if (!++id)
+ if (!++id) {
return;
+ }
char *info = strchr(id, ' ');
- if (!info)
+ if (!info) {
return;
+ }
*info = '\0';
info++;
if (!strcmp(info, "STATUS RECEIVED") || !strncmp(info, "EDITED_TIMESTAMP", 16)) {
@@ -621,10 +653,11 @@ static void skype_parse_chatmessage(struct im_connection *ic, char *line)
* (4) Query chatname
*/
skype_printf(ic, "GET CHATMESSAGE %s FROM_HANDLE\n", id);
- if (!strcmp(info, "STATUS RECEIVED"))
+ if (!strcmp(info, "STATUS RECEIVED")) {
skype_printf(ic, "GET CHATMESSAGE %s BODY\n", id);
- else
+ } else {
sd->is_edit = 1;
+ }
skype_printf(ic, "GET CHATMESSAGE %s TYPE\n", id);
skype_printf(ic, "GET CHATMESSAGE %s CHATNAME\n", id);
} else if (!strncmp(info, "FROM_HANDLE ", 12)) {
@@ -647,7 +680,7 @@ static void skype_parse_chatmessage(struct im_connection *ic, char *line)
} else if (!strncmp(info, "BODY ", 5)) {
info += 5;
sd->body = g_list_append(sd->body, g_strdup(info));
- } else if (!strncmp(info, "TYPE ", 5)) {
+ } else if (!strncmp(info, "TYPE ", 5)) {
info += 5;
g_free(sd->type);
sd->type = g_strdup(info);
@@ -659,14 +692,15 @@ static void skype_parse_chatmessage(struct im_connection *ic, char *line)
for (i = 0; i < g_list_length(sd->body); i++) {
char *body = g_list_nth_data(sd->body, i);
if (!strcmp(sd->type, "SAID") ||
- !strcmp(sd->type, "EMOTED")) {
+ !strcmp(sd->type, "EMOTED")) {
skype_parse_chatmessage_said_emoted(ic, gc, body);
- } else if (!strcmp(sd->type, "SETTOPIC") && gc)
+ } else if (!strcmp(sd->type, "SETTOPIC") && gc) {
imcb_chat_topic(gc,
- sd->handle, body, 0);
- else if (!strcmp(sd->type, "LEFT") && gc)
+ sd->handle, body, 0);
+ } else if (!strcmp(sd->type, "LEFT") && gc) {
imcb_chat_remove_buddy(gc,
- sd->handle, NULL);
+ sd->handle, NULL);
+ }
}
g_list_free(sd->body);
sd->body = NULL;
@@ -680,19 +714,22 @@ static void skype_parse_call(struct im_connection *ic, char *line)
char *id = strchr(line, ' ');
char buf[IRC_LINE_SIZE];
- if (!++id)
+ if (!++id) {
return;
+ }
char *info = strchr(id, ' ');
- if (!info)
+ if (!info) {
return;
+ }
*info = '\0';
info++;
- if (!strncmp(info, "FAILUREREASON ", 14))
+ if (!strncmp(info, "FAILUREREASON ", 14)) {
sd->failurereason = atoi(strchr(info, ' '));
- else if (!strcmp(info, "STATUS RINGING")) {
- if (sd->call_id)
+ } else if (!strcmp(info, "STATUS RINGING")) {
+ if (sd->call_id) {
g_free(sd->call_id);
+ }
sd->call_id = g_strdup(id);
skype_printf(ic, "GET CALL %s PARTNER_HANDLE\n", id);
sd->call_status = SKYPE_CALL_RINGING;
@@ -709,64 +746,69 @@ static void skype_parse_call(struct im_connection *ic, char *line)
skype_printf(ic, "GET CALL %s PARTNER_HANDLE\n", id);
sd->call_status = SKYPE_CALL_REFUSED;
} else if (!strcmp(info, "STATUS UNPLACED")) {
- if (sd->call_id)
+ if (sd->call_id) {
g_free(sd->call_id);
+ }
/* Save the ID for later usage (Cancel/Finish). */
sd->call_id = g_strdup(id);
sd->call_out = TRUE;
} else if (!strcmp(info, "STATUS FAILED")) {
imcb_error(ic, "Call failed: %s",
- skype_call_strerror(sd->failurereason));
+ skype_call_strerror(sd->failurereason));
sd->call_id = NULL;
} else if (!strncmp(info, "DURATION ", 9)) {
- if (sd->call_duration)
+ if (sd->call_duration) {
g_free(sd->call_duration);
- sd->call_duration = g_strdup(info+9);
+ }
+ sd->call_duration = g_strdup(info + 9);
} else if (!strncmp(info, "PARTNER_HANDLE ", 15)) {
info += 15;
- if (!sd->call_status)
+ if (!sd->call_status) {
return;
+ }
switch (sd->call_status) {
case SKYPE_CALL_RINGING:
- if (sd->call_out)
+ if (sd->call_out) {
imcb_log(ic, "You are currently ringing the user %s.", info);
- else {
+ } else {
g_snprintf(buf, IRC_LINE_SIZE,
- "The user %s is currently ringing you.",
- info);
+ "The user %s is currently ringing you.",
+ info);
skype_call_ask(ic, sd->call_id, buf);
}
break;
case SKYPE_CALL_MISSED:
imcb_log(ic, "You have missed a call from user %s.",
- info);
+ info);
break;
case SKYPE_CALL_CANCELLED:
imcb_log(ic, "You cancelled the call to the user %s.",
- info);
+ info);
sd->call_status = 0;
sd->call_out = FALSE;
break;
case SKYPE_CALL_REFUSED:
- if (sd->call_out)
+ if (sd->call_out) {
imcb_log(ic, "The user %s refused the call.",
- info);
- else
+ info);
+ } else {
imcb_log(ic,
- "You refused the call from user %s.",
- info);
+ "You refused the call from user %s.",
+ info);
+ }
sd->call_out = FALSE;
break;
case SKYPE_CALL_FINISHED:
- if (sd->call_duration)
+ if (sd->call_duration) {
imcb_log(ic,
- "You finished the call to the user %s "
- "(duration: %s seconds).",
- info, sd->call_duration);
- else
+ "You finished the call to the user %s "
+ "(duration: %s seconds).",
+ info, sd->call_duration);
+ } else {
imcb_log(ic,
- "You finished the call to the user %s.",
- info);
+ "You finished the call to the user %s.",
+ info);
+ }
sd->call_out = FALSE;
break;
default:
@@ -782,21 +824,23 @@ static void skype_parse_filetransfer(struct im_connection *ic, char *line)
struct skype_data *sd = ic->proto_data;
char *id = strchr(line, ' ');
- if (!++id)
+ if (!++id) {
return;
+ }
char *info = strchr(id, ' ');
- if (!info)
+ if (!info) {
return;
+ }
*info = '\0';
info++;
if (!strcmp(info, "STATUS NEW")) {
skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n",
- id);
+ id);
sd->filetransfer_status = SKYPE_FILETRANSFER_NEW;
} else if (!strcmp(info, "STATUS FAILED")) {
skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n",
- id);
+ id);
sd->filetransfer_status = SKYPE_FILETRANSFER_FAILED;
} else if (!strcmp(info, "STATUS COMPLETED")) {
skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n", id);
@@ -809,23 +853,25 @@ static void skype_parse_filetransfer(struct im_connection *ic, char *line)
sd->filetransfer_path = g_strdup(info);
} else if (!strncmp(info, "PARTNER_HANDLE ", 15)) {
info += 15;
- if (!sd->filetransfer_status)
+ if (!sd->filetransfer_status) {
return;
+ }
switch (sd->filetransfer_status) {
case SKYPE_FILETRANSFER_NEW:
imcb_log(ic, "The user %s offered a new file for you.",
- info);
+ info);
break;
case SKYPE_FILETRANSFER_FAILED:
imcb_log(ic, "Failed to transfer file from user %s.",
- info);
+ info);
break;
case SKYPE_FILETRANSFER_COMPLETED:
imcb_log(ic, "File transfer from user %s completed.", info);
break;
case SKYPE_FILETRANSFER_TRANSFERRING:
if (sd->filetransfer_path) {
- imcb_log(ic, "File transfer from user %s started, saving to %s.", info, sd->filetransfer_path);
+ imcb_log(ic, "File transfer from user %s started, saving to %s.", info,
+ sd->filetransfer_path);
g_free(sd->filetransfer_path);
sd->filetransfer_path = NULL;
}
@@ -841,10 +887,11 @@ static struct skype_group *skype_group_by_id(struct im_connection *ic, int id)
int i;
for (i = 0; i < g_list_length(sd->groups); i++) {
- struct skype_group *sg = (struct skype_group *)g_list_nth_data(sd->groups, i);
+ struct skype_group *sg = (struct skype_group *) g_list_nth_data(sd->groups, i);
- if (sg->id == id)
+ if (sg->id == id) {
return sg;
+ }
}
return NULL;
}
@@ -858,8 +905,9 @@ static void skype_group_free(struct skype_group *sg, gboolean usersonly)
g_free(user);
}
sg->users = NULL;
- if (usersonly)
+ if (usersonly) {
return;
+ }
g_free(sg->name);
g_free(sg);
}
@@ -882,13 +930,15 @@ static void skype_parse_group(struct im_connection *ic, char *line)
struct skype_data *sd = ic->proto_data;
char *id = strchr(line, ' ');
- if (!++id)
+ if (!++id) {
return;
+ }
char *info = strchr(id, ' ');
- if (!info)
+ if (!info) {
return;
+ }
*info = '\0';
info++;
@@ -922,9 +972,10 @@ static void skype_parse_group(struct im_connection *ic, char *line)
}
g_strfreev(users);
skype_group_users(ic, sg);
- } else
+ } else {
log_message(LOGLVL_ERROR,
- "No skype group with id %s. That's probably a bug.", id);
+ "No skype group with id %s. That's probably a bug.", id);
+ }
} else if (!strncmp(info, "NROFUSERS ", 10)) {
if (!sd->pending_user) {
/* Number of users changed in this group, query its type to see
@@ -941,12 +992,14 @@ static void skype_parse_group(struct im_connection *ic, char *line)
skype_printf(ic, "ALTER GROUP %d ADDUSER %s\n", sg->id, sd->pending_user);
g_free(sd->pending_user);
sd->pending_user = NULL;
- } else
+ } else {
log_message(LOGLVL_ERROR,
- "No skype group with id %s. That's probably a bug.", id);
- } else if (!strcmp(info, "TYPE CUSTOM_GROUP"))
+ "No skype group with id %s. That's probably a bug.", id);
+ }
+ } else if (!strcmp(info, "TYPE CUSTOM_GROUP")) {
/* This one is interesting, query its users. */
skype_printf(ic, "GET GROUP %s USERS\n", id);
+ }
}
static void skype_parse_chat(struct im_connection *ic, char *line)
@@ -955,19 +1008,22 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
char buf[IRC_LINE_SIZE];
char *id = strchr(line, ' ');
- if (!++id)
+ if (!++id) {
return;
+ }
struct groupchat *gc;
char *info = strchr(id, ' ');
- if (!info)
+ if (!info) {
return;
+ }
*info = '\0';
info++;
/* Remove fake chat if we created one in skype_chat_with() */
gc = bee_chat_by_title(ic->bee, ic, "");
- if (gc)
+ if (gc) {
imcb_chat_free(gc);
+ }
if (!strcmp(info, "STATUS MULTI_SUBSCRIBED")) {
gc = bee_chat_by_title(ic->bee, ic, id);
if (!gc) {
@@ -987,7 +1043,7 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
* just leave it out. */
/*skype_printf(ic, "OPEN CHAT %s\n", id);*/
g_snprintf(buf, IRC_LINE_SIZE, "%s@skype.com",
- sd->groupchat_with);
+ sd->groupchat_with);
imcb_chat_add_buddy(gc, buf);
imcb_chat_add_buddy(gc, sd->username);
g_free(sd->groupchat_with);
@@ -996,8 +1052,9 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
skype_printf(ic, "GET CHAT %s TOPIC\n", id);
} else if (!strcmp(info, "STATUS UNSUBSCRIBED")) {
gc = bee_chat_by_title(ic->bee, ic, id);
- if (gc)
- gc->data = (void *)FALSE;
+ if (gc) {
+ gc->data = (void *) FALSE;
+ }
} else if (!strncmp(info, "ADDER ", 6)) {
info += 6;
g_free(sd->adder);
@@ -1014,28 +1071,32 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
g_free(sd->adder);
sd->adder = NULL;
}
- } else if (!strncmp(info, "MEMBERS ", 8) || !strncmp(info, "ACTIVEMEMBERS ", 14) ) {
- if (!strncmp(info, "MEMBERS ", 8))
+ } else if (!strncmp(info, "MEMBERS ", 8) || !strncmp(info, "ACTIVEMEMBERS ", 14)) {
+ if (!strncmp(info, "MEMBERS ", 8)) {
info += 8;
- else
+ } else {
info += 14;
+ }
gc = bee_chat_by_title(ic->bee, ic, id);
/* Hack! We set ->data to TRUE
* while we're on the channel
* so that we won't rejoin
* after a /part. */
- if (!gc || gc->data)
+ if (!gc || gc->data) {
return;
+ }
char **members = g_strsplit(info, " ", 0);
int i;
for (i = 0; members[i]; i++) {
- if (!strcmp(members[i], sd->username))
+ if (!strcmp(members[i], sd->username)) {
continue;
+ }
g_snprintf(buf, IRC_LINE_SIZE, "%s@skype.com",
- members[i]);
+ members[i]);
if (!g_list_find_custom(gc->in_room, buf,
- (GCompareFunc)strcmp))
+ (GCompareFunc) strcmp)) {
imcb_chat_add_buddy(gc, buf);
+ }
}
imcb_chat_add_buddy(gc, sd->username);
g_strfreev(members);
@@ -1044,9 +1105,9 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
static void skype_parse_password(struct im_connection *ic, char *line)
{
- if (!strncmp(line+9, "OK", 2))
+ if (!strncmp(line + 9, "OK", 2)) {
imcb_connected(ic);
- else {
+ } else {
imcb_error(ic, "Authentication Failed");
imc_logout(ic, TRUE);
}
@@ -1054,7 +1115,7 @@ static void skype_parse_password(struct im_connection *ic, char *line)
static void skype_parse_profile(struct im_connection *ic, char *line)
{
- imcb_log(ic, "SkypeOut balance value is '%s'.", line+21);
+ imcb_log(ic, "SkypeOut balance value is '%s'.", line + 21);
}
static void skype_parse_ping(struct im_connection *ic, char *line)
@@ -1080,8 +1141,9 @@ static void skype_parse_chats(struct im_connection *ic, char *line)
static void skype_parse_groups(struct im_connection *ic, char *line)
{
- if (!set_getbool(&ic->acc->set, "read_groups"))
+ if (!set_getbool(&ic->acc->set, "read_groups")) {
return;
+ }
char **i;
char **groups = g_strsplit(line + 7, ", ", 0);
@@ -1099,13 +1161,15 @@ static void skype_parse_alter_group(struct im_connection *ic, char *line)
{
char *id = line + strlen("ALTER GROUP");
- if (!++id)
+ if (!++id) {
return;
+ }
char *info = strchr(id, ' ');
- if (!info)
+ if (!info) {
return;
+ }
*info = '\0';
info++;
@@ -1118,16 +1182,17 @@ static void skype_parse_alter_group(struct im_connection *ic, char *line)
sg->users = g_list_append(sg->users, g_strdup(info));
imcb_add_buddy(ic, buf, sg->name);
g_free(buf);
- } else
+ } else {
log_message(LOGLVL_ERROR,
- "No skype group with id %s. That's probably a bug.", id);
+ "No skype group with id %s. That's probably a bug.", id);
+ }
}
}
typedef void (*skype_parser)(struct im_connection *ic, char *line);
static gboolean skype_read_callback(gpointer data, gint fd,
- b_input_condition cond)
+ b_input_condition cond)
{
struct im_connection *ic = data;
struct skype_data *sd = ic->proto_data;
@@ -1157,11 +1222,12 @@ static gboolean skype_read_callback(gpointer data, gint fd,
fd = fd;
cond = cond;
- if (!sd || sd->fd == -1)
+ if (!sd || sd->fd == -1) {
return FALSE;
+ }
/* Read the whole data. */
st = ssl_read(sd->ssl, buf, sizeof(buf));
- if (st >= IRC_LINE_SIZE-1) {
+ if (st >= IRC_LINE_SIZE - 1) {
/* As we don't buffer incoming data, if IRC_LINE_SIZE amount of bytes
* were received, there's a good chance last message was truncated
* and the next recv() will yield garbage. */
@@ -1174,16 +1240,19 @@ static gboolean skype_read_callback(gpointer data, gint fd,
lines = g_strsplit(buf, "\n", 0);
lineptr = lines;
while ((line = *lineptr)) {
- if (!strlen(line))
+ if (!strlen(line)) {
break;
- if (set_getbool(&ic->acc->set, "skypeconsole_receive"))
+ }
+ if (set_getbool(&ic->acc->set, "skypeconsole_receive")) {
imcb_buddy_msg(ic, "skypeconsole", line, 0, 0);
- for (i = 0; i < ARRAY_SIZE(parsers); i++)
+ }
+ for (i = 0; i < ARRAY_SIZE(parsers); i++) {
if (!strncmp(line, parsers[i].k,
- strlen(parsers[i].k))) {
+ strlen(parsers[i].k))) {
parsers[i].v(ic, line);
break;
}
+ }
lineptr++;
}
g_strfreev(lines);
@@ -1204,12 +1273,14 @@ gboolean skype_start_stream(struct im_connection *ic)
struct skype_data *sd = ic->proto_data;
int st;
- if (!sd)
+ if (!sd) {
return FALSE;
+ }
- if (sd->bfd <= 0)
+ if (sd->bfd <= 0) {
sd->bfd = b_input_add(sd->fd, B_EV_IO_READ,
- skype_read_callback, ic);
+ skype_read_callback, ic);
+ }
/* Log in */
skype_printf(ic, "USERNAME %s\n", ic->acc->user);
@@ -1259,14 +1330,15 @@ static void skype_login(account_t *acc)
imcb_log(ic, "Connecting");
sd->ssl = ssl_connect(set_getstr(&acc->set, "server"),
- set_getint(&acc->set, "port"), FALSE, skype_connected, ic);
+ set_getint(&acc->set, "port"), FALSE, skype_connected, ic);
sd->fd = sd->ssl ? ssl_getfd(sd->ssl) : -1;
sd->username = g_strdup(acc->user);
sd->ic = ic;
- if (set_getbool(&acc->set, "skypeconsole"))
+ if (set_getbool(&acc->set, "skypeconsole")) {
imcb_add_buddy(ic, "skypeconsole", NULL);
+ }
}
static void skype_logout(struct im_connection *ic)
@@ -1276,16 +1348,18 @@ static void skype_logout(struct im_connection *ic)
skype_printf(ic, "SET USERSTATUS OFFLINE\n");
- while (ic->groupchats)
+ while (ic->groupchats) {
imcb_chat_free(ic->groupchats->data);
+ }
for (i = 0; i < g_list_length(sd->groups); i++) {
- struct skype_group *sg = (struct skype_group *)g_list_nth_data(sd->groups, i);
+ struct skype_group *sg = (struct skype_group *) g_list_nth_data(sd->groups, i);
skype_group_free(sg, FALSE);
}
- if (sd->ssl)
+ if (sd->ssl) {
ssl_disconnect(sd->ssl);
+ }
g_free(sd->username);
g_free(sd->handle);
@@ -1294,7 +1368,7 @@ static void skype_logout(struct im_connection *ic)
}
static int skype_buddy_msg(struct im_connection *ic, char *who, char *message,
- int flags)
+ int flags)
{
char *ptr, *nick;
int st;
@@ -1304,13 +1378,15 @@ static int skype_buddy_msg(struct im_connection *ic, char *who, char *message,
nick = g_strdup(who);
ptr = strchr(nick, '@');
- if (ptr)
+ if (ptr) {
*ptr = '\0';
+ }
- if (!strncmp(who, "skypeconsole", 12))
+ if (!strncmp(who, "skypeconsole", 12)) {
st = skype_printf(ic, "%s\n", message);
- else
+ } else {
st = skype_printf(ic, "MESSAGE %s %s\n", nick, message);
+ }
g_free(nick);
return st;
@@ -1320,25 +1396,28 @@ const struct skype_away_state *skype_away_state_by_name(char *name)
{
int i;
- for (i = 0; skype_away_state_list[i].full_name; i++)
- if (g_strcasecmp(skype_away_state_list[i].full_name, name) == 0)
+ for (i = 0; skype_away_state_list[i].full_name; i++) {
+ if (g_strcasecmp(skype_away_state_list[i].full_name, name) == 0) {
return skype_away_state_list + i;
+ }
+ }
return NULL;
}
static void skype_set_away(struct im_connection *ic, char *state_txt,
- char *message)
+ char *message)
{
const struct skype_away_state *state;
/* Unused parameter */
message = message;
- if (state_txt == NULL)
+ if (state_txt == NULL) {
state = skype_away_state_by_name("Online");
- else
+ } else {
state = skype_away_state_by_name(state_txt);
+ }
skype_printf(ic, "SET USERSTATUS %s\n", state->code);
}
@@ -1350,10 +1429,12 @@ static GList *skype_away_states(struct im_connection *ic)
/* Unused parameter */
ic = ic;
- if (l == NULL)
- for (i = 0; skype_away_state_list[i].full_name; i++)
+ if (l == NULL) {
+ for (i = 0; skype_away_state_list[i].full_name; i++) {
l = g_list_append(l,
- (void *)skype_away_state_list[i].full_name);
+ (void *) skype_away_state_list[i].full_name);
+ }
+ }
return l;
}
@@ -1390,8 +1471,9 @@ static void skype_call(struct im_connection *ic, char *value)
char *nick = g_strdup(value);
char *ptr = strchr(nick, '@');
- if (ptr)
+ if (ptr) {
*ptr = '\0';
+ }
skype_printf(ic, "CALL %s\n", nick);
g_free(nick);
}
@@ -1402,11 +1484,12 @@ static void skype_hangup(struct im_connection *ic)
if (sd->call_id) {
skype_printf(ic, "SET CALL %s STATUS FINISHED\n",
- sd->call_id);
+ sd->call_id);
g_free(sd->call_id);
sd->call_id = 0;
- } else
+ } else {
imcb_error(ic, "There are no active calls currently.");
+ }
}
static char *skype_set_call(set_t *set, char *value)
@@ -1414,10 +1497,11 @@ static char *skype_set_call(set_t *set, char *value)
account_t *acc = set->data;
struct im_connection *ic = acc->ic;
- if (value)
+ if (value) {
skype_call(ic, value);
- else
+ } else {
skype_hangup(ic);
+ }
return value;
}
@@ -1428,12 +1512,13 @@ static void skype_add_buddy(struct im_connection *ic, char *who, char *group)
nick = g_strdup(who);
ptr = strchr(nick, '@');
- if (ptr)
+ if (ptr) {
*ptr = '\0';
+ }
if (!group) {
skype_printf(ic, "SET USER %s BUDDYSTATUS 2 Please authorize me\n",
- nick);
+ nick);
g_free(nick);
} else {
struct skype_group *sg = skype_group_by_name(ic, group);
@@ -1458,8 +1543,9 @@ static void skype_remove_buddy(struct im_connection *ic, char *who, char *group)
nick = g_strdup(who);
ptr = strchr(nick, '@');
- if (ptr)
+ if (ptr) {
*ptr = '\0';
+ }
skype_printf(ic, "SET USER %s BUDDYSTATUS 1\n", nick);
g_free(nick);
}
@@ -1477,8 +1563,9 @@ void skype_chat_msg(struct groupchat *gc, char *message, int flags)
void skype_chat_leave(struct groupchat *gc)
{
struct im_connection *ic = gc->ic;
+
skype_printf(ic, "ALTER CHAT %s LEAVE\n", gc->title);
- gc->data = (void *)TRUE;
+ gc->data = (void *) TRUE;
}
void skype_chat_invite(struct groupchat *gc, char *who, char *message)
@@ -1488,8 +1575,9 @@ void skype_chat_invite(struct groupchat *gc, char *who, char *message)
nick = g_strdup(who);
ptr = strchr(nick, '@');
- if (ptr)
+ if (ptr) {
*ptr = '\0';
+ }
skype_printf(ic, "ALTER CHAT %s ADDMEMBERS %s\n", gc->title, nick);
g_free(nick);
}
@@ -1498,8 +1586,9 @@ void skype_chat_topic(struct groupchat *gc, char *message)
{
struct im_connection *ic = gc->ic;
struct skype_data *sd = ic->proto_data;
+
skype_printf(ic, "ALTER CHAT %s SETTOPIC %s\n",
- gc->title, message);
+ gc->title, message);
sd->topic_wait = 1;
}
@@ -1507,10 +1596,12 @@ struct groupchat *skype_chat_with(struct im_connection *ic, char *who)
{
struct skype_data *sd = ic->proto_data;
char *ptr, *nick;
+
nick = g_strdup(who);
ptr = strchr(nick, '@');
- if (ptr)
+ if (ptr) {
*ptr = '\0';
+ }
skype_printf(ic, "CHAT CREATE %s\n", nick);
sd->groupchat_with = g_strdup(nick);
g_free(nick);
@@ -1523,10 +1614,12 @@ static void skype_get_info(struct im_connection *ic, char *who)
{
struct skype_data *sd = ic->proto_data;
char *ptr, *nick;
+
nick = g_strdup(who);
ptr = strchr(nick, '@');
- if (ptr)
+ if (ptr) {
*ptr = '\0';
+ }
sd->is_info = TRUE;
skype_printf(ic, "GET USER %s FULLNAME\n", nick);
skype_printf(ic, "GET USER %s PHONE_HOME\n", nick);
@@ -1555,14 +1648,14 @@ static void skype_init(account_t *acc)
set_t *s;
s = set_add(&acc->set, "server", SKYPE_DEFAULT_SERVER, set_eval_account,
- acc);
+ acc);
s->flags |= ACC_SET_OFFLINE_ONLY;
s = set_add(&acc->set, "port", SKYPE_DEFAULT_PORT, set_eval_int, acc);
s->flags |= ACC_SET_OFFLINE_ONLY;
s = set_add(&acc->set, "display_name", NULL, skype_set_display_name,
- acc);
+ acc);
s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
s = set_add(&acc->set, "mood_text", NULL, skype_set_mood_text, acc);
@@ -1580,7 +1673,7 @@ static void skype_init(account_t *acc)
s->flags |= ACC_SET_OFFLINE_ONLY;
s = set_add(&acc->set, "skypeconsole_receive", "false", set_eval_bool,
- acc);
+ acc);
s->flags |= ACC_SET_OFFLINE_ONLY;
s = set_add(&acc->set, "auto_join", "false", set_eval_bool, acc);
@@ -1592,7 +1685,7 @@ static void skype_init(account_t *acc)
s = set_add(&acc->set, "show_moods", "false", set_eval_bool, acc);
s = set_add(&acc->set, "edit_prefix", "EDIT:",
- NULL, acc);
+ NULL, acc);
s = set_add(&acc->set, "read_groups", "false", set_eval_bool, acc);
}
@@ -1607,13 +1700,14 @@ GList *skype_buddy_action_list(bee_user_t *bu)
if (ret == NULL) {
static const struct buddy_action ba[2] = {
- {"CALL", "Initiate a call" },
- {"HANGUP", "Hang up a call" },
+ { "CALL", "Initiate a call" },
+ { "HANGUP", "Hang up a call" },
};
int i;
- for (i = 0; i < ARRAY_SIZE(ba); i++)
- ret = g_list_prepend(ret, (void *)(ba + i));
+ for (i = 0; i < ARRAY_SIZE(ba); i++) {
+ ret = g_list_prepend(ret, (void *) (ba + i));
+ }
}
return ret;
@@ -1625,10 +1719,11 @@ void *skype_buddy_action(struct bee_user *bu, const char *action, char * const a
args = args;
data = data;
- if (!g_strcasecmp(action, "CALL"))
+ if (!g_strcasecmp(action, "CALL")) {
skype_call(bu->ic, bu->handle);
- else if (!g_strcasecmp(action, "HANGUP"))
+ } else if (!g_strcasecmp(action, "HANGUP")) {
skype_hangup(bu->ic);
+ }
return NULL;
}