pidgin/gtkutils.c

branch
soc.2013.gobjectification.plugins
changeset 37006
5fecec4fe589
parent 36959
4806ff428ecd
child 37015
28ee14bbe0ab
equal deleted inserted replaced
37005:702a601fc2ca 37006:5fecec4fe589
928 gboolean 928 gboolean
929 pidgin_parse_x_im_contact(const char *msg, gboolean all_accounts, 929 pidgin_parse_x_im_contact(const char *msg, gboolean all_accounts,
930 PurpleAccount **ret_account, char **ret_protocol, 930 PurpleAccount **ret_account, char **ret_protocol,
931 char **ret_username, char **ret_alias) 931 char **ret_username, char **ret_alias)
932 { 932 {
933 char *protocol_id = NULL; 933 char *protocol = NULL;
934 char *username = NULL; 934 char *username = NULL;
935 char *alias = NULL; 935 char *alias = NULL;
936 char *str; 936 char *str;
937 char *s; 937 char *s;
938 gboolean valid; 938 gboolean valid;
939 939
940 g_return_val_if_fail(msg != NULL, FALSE); 940 g_return_val_if_fail(msg != NULL, FALSE);
979 if (strchr(key, ':') != NULL) 979 if (strchr(key, ':') != NULL)
980 { 980 {
981 if (!g_ascii_strcasecmp(key, "X-IM-Username:")) 981 if (!g_ascii_strcasecmp(key, "X-IM-Username:"))
982 username = g_strdup(value); 982 username = g_strdup(value);
983 else if (!g_ascii_strcasecmp(key, "X-IM-Protocol:")) 983 else if (!g_ascii_strcasecmp(key, "X-IM-Protocol:"))
984 protocol_id = g_strdup(value); 984 protocol = g_strdup(value);
985 else if (!g_ascii_strcasecmp(key, "X-IM-Alias:")) 985 else if (!g_ascii_strcasecmp(key, "X-IM-Alias:"))
986 alias = g_strdup(value); 986 alias = g_strdup(value);
987 } 987 }
988 } 988 }
989 989
990 if (username != NULL && protocol_id != NULL) 990 if (username != NULL && protocol != NULL)
991 { 991 {
992 valid = TRUE; 992 valid = TRUE;
993 993
994 *ret_username = username; 994 *ret_username = username;
995 *ret_protocol = protocol_id; 995 *ret_protocol = protocol;
996 996
997 if (ret_alias != NULL) 997 if (ret_alias != NULL)
998 *ret_alias = alias; 998 *ret_alias = alias;
999 999
1000 /* Check for a compatible account. */ 1000 /* Check for a compatible account. */
1011 list = purple_connections_get_all(); 1011 list = purple_connections_get_all();
1012 1012
1013 for (l = list; l != NULL; l = l->next) 1013 for (l = list; l != NULL; l = l->next)
1014 { 1014 {
1015 PurpleConnection *gc; 1015 PurpleConnection *gc;
1016 PurpleProtocol *protocol = NULL; 1016 PurpleProtocol *proto = NULL;
1017 1017
1018 if (all_accounts) 1018 if (all_accounts)
1019 { 1019 {
1020 account = (PurpleAccount *)l->data; 1020 account = (PurpleAccount *)l->data;
1021 1021
1022 protocol = purple_protocols_find( 1022 proto = purple_protocols_find(
1023 purple_account_get_protocol_id(account)); 1023 purple_account_get_protocol_id(account));
1024 1024
1025 if (protocol == NULL) 1025 if (proto == NULL)
1026 { 1026 {
1027 account = NULL; 1027 account = NULL;
1028 1028
1029 continue; 1029 continue;
1030 } 1030 }
1032 else 1032 else
1033 { 1033 {
1034 gc = (PurpleConnection *)l->data; 1034 gc = (PurpleConnection *)l->data;
1035 account = purple_connection_get_account(gc); 1035 account = purple_connection_get_account(gc);
1036 1036
1037 protocol = purple_connection_get_protocol(gc); 1037 proto = purple_connection_get_protocol(gc);
1038 } 1038 }
1039 1039
1040 protoname = purple_protocol_class_list_icon(protocol, account, NULL); 1040 protoname = purple_protocol_class_list_icon(proto, account, NULL);
1041 1041
1042 if (!strcmp(protoname, protocol_id)) 1042 if (!strcmp(protoname, protocol))
1043 break; 1043 break;
1044 1044
1045 account = NULL; 1045 account = NULL;
1046 } 1046 }
1047 1047
1048 /* Special case for AIM and ICQ */ 1048 /* Special case for AIM and ICQ */
1049 if (account == NULL && (!strcmp(protocol_id, "aim") || 1049 if (account == NULL && (!strcmp(protocol, "aim") ||
1050 !strcmp(protocol_id, "icq"))) 1050 !strcmp(protocol, "icq")))
1051 { 1051 {
1052 for (l = list; l != NULL; l = l->next) 1052 for (l = list; l != NULL; l = l->next)
1053 { 1053 {
1054 PurpleConnection *gc; 1054 PurpleConnection *gc;
1055 PurpleProtocol *protocol = NULL; 1055 PurpleProtocol *proto = NULL;
1056 1056
1057 if (all_accounts) 1057 if (all_accounts)
1058 { 1058 {
1059 account = (PurpleAccount *)l->data; 1059 account = (PurpleAccount *)l->data;
1060 1060
1061 protocol = purple_protocols_find( 1061 proto = purple_protocols_find(
1062 purple_account_get_protocol_id(account)); 1062 purple_account_get_protocol_id(account));
1063 1063
1064 if (protocol == NULL) 1064 if (proto == NULL)
1065 { 1065 {
1066 account = NULL; 1066 account = NULL;
1067 1067
1068 continue; 1068 continue;
1069 } 1069 }
1071 else 1071 else
1072 { 1072 {
1073 gc = (PurpleConnection *)l->data; 1073 gc = (PurpleConnection *)l->data;
1074 account = purple_connection_get_account(gc); 1074 account = purple_connection_get_account(gc);
1075 1075
1076 protocol = purple_connection_get_protocol(gc); 1076 proto = purple_connection_get_protocol(gc);
1077 } 1077 }
1078 1078
1079 protoname = purple_protocol_class_list_icon(protocol, account, NULL); 1079 protoname = purple_protocol_class_list_icon(proto, account, NULL);
1080 1080
1081 if (!strcmp(protoname, "aim") || !strcmp(protoname, "icq")) 1081 if (!strcmp(protoname, "aim") || !strcmp(protoname, "icq"))
1082 break; 1082 break;
1083 1083
1084 account = NULL; 1084 account = NULL;
1091 else 1091 else
1092 { 1092 {
1093 valid = FALSE; 1093 valid = FALSE;
1094 1094
1095 g_free(username); 1095 g_free(username);
1096 g_free(protocol_id); 1096 g_free(protocol);
1097 g_free(alias); 1097 g_free(alias);
1098 } 1098 }
1099 1099
1100 g_free(str); 1100 g_free(str);
1101 1101

mercurial