Sat, 11 Aug 2007 17:57:19 +0000
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
the first argument, instead of a boolean value indicating that variadic
arguments follow. So now, you don't need to pass TRUE as the first argument
all the time. NULL can still be passed in the first argument (well, instead
of FALSE) to create a new empty message.
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1 | /* MySpaceIM Protocol Plugin |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3 | * \author Jeff Connelly |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
4 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
5 | * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im> |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
6 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
7 | * Based on Purple's "C Plugin HOWTO" hello world example. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
8 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
9 | * Code also drawn from mockprpl: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
10 | * http://snarfed.org/space/purple+mock+protocol+plugin |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
11 | * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org> |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
12 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
13 | * and some constructs also based on existing Purple plugins, which are: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
14 | * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net> |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
15 | * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
16 | * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com> |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
17 | * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
18 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
19 | * This program is free software; you can redistribute it and/or modify |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
20 | * it under the terms of the GNU General Public License as published by |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
21 | * the Free Software Foundation; either version 2 of the License, or |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
22 | * (at your option) any later version. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
23 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
24 | * This program is distributed in the hope that it will be useful, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
25 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
26 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
27 | * GNU General Public License for more details. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
28 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
29 | * You should have received a copy of the GNU General Public License |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
30 | * along with this program; if not, write to the Free Software |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
31 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
32 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
33 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
34 | #define PURPLE_PLUGIN |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
35 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
36 | #include "message.h" |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
37 | #include "persist.h" |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
38 | #include "myspace.h" |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
39 | |
|
18047
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
40 | |
|
18050
3ac6d13d25cd
Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18049
diff
changeset
|
41 | /* Loosely based on Miranda plugin by Scott Ellis, formatting.cpp, |
|
18047
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
42 | * https://server.scottellis.com.au/websvn/filedetails.php?repname=Miranda+Plugins&path=%2FMySpace%2Fformatting.cpp&rev=0&sc=0 */ |
|
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
43 | |
|
18050
3ac6d13d25cd
Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18049
diff
changeset
|
44 | /* The names in in emoticon_names (for <i n=whatever>) map to corresponding |
|
3ac6d13d25cd
Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18049
diff
changeset
|
45 | * entries in emoticon_symbols (for the ASCII representation of the emoticon). |
|
19147
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
46 | * |
|
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
47 | * Multiple emoticon symbols in Pidgin can map to one name. List the |
|
18050
3ac6d13d25cd
Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18049
diff
changeset
|
48 | * canonical form, as inserted by the "Smile!" dialog, first. For example, |
|
3ac6d13d25cd
Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18049
diff
changeset
|
49 | * :) comes before :-), because although both are recognized as 'happy', |
|
19148
50e50a9a564f
Convert password to lowercase using g_utf8_strdown(), better because
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19147
diff
changeset
|
50 | * the first is inserted by the smiley button. |
|
18050
3ac6d13d25cd
Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18049
diff
changeset
|
51 | * |
|
3ac6d13d25cd
Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18049
diff
changeset
|
52 | * Note that symbols are case-sensitive in Pidgin -- :-X is not :-x. */ |
|
19147
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
53 | |
|
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
54 | /* TODO: Use extra smileys not in default theme! Hylke is also working on |
|
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
55 | * some new smileys specific to MySpaceIM, use them too! */ |
|
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
56 | static struct MSIM_EMOTICON |
|
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
57 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
58 | gchar *name; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
59 | gchar *symbol; |
|
19147
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
60 | } msim_emoticons[] = { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
61 | { "bigsmile", ":D" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
62 | { "growl", ">:o" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
63 | { "growl", ">:O" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
64 | { "mad", ":-[" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
65 | { "scared", "=-O" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
66 | { "scared", "=-o" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
67 | { "tongue", ":P" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
68 | { "tongue", ":p" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
69 | { "devil", "O:-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
70 | { "devil", "o:-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
71 | { "happy", ":)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
72 | { "happy", ":-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
73 | { "happi", ":-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
74 | { "messed", "8-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
75 | { "sidefrown", ":-$" } , |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
76 | { "upset", ":-$" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
77 | { "frazzled", ":-/" } , |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
78 | { "heart", ";-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
79 | { "heart", ";)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
80 | { "nerd", "8-)"}, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
81 | { "sinister", ":-,D" } , |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
82 | { "wink", ";-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
83 | { "winc", ";-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
84 | { "geek", ":-X" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
85 | { "laugh", ":-D" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
86 | { "laugh", ":-d" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
87 | { "oops", ":'(" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
88 | { "smirk", "8-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
89 | { "worried", ":-(" } , |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
90 | { "worried", ":(" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
91 | { "googles", "8-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
92 | { "mohawk", ":-X" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
93 | { "pirate", ":-)" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
94 | { "straight", ":-!" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
95 | { "kiss", ":-*" }, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
96 | { NULL, NULL } |
|
19147
d10ca94b89d1
Use an array of structs instead of parallel arrays for the emoticon
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19146
diff
changeset
|
97 | }; |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
98 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
99 | /* Internal functions */ |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
100 | static void msim_send_zap(PurpleBlistNode *node, gpointer zap_num_ptr); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
101 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
102 | #ifdef MSIM_DEBUG_MSG |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
103 | static void print_hash_item(gpointer key, gpointer value, gpointer user_data); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
104 | #endif |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
105 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
106 | static int msim_send_really_raw(PurpleConnection *gc, const char *buf, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
107 | int total_bytes); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
108 | static gboolean msim_login_challenge(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
109 | static const gchar *msim_compute_login_response( |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
110 | const gchar nonce[2 * NONCE_SIZE], const gchar *email, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
111 | const gchar *password, guint *response_len); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
112 | static gboolean msim_send_bm(MsimSession *session, const gchar *who, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
113 | const gchar *text, int type); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
114 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
115 | static guint msim_point_to_purple_size(MsimSession *session, guint point); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
116 | static guint msim_purple_size_to_point(MsimSession *session, guint size); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
117 | static guint msim_height_to_point(MsimSession *session, guint height); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
118 | static guint msim_point_to_height(MsimSession *session, guint point); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
119 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
120 | static void msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
121 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
122 | static void msim_markup_tag_to_html(MsimSession *, xmlnode *root, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
123 | gchar **begin, gchar **end); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
124 | static void html_tag_to_msim_markup(MsimSession *, xmlnode *root, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
125 | gchar **begin, gchar **end); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
126 | static gchar *msim_convert_xml(MsimSession *, const gchar *raw, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
127 | MSIM_XMLNODE_CONVERT f); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
128 | static gchar *msim_convert_smileys_to_markup(gchar *before); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
129 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
130 | /* High-level msim markup <=> html conversion functions. */ |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
131 | static gchar *msim_markup_to_html(MsimSession *, const gchar *raw); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
132 | static gchar *html_to_msim_markup(MsimSession *, const gchar *raw); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
133 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
134 | static gboolean msim_incoming_bm_record_cv(MsimSession *session, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
135 | MsimMessage *msg); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
136 | static gboolean msim_incoming_bm(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
137 | static gboolean msim_incoming_status(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
138 | static gboolean msim_incoming_im(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
139 | static gboolean msim_incoming_zap(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
140 | static gboolean msim_incoming_action(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
141 | static gboolean msim_incoming_media(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
142 | static gboolean msim_incoming_unofficial_client(MsimSession *session, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
143 | MsimMessage *msg); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
144 | |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
145 | #ifdef MSIM_SEND_CLIENT_VERSION |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
146 | static gboolean msim_send_unofficial_client(MsimSession *session, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
147 | gchar *username); |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
148 | #endif |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
149 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
150 | static void msim_get_info_cb(MsimSession *session, MsimMessage *userinfo, gpointer data); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
151 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
152 | static void msim_set_status_code(MsimSession *session, guint code, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
153 | gchar *statstring); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
154 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
155 | static void msim_store_buddy_info_each(gpointer key, gpointer value, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
156 | gpointer user_data); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
157 | static gboolean msim_store_buddy_info(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
158 | static gboolean msim_process_server_info(MsimSession *session, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
159 | MsimMessage *msg); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
160 | static gboolean msim_web_challenge(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
161 | static gboolean msim_process_reply(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
162 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
163 | static gboolean msim_preprocess_incoming(MsimSession *session,MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
164 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
165 | #ifdef MSIM_USE_KEEPALIVE |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
166 | static gboolean msim_check_alive(gpointer data); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
167 | #endif |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
168 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
169 | static gboolean msim_we_are_logged_on(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
170 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
171 | static gboolean msim_process(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
172 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
173 | static MsimMessage *msim_do_postprocessing(MsimMessage *msg, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
174 | const gchar *uid_field_name, const gchar *uid_before, guint uid); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
175 | static void msim_postprocess_outgoing_cb(MsimSession *session, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
176 | MsimMessage *userinfo, gpointer data); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
177 | static gboolean msim_postprocess_outgoing(MsimSession *session, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
178 | MsimMessage *msg, const gchar *username, const gchar *uid_field_name, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
179 | const gchar *uid_before); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
180 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
181 | static gboolean msim_error(MsimSession *session, MsimMessage *msg); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
182 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
183 | static void msim_check_inbox_cb(MsimSession *session, MsimMessage *userinfo, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
184 | gpointer data); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
185 | static gboolean msim_check_inbox(gpointer data); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
186 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
187 | static void msim_input_cb(gpointer gc_uncasted, gint source, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
188 | PurpleInputCondition cond); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
189 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
190 | static guint msim_new_reply_callback(MsimSession *session, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
191 | MSIM_USER_LOOKUP_CB cb, gpointer data); |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
192 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
193 | static void msim_connect_cb(gpointer data, gint source, |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
194 | const gchar *error_message); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
195 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
196 | static gboolean msim_is_userid(const gchar *user); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
197 | static gboolean msim_is_email(const gchar *user); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
198 | |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
199 | static void msim_lookup_user(MsimSession *session, const gchar *user, |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
200 | MSIM_USER_LOOKUP_CB cb, gpointer data); |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
201 | |
|
19146
86baf2b1b688
Always use our own msim_round() instead of checking for C99's round and using
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19144
diff
changeset
|
202 | double msim_round(double round); |
|
18061
76e936ec829e
Implement round() if it is not available, using floor().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18059
diff
changeset
|
203 | |
|
76e936ec829e
Implement round() if it is not available, using floor().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18059
diff
changeset
|
204 | /* round is part of C99, but sometimes is unavailable before then. |
|
76e936ec829e
Implement round() if it is not available, using floor().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18059
diff
changeset
|
205 | * Based on http://forums.belution.com/en/cpp/000/050/13.shtml |
|
76e936ec829e
Implement round() if it is not available, using floor().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18059
diff
changeset
|
206 | */ |
|
19146
86baf2b1b688
Always use our own msim_round() instead of checking for C99's round and using
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19144
diff
changeset
|
207 | double msim_round(double value) |
|
18061
76e936ec829e
Implement round() if it is not available, using floor().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18059
diff
changeset
|
208 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
209 | if (value < 0) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
210 | return -(floor(-value + 0.5)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
211 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
212 | return floor( value + 0.5); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
213 | } |
|
18061
76e936ec829e
Implement round() if it is not available, using floor().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18059
diff
changeset
|
214 | } |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
215 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
216 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
217 | * Load the plugin. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
218 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
219 | gboolean |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
220 | msim_load(PurplePlugin *plugin) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
221 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
222 | /* If compiled to use RC4 from libpurple, check if it is really there. */ |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
223 | if (!purple_ciphers_find_cipher("rc4")) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
224 | purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
225 | purple_notify_error(plugin, _("Missing Cipher"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
226 | _("The RC4 cipher could not be found"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
227 | _("Upgrade " |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
228 | "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM " |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
229 | "plugin will not be loaded.")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
230 | return FALSE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
231 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
232 | return TRUE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
233 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
234 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
235 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
236 | * Get possible user status types. Based on mockprpl. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
237 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
238 | * @return GList of status types. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
239 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
240 | GList * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
241 | msim_status_types(PurpleAccount *acct) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
242 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
243 | GList *types; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
244 | PurpleStatusType *status; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
245 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
246 | purple_debug_info("myspace", "returning status types\n"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
247 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
248 | types = NULL; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
249 | |
|
18034
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
250 | /* Statuses are almost all the same. Define a macro to reduce code repetition. */ |
|
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
251 | #define _MSIM_ADD_NEW_STATUS(prim) status = \ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
252 | purple_status_type_new_with_attrs( \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
253 | prim, /* PurpleStatusPrimitive */ \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
254 | NULL, /* id - use default */ \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
255 | NULL, /* name - use default */ \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
256 | TRUE, /* savable */ \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
257 | TRUE, /* user_settable */ \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
258 | FALSE, /* not independent */ \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
259 | \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
260 | /* Attributes - each status can have a message. */ \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
261 | "message", \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
262 | _("Message"), \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
263 | purple_value_new(PURPLE_TYPE_STRING), \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
264 | NULL); \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
265 | \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
266 | \ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
267 | types = g_list_append(types, status) |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
268 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
269 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
270 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
271 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
272 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
273 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
274 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
275 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
276 | return types; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
277 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
278 | |
|
18053
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
279 | /** Zap someone. Callback from msim_blist_node_menu zap menu. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
280 | static void |
|
18053
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
281 | msim_send_zap(PurpleBlistNode *node, gpointer zap_num_ptr) |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
282 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
283 | PurpleBuddy *buddy; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
284 | PurpleConnection *gc; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
285 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
286 | gchar *username, *zap_string, *zap_text; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
287 | guint zap; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
288 | const gchar *zap_gerund[10]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
289 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
290 | if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
291 | /* Only know about buddies for now. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
292 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
293 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
294 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
295 | zap_gerund[0] = _("Zapping"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
296 | zap_gerund[1] = _("Whacking"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
297 | zap_gerund[2] = _("Torching"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
298 | zap_gerund[3] = _("Smooching"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
299 | zap_gerund[4] = _("Hugging"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
300 | zap_gerund[5] = _("Bslapping"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
301 | zap_gerund[6] = _("Goosing"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
302 | zap_gerund[7] = _("Hi-fiving"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
303 | zap_gerund[8] = _("Punking"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
304 | zap_gerund[9] = _("Raspberry'ing"); |
|
18053
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
305 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
306 | g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
307 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
308 | buddy = (PurpleBuddy *)node; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
309 | gc = purple_account_get_connection(buddy->account); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
310 | g_return_if_fail(gc != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
311 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
312 | session = (MsimSession *)(gc->proto_data); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
313 | g_return_if_fail(session != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
314 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
315 | username = buddy->name; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
316 | g_return_if_fail(username != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
317 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
318 | zap = GPOINTER_TO_INT(zap_num_ptr); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
319 | zap_string = g_strdup_printf("!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", zap); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
320 | zap_text = g_strdup_printf("*** %s! ***", zap_gerund[zap]); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
321 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
322 | serv_got_im(session->gc, username, zap_text, |
|
18053
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
323 | PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_SYSTEM, time(NULL)); |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
324 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
325 | if (!msim_send_bm(session, username, zap_string, MSIM_BM_ACTION)) { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
326 | purple_debug_info("msim_send_zap", "msim_send_bm failed: zapping %s with %s", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
327 | username, zap_string); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
328 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
329 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
330 | g_free(zap_string); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
331 | g_free(zap_text); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
332 | return; |
|
18053
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
333 | } |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
334 | |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
335 | |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
336 | /** Return menu, if any, for a buddy list node. */ |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
337 | GList * |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
338 | msim_blist_node_menu(PurpleBlistNode *node) |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
339 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
340 | GList *menu, *zap_menu; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
341 | PurpleMenuAction *act; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
342 | const gchar *zap_names[10]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
343 | guint i; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
344 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
345 | if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
346 | /* Only know about buddies for now. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
347 | return NULL; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
348 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
349 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
350 | /* Names from official client. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
351 | zap_names[0] = _("zap"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
352 | zap_names[1] = _("whack"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
353 | zap_names[2] = _("torch"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
354 | zap_names[3] = _("smooch"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
355 | zap_names[4] = _("hug"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
356 | zap_names[5] = _("bslap"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
357 | zap_names[6] = _("goose"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
358 | zap_names[7] = _("hi-five"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
359 | zap_names[8] = _("punk'd"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
360 | zap_names[9] = _("raspberry"); |
|
18053
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
361 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
362 | menu = zap_menu = NULL; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
363 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
364 | /* TODO: move to / command, or better yet new API */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
365 | for (i = 0; i < sizeof(zap_names) / sizeof(zap_names[0]); ++i) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
366 | act = purple_menu_action_new(zap_names[i], PURPLE_CALLBACK(msim_send_zap), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
367 | GUINT_TO_POINTER(i), NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
368 | zap_menu = g_list_append(zap_menu, act); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
369 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
370 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
371 | act = purple_menu_action_new(_("Zap"), NULL, NULL, zap_menu); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
372 | menu = g_list_append(menu, act); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
373 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
374 | return menu; |
|
18053
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
375 | } |
|
e0e7522cda38
Allow sending zaps through buddy list menu.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18052
diff
changeset
|
376 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
377 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
378 | * Return the icon name for a buddy and account. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
379 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
380 | * @param acct The account to find the icon for, or NULL for protocol icon. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
381 | * @param buddy The buddy to find the icon for, or NULL for the account icon. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
382 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
383 | * @return The base icon name string. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
384 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
385 | const gchar * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
386 | msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
387 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
388 | /* Use a MySpace icon submitted by hbons at |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
389 | * http://developer.pidgin.im/wiki/MySpaceIM. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
390 | return "myspace"; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
391 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
392 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
393 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
394 | * Replace 'old' with 'new' in 'str'. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
395 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
396 | * @param str The original string. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
397 | * @param old The substring of 'str' to replace. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
398 | * @param new The replacement for 'old' within 'str'. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
399 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
400 | * @return A _new_ string, based on 'str', with 'old' replaced |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
401 | * by 'new'. Must be g_free()'d by caller. |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
402 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
403 | * This string replace method is based on |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
404 | * http://mail.gnome.org/archives/gtk-app-devel-list/2000-July/msg00201.html |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
405 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
406 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
407 | gchar * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
408 | str_replace(const gchar *str, const gchar *old, const gchar *new) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
409 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
410 | gchar **items; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
411 | gchar *ret; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
412 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
413 | items = g_strsplit(str, old, -1); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
414 | ret = g_strjoinv(new, items); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
415 | g_free(items); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
416 | return ret; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
417 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
418 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
419 | #ifdef MSIM_DEBUG_MSG |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
420 | static void |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
421 | print_hash_item(gpointer key, gpointer value, gpointer user_data) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
422 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
423 | purple_debug_info("msim", "%s=%s\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
424 | key ? (gchar *)key : "(NULL)", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
425 | value ? (gchar *)value : "(NULL)"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
426 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
427 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
428 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
429 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
430 | * Send raw data (given as a NUL-terminated string) to the server. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
431 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
432 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
433 | * @param msg The raw data to send, in a NUL-terminated string. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
434 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
435 | * @return TRUE if succeeded, FALSE if not. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
436 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
437 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
438 | gboolean |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
439 | msim_send_raw(MsimSession *session, const gchar *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
440 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
441 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
442 | g_return_val_if_fail(msg != NULL, FALSE); |
|
18034
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
443 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
444 | purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
445 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
446 | return msim_send_really_raw(session->gc, msg, strlen(msg)) == |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
447 | strlen(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
448 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
449 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
450 | /** Send raw data to the server, possibly with embedded NULs. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
451 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
452 | * Used in prpl_info struct, so that plugins can have the most possible |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
453 | * control of what is sent over the connection. Inside this prpl, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
454 | * msim_send_raw() is used, since it sends NUL-terminated strings (easier). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
455 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
456 | * @param gc PurpleConnection |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
457 | * @param buf Buffer to send |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
458 | * @param total_bytes Size of buffer to send |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
459 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
460 | * @return Bytes successfully sent, or -1 on error. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
461 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
462 | static int |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
463 | msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
464 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
465 | int total_bytes_sent; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
466 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
467 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
468 | g_return_val_if_fail(gc != NULL, -1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
469 | g_return_val_if_fail(buf != NULL, -1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
470 | g_return_val_if_fail(total_bytes >= 0, -1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
471 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
472 | session = (MsimSession *)(gc->proto_data); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
473 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
474 | g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
475 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
476 | /* Loop until all data is sent, or a failure occurs. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
477 | total_bytes_sent = 0; |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
478 | do { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
479 | int bytes_sent; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
480 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
481 | bytes_sent = send(session->fd, buf + total_bytes_sent, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
482 | total_bytes - total_bytes_sent, 0); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
483 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
484 | if (bytes_sent < 0) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
485 | purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
486 | buf, g_strerror(errno)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
487 | return total_bytes_sent; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
488 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
489 | total_bytes_sent += bytes_sent; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
490 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
491 | } while(total_bytes_sent < total_bytes); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
492 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
493 | return total_bytes_sent; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
494 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
495 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
496 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
497 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
498 | * Start logging in to the MSIM servers. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
499 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
500 | * @param acct Account information to use to login. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
501 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
502 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
503 | msim_login(PurpleAccount *acct) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
504 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
505 | PurpleConnection *gc; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
506 | const gchar *host; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
507 | int port; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
508 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
509 | g_return_if_fail(acct != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
510 | g_return_if_fail(acct->username != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
511 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
512 | purple_debug_info("msim", "logging in %s\n", acct->username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
513 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
514 | gc = purple_account_get_connection(acct); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
515 | gc->proto_data = msim_session_new(acct); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
516 | gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
517 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
518 | /* Passwords are limited in length. */ |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
519 | if (strlen(acct->password) > MSIM_MAX_PASSWORD_LENGTH) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
520 | gchar *str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
521 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
522 | str = g_strdup_printf( |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
523 | _("Sorry, passwords over %d characters in length (yours is " |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
524 | "%d) are not supported by the MySpaceIM plugin."), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
525 | MSIM_MAX_PASSWORD_LENGTH, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
526 | (int)strlen(acct->password)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
527 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
528 | /* Notify an error message also, because this is important! */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
529 | purple_notify_error(acct, g_strdup(_("MySpaceIM Error")), str, NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
530 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
531 | purple_connection_error(gc, str); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
532 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
533 | g_free(str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
534 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
535 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
536 | /* 1. connect to server */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
537 | purple_connection_update_progress(gc, _("Connecting"), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
538 | 0, /* which connection step this is */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
539 | 4); /* total number of steps */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
540 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
541 | host = purple_account_get_string(acct, "server", MSIM_SERVER); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
542 | port = purple_account_get_int(acct, "port", MSIM_PORT); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
543 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
544 | /* From purple.sf.net/api: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
545 | * """Note that this function name can be misleading--although it is called |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
546 | * "proxy connect," it is used for establishing any outgoing TCP connection, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
547 | * whether through a proxy or not.""" */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
548 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
549 | /* Calls msim_connect_cb when connected. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
550 | if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
551 | /* TODO: try other ports if in auto mode, then save |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
552 | * working port and try that first next time. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
553 | purple_connection_error(gc, _("Couldn't create socket")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
554 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
555 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
556 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
557 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
558 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
559 | * Process a login challenge, sending a response. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
560 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
561 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
562 | * @param msg Login challenge message. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
563 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
564 | * @return TRUE if successful, FALSE if not |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
565 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
566 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
567 | msim_login_challenge(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
568 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
569 | PurpleAccount *account; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
570 | const gchar *response; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
571 | guint response_len; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
572 | gchar *nc; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
573 | gsize nc_len; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
574 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
575 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
576 | g_return_val_if_fail(msg != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
577 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
578 | g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
579 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
580 | account = session->account; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
581 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
582 | g_return_val_if_fail(account != NULL, FALSE); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
583 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
584 | purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
585 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
586 | purple_debug_info("msim", "nc is %d bytes, decoded\n", nc_len); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
587 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
588 | if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
589 | purple_debug_info("msim", "bad nc length: %x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
590 | purple_connection_error(session->gc, _("Unexpected challenge length from server")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
591 | return FALSE; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
592 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
593 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
594 | purple_connection_update_progress(session->gc, _("Logging in"), 2, 4); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
595 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
596 | response_len = 0; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
597 | response = msim_compute_login_response(nc, account->username, account->password, &response_len); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
598 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
599 | g_free(nc); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
600 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
601 | return msim_send(session, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
602 | "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
603 | /* This is actually user's email address. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
604 | "username", MSIM_TYPE_STRING, g_strdup(account->username), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
605 | /* GString and gchar * response will be freed in msim_msg_free() in msim_send(). */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
606 | "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
607 | "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
608 | "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
609 | "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH), |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
610 | "reconn", MSIM_TYPE_INTEGER, 0, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
611 | "status", MSIM_TYPE_INTEGER, 100, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
612 | "id", MSIM_TYPE_INTEGER, 1, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
613 | NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
614 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
615 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
616 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
617 | * Compute the base64'd login challenge response based on username, password, nonce, and IPs. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
618 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
619 | * @param nonce The base64 encoded nonce ('nc') field from the server. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
620 | * @param email User's email address (used as login name). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
621 | * @param password User's cleartext password. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
622 | * @param response_len Will be written with response length. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
623 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
624 | * @return Binary login challenge response, ready to send to the server. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
625 | * Must be g_free()'d when finished. NULL if error. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
626 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
627 | static const gchar * |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
628 | msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
629 | const gchar *email, const gchar *password, guint *response_len) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
630 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
631 | PurpleCipherContext *key_context; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
632 | PurpleCipher *sha1; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
633 | PurpleCipherContext *rc4; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
634 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
635 | guchar hash_pw[HASH_SIZE]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
636 | guchar key[HASH_SIZE]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
637 | gchar *password_utf16le, *password_utf8_lc; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
638 | guchar *data; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
639 | guchar *data_out; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
640 | size_t data_len, data_out_len; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
641 | gsize conv_bytes_read, conv_bytes_written; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
642 | GError *conv_error; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
643 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
644 | int i; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
645 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
646 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
647 | g_return_val_if_fail(nonce != NULL, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
648 | g_return_val_if_fail(email != NULL, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
649 | g_return_val_if_fail(password != NULL, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
650 | g_return_val_if_fail(response_len != NULL, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
651 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
652 | /* Convert password to lowercase (required for passwords containing |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
653 | * uppercase characters). MySpace passwords are lowercase, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
654 | * see ticket #2066. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
655 | password_utf8_lc = g_utf8_strdown(password, -1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
656 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
657 | /* Convert ASCII password to UTF16 little endian */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
658 | purple_debug_info("msim", "converting password to UTF-16LE\n"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
659 | conv_error = NULL; |
|
19148
50e50a9a564f
Convert password to lowercase using g_utf8_strdown(), better because
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19147
diff
changeset
|
660 | password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8", |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
661 | &conv_bytes_read, &conv_bytes_written, &conv_error); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
662 | g_free(password_utf8_lc); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
663 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
664 | g_return_val_if_fail(conv_bytes_read == strlen(password), NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
665 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
666 | if (conv_error != NULL) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
667 | purple_debug_error("msim", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
668 | "g_convert password UTF8->UTF16LE failed: %s", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
669 | conv_error->message); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
670 | g_error_free(conv_error); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
671 | return NULL; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
672 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
673 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
674 | /* Compute password hash */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
675 | purple_cipher_digest_region("sha1", (guchar *)password_utf16le, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
676 | conv_bytes_written, sizeof(hash_pw), hash_pw, NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
677 | g_free(password_utf16le); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
678 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
679 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
680 | purple_debug_info("msim", "pwhash = "); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
681 | for (i = 0; i < sizeof(hash_pw); i++) |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
682 | purple_debug_info("msim", "%.2x ", hash_pw[i]); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
683 | purple_debug_info("msim", "\n"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
684 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
685 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
686 | /* key = sha1(sha1(pw) + nonce2) */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
687 | sha1 = purple_ciphers_find_cipher("sha1"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
688 | key_context = purple_cipher_context_new(sha1, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
689 | purple_cipher_context_append(key_context, hash_pw, HASH_SIZE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
690 | purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
691 | purple_cipher_context_digest(key_context, sizeof(key), key, NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
692 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
693 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
694 | purple_debug_info("msim", "key = "); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
695 | for (i = 0; i < sizeof(key); i++) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
696 | purple_debug_info("msim", "%.2x ", key[i]); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
697 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
698 | purple_debug_info("msim", "\n"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
699 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
700 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
701 | rc4 = purple_cipher_context_new_by_name("rc4", NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
702 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
703 | /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
704 | * but only first 0x10 used for the RC4 key. */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
705 | purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
706 | purple_cipher_context_set_key(rc4, key); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
707 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
708 | /* TODO: obtain IPs of network interfaces */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
709 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
710 | /* rc4 encrypt: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
711 | * nonce1+email+IP list */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
712 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
713 | data_len = NONCE_SIZE + strlen(email) + MSIM_LOGIN_IP_LIST_LEN; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
714 | data = g_new0(guchar, data_len); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
715 | memcpy(data, nonce, NONCE_SIZE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
716 | memcpy(data + NONCE_SIZE, email, strlen(email)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
717 | memcpy(data + NONCE_SIZE + strlen(email), MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
718 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
719 | data_out = g_new0(guchar, data_len); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
720 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
721 | purple_cipher_context_encrypt(rc4, (const guchar *)data, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
722 | data_len, data_out, &data_out_len); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
723 | purple_cipher_context_destroy(rc4); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
724 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
725 | g_assert(data_out_len == data_len); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
726 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
727 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
728 | purple_debug_info("msim", "response=<%s>\n", data_out); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
729 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
730 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
731 | *response_len = data_out_len; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
732 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
733 | return (const gchar *)data_out; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
734 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
735 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
736 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
737 | * Schedule an IM to be sent once the user ID is looked up. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
738 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
739 | * @param gc Connection. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
740 | * @param who A user id, email, or username to send the message to. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
741 | * @param message Instant message text to send. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
742 | * @param flags Flags. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
743 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
744 | * @return 1 if successful or postponed, -1 if failed |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
745 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
746 | * Allows sending to a user by username, email address, or userid. If |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
747 | * a username or email address is given, the userid must be looked up. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
748 | * This function does that by calling msim_postprocess_outgoing(). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
749 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
750 | int |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
751 | msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
752 | PurpleMessageFlags flags) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
753 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
754 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
755 | gchar *message_msim; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
756 | int rc; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
757 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
758 | g_return_val_if_fail(gc != NULL, -1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
759 | g_return_val_if_fail(who != NULL, -1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
760 | g_return_val_if_fail(message != NULL, -1); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
761 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
762 | /* 'flags' has many options, not used here. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
763 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
764 | session = (MsimSession *)gc->proto_data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
765 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
766 | g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
767 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
768 | message_msim = html_to_msim_markup(session, message); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
769 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
770 | if (msim_send_bm(session, who, message_msim, MSIM_BM_INSTANT)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
771 | /* Return 1 to have Purple show this IM as being sent, 0 to not. I always |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
772 | * return 1 even if the message could not be sent, since I don't know if |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
773 | * it has failed yet--because the IM is only sent after the userid is |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
774 | * retrieved from the server (which happens after this function returns). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
775 | */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
776 | /* TODO: maybe if message is delayed, don't echo to conv window, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
777 | * but do echo it to conv window manually once it is actually |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
778 | * sent? Would be complicated. */ |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
779 | rc = 1; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
780 | } else { |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
781 | rc = -1; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
782 | } |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
783 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
784 | g_free(message_msim); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
785 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
786 | /* |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
787 | * In MySpace, you login with your email address, but don't talk to other |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
788 | * users using their email address. So there is currently an asymmetry in the |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
789 | * IM windows when using this plugin: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
790 | * |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
791 | * you@example.com: hello |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
792 | * some_other_user: what's going on? |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
793 | * you@example.com: just coding a prpl |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
794 | * |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
795 | * TODO: Make the sent IM's appear as from the user's username, instead of |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
796 | * their email address. Purple uses the login (in MSIM, the email)--change this. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
797 | */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
798 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
799 | return rc; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
800 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
801 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
802 | /** Send a buddy message of a given type. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
803 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
804 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
805 | * @param who Username to send message to. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
806 | * @param text Message text to send. Not freed; will be copied. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
807 | * @param type A MSIM_BM_* constant. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
808 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
809 | * @return TRUE if success, FALSE if fail. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
810 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
811 | * Buddy messages ('bm') include instant messages, action messages, status messages, etc. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
812 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
813 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
814 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
815 | msim_send_bm(MsimSession *session, const gchar *who, const gchar *text, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
816 | int type) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
817 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
818 | gboolean rc; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
819 | MsimMessage *msg; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
820 | const gchar *from_username; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
821 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
822 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
823 | g_return_val_if_fail(who != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
824 | g_return_val_if_fail(text != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
825 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
826 | from_username = session->account->username; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
827 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
828 | g_return_val_if_fail(from_username != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
829 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
830 | purple_debug_info("msim", "sending %d message from %s to %s: %s\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
831 | type, from_username, who, text); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
832 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
833 | msg = msim_msg_new( |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
834 | "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type), |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
835 | "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
836 | /* 't' will be inserted here */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
837 | "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
838 | "msg", MSIM_TYPE_STRING, g_strdup(text), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
839 | NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
840 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
841 | rc = msim_postprocess_outgoing(session, msg, who, "t", "cv"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
842 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
843 | msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
844 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
845 | return rc; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
846 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
847 | |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
848 | /* Indexes of this array + 1 map HTML font size to scale of normal font size. * |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
849 | * Based on _point_sizes from libpurple/gtkimhtml.c |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
850 | * 1 2 3 4 5 6 7 */ |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
851 | static gdouble _font_scale[] = { .85, .95, 1, 1.2, 1.44, 1.728, 2.0736 }; |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
852 | |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
853 | #define MAX_FONT_SIZE 7 /* Purple maximum font size */ |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
854 | #define POINTS_PER_INCH 72 /* How many pt's in an inch */ |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
855 | |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
856 | /** Convert typographical font point size to HTML font size. |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
857 | * Based on libpurple/gtkimhtml.c */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
858 | static guint |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
859 | msim_point_to_purple_size(MsimSession *session, guint point) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
860 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
861 | guint size, this_point, base; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
862 | gdouble scale; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
863 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
864 | base = purple_account_get_int(session->account, "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
865 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
866 | for (size = 0; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
867 | size < sizeof(_font_scale) / sizeof(_font_scale[0]); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
868 | ++size) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
869 | scale = _font_scale[CLAMP(size, 1, MAX_FONT_SIZE) - 1]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
870 | this_point = (guint)msim_round(scale * base); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
871 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
872 | if (this_point >= point) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
873 | purple_debug_info("msim", "msim_point_to_purple_size: %d pt -> size=%d\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
874 | point, size); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
875 | return size; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
876 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
877 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
878 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
879 | /* No HTML font size was this big; return largest possible. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
880 | return this_point; |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
881 | } |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
882 | |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
883 | /** Convert HTML font size to point size. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
884 | static guint |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
885 | msim_purple_size_to_point(MsimSession *session, guint size) |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
886 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
887 | gdouble scale; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
888 | guint point; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
889 | guint base; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
890 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
891 | scale = _font_scale[CLAMP(size, 1, MAX_FONT_SIZE) - 1]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
892 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
893 | base = purple_account_get_int(session->account, "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
894 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
895 | point = (guint)msim_round(scale * base); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
896 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
897 | purple_debug_info("msim", "msim_purple_size_to_point: size=%d -> %d pt\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
898 | size, point); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
899 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
900 | return point; |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
901 | } |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
902 | |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
903 | /** Convert a msim markup font pixel height to the more usual point size, for incoming messages. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
904 | static guint |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
905 | msim_height_to_point(MsimSession *session, guint height) |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
906 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
907 | guint dpi; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
908 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
909 | dpi = purple_account_get_int(session->account, "port", MSIM_DEFAULT_DPI); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
910 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
911 | return (guint)msim_round((POINTS_PER_INCH * 1. / dpi) * height); |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
912 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
913 | /* See also: libpurple/protocols/bonjour/jabber.c |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
914 | * _font_size_ichat_to_purple */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
915 | } |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
916 | |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
917 | /** Convert point size to msim pixel height font size specification, for outgoing messages. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
918 | static guint |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
919 | msim_point_to_height(MsimSession *session, guint point) |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
920 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
921 | guint dpi; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
922 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
923 | dpi = purple_account_get_int(session->account, "port", MSIM_DEFAULT_DPI); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
924 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
925 | return (guint)msim_round((dpi * 1. / POINTS_PER_INCH) * point); |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
926 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
927 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
928 | /** Convert the msim markup <f> (font) tag into HTML. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
929 | static void |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
930 | msim_markup_f_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
931 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
932 | const gchar *face, *height_str, *decor_str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
933 | GString *gs_end, *gs_begin; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
934 | guint decor, height; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
935 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
936 | face = xmlnode_get_attrib(root, "f"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
937 | height_str = xmlnode_get_attrib(root, "h"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
938 | decor_str = xmlnode_get_attrib(root, "s"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
939 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
940 | if (height_str) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
941 | height = atol(height_str); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
942 | } else { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
943 | height = 12; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
944 | } |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
945 | |
|
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
946 | if (decor_str) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
947 | decor = atol(decor_str); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
948 | } else { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
949 | decor = 0; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
950 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
951 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
952 | gs_begin = g_string_new(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
953 | /* TODO: get font size working */ |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
954 | if (height && !face) { |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
955 | g_string_printf(gs_begin, "<font size='%d'>", |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
956 | msim_point_to_purple_size(session, msim_height_to_point(session, height))); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
957 | } else if (height && face) { |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
958 | g_string_printf(gs_begin, "<font face='%s' size='%d'>", face, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
959 | msim_point_to_purple_size(session, msim_height_to_point(session, height))); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
960 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
961 | g_string_printf(gs_begin, "<font>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
962 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
963 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
964 | /* No support for font-size CSS? */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
965 | /* g_string_printf(gs_begin, "<span style='font-family: %s; font-size: %dpt'>", face, |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
966 | msim_height_to_point(height)); */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
967 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
968 | gs_end = g_string_new("</font>"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
969 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
970 | if (decor & MSIM_TEXT_BOLD) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
971 | g_string_append(gs_begin, "<b>"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
972 | g_string_prepend(gs_end, "</b>"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
973 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
974 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
975 | if (decor & MSIM_TEXT_ITALIC) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
976 | g_string_append(gs_begin, "<i>"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
977 | g_string_append(gs_end, "</i>"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
978 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
979 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
980 | if (decor & MSIM_TEXT_UNDERLINE) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
981 | g_string_append(gs_begin, "<u>"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
982 | g_string_append(gs_end, "</u>"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
983 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
984 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
985 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
986 | *begin = gs_begin->str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
987 | *end = gs_end->str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
988 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
989 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
990 | /** Convert a msim markup color to a color suitable for libpurple. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
991 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
992 | * @param msim Either a color name, or an rgb(x,y,z) code. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
993 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
994 | * @return A new string, either a color name or #rrggbb code. Must g_free(). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
995 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
996 | static char * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
997 | msim_color_to_purple(const char *msim) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
998 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
999 | guint red, green, blue; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1000 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1001 | if (!msim) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1002 | return g_strdup("black"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1003 | } |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1004 | |
|
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1005 | if (sscanf(msim, "rgb(%d,%d,%d)", &red, &green, &blue) != 3) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1006 | /* Color name. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1007 | return g_strdup(msim); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1008 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1009 | /* TODO: rgba (alpha). */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1010 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1011 | return g_strdup_printf("#%.2x%.2x%.2x", red, green, blue); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1012 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1013 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1014 | /** Convert the msim markup <p> (paragraph) tag into HTML. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1015 | static void |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1016 | msim_markup_p_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1017 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1018 | /* Just pass through unchanged. |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1019 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1020 | * Note: attributes currently aren't passed, if there are any. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1021 | *begin = g_strdup("<p>"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1022 | *end = g_strdup("</p>"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1023 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1024 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1025 | /** Convert the msim markup <c> tag (text color) into HTML. TODO: Test */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1026 | static void |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1027 | msim_markup_c_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1028 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1029 | const gchar *color; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1030 | gchar *purple_color; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1031 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1032 | color = xmlnode_get_attrib(root, "v"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1033 | if (!color) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1034 | purple_debug_info("msim", "msim_markup_c_to_html: <c> tag w/o v attr"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1035 | *begin = g_strdup(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1036 | *end = g_strdup(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1037 | /* TODO: log as unrecognized */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1038 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1039 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1040 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1041 | purple_color = msim_color_to_purple(color); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1042 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1043 | *begin = g_strdup_printf("<font color='%s'>", purple_color); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1044 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1045 | g_free(purple_color); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1046 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1047 | /* *begin = g_strdup_printf("<span style='color: %s'>", color); */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1048 | *end = g_strdup("</font>"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1049 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1050 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1051 | /** Convert the msim markup <b> tag (background color) into HTML. TODO: Test */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1052 | static void |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1053 | msim_markup_b_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1054 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1055 | const gchar *color; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1056 | gchar *purple_color; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1057 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1058 | color = xmlnode_get_attrib(root, "v"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1059 | if (!color) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1060 | *begin = g_strdup(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1061 | *end = g_strdup(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1062 | purple_debug_info("msim", "msim_markup_b_to_html: <b> w/o v attr"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1063 | /* TODO: log as unrecognized. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1064 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1065 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1066 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1067 | purple_color = msim_color_to_purple(color); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1068 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1069 | /* TODO: find out how to set background color. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1070 | *begin = g_strdup_printf("<span style='background-color: %s'>", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1071 | purple_color); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1072 | g_free(purple_color); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1073 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1074 | *end = g_strdup("</p>"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1075 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1076 | |
|
18046
bb35d08adf0b
Support emoticons on incoming messages, approximating MySpaceIM's smileys
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18045
diff
changeset
|
1077 | /** Convert the msim markup <i> tag (emoticon image) into HTML. */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1078 | static void |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1079 | msim_markup_i_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1080 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1081 | const gchar *name; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1082 | guint i; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1083 | struct MSIM_EMOTICON *emote; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1084 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1085 | name = xmlnode_get_attrib(root, "n"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1086 | if (!name) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1087 | purple_debug_info("msim", "msim_markup_i_to_html: <i> w/o n"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1088 | *begin = g_strdup(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1089 | *end = g_strdup(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1090 | /* TODO: log as unrecognized */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1091 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1092 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1093 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1094 | for (i = 0; (emote = &msim_emoticons[i]) && emote->name != NULL; ++i) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1095 | gchar *name; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1096 | gchar *symbol; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1097 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1098 | name = emote->name; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1099 | symbol = emote->symbol; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1100 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1101 | if (!strcmp(name, name)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1102 | *begin = g_strdup(symbol); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1103 | *end = g_strdup(""); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1104 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1105 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1106 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1107 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1108 | *begin = g_strdup(name); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1109 | *end = g_strdup(""); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1110 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1111 | |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1112 | /** Convert an individual msim markup tag to HTML. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1113 | static void |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1114 | msim_markup_tag_to_html(MsimSession *session, xmlnode *root, gchar **begin, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1115 | gchar **end) |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1116 | { |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1117 | if (!strcmp(root->name, "f")) { |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1118 | msim_markup_f_to_html(session, root, begin, end); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1119 | } else if (!strcmp(root->name, "p")) { |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1120 | msim_markup_p_to_html(session, root, begin, end); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1121 | } else if (!strcmp(root->name, "c")) { |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1122 | msim_markup_c_to_html(session, root, begin, end); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1123 | } else if (!strcmp(root->name, "b")) { |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1124 | msim_markup_b_to_html(session, root, begin, end); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1125 | } else if (!strcmp(root->name, "i")) { |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1126 | msim_markup_i_to_html(session, root, begin, end); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1127 | } else { |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1128 | purple_debug_info("msim", "msim_markup_tag_to_html: " |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
1129 | "unknown tag name=%s, ignoring", |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1130 | (root && root->name) ? root->name : "(NULL)"); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1131 | *begin = g_strdup(""); |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1132 | *end = g_strdup(""); |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1133 | } |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1134 | } |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1135 | |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1136 | /** Convert an individual HTML tag to msim markup. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1137 | static void |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1138 | html_tag_to_msim_markup(MsimSession *session, xmlnode *root, gchar **begin, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1139 | gchar **end) |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1140 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1141 | /* TODO: Coalesce nested tags into one <f> tag! |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1142 | * Currently, the 's' value will be overwritten when b/i/u is nested |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1143 | * within another one, and only the inner-most formatting will be |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1144 | * applied to the text. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1145 | if (!strcmp(root->name, "root")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1146 | *begin = g_strdup(""); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1147 | *end = g_strdup(""); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1148 | } else if (!strcmp(root->name, "b")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1149 | *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_BOLD); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1150 | *end = g_strdup("</f>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1151 | } else if (!strcmp(root->name, "i")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1152 | *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_ITALIC); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1153 | *end = g_strdup("</f>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1154 | } else if (!strcmp(root->name, "u")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1155 | *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_UNDERLINE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1156 | *end = g_strdup("</f>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1157 | } else if (!strcmp(root->name, "font")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1158 | const gchar *size; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1159 | const gchar *face; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1160 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1161 | size = xmlnode_get_attrib(root, "size"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1162 | face = xmlnode_get_attrib(root, "face"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1163 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1164 | if (face && size) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1165 | *begin = g_strdup_printf("<f f='%s' h='%d'>", face, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1166 | msim_point_to_height(session, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1167 | msim_purple_size_to_point(session, atoi(size)))); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1168 | } else if (face) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1169 | *begin = g_strdup_printf("<f f='%s'>", face); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1170 | } else if (size) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1171 | *begin = g_strdup_printf("<f h='%d'>", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1172 | msim_point_to_height(session, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1173 | msim_purple_size_to_point(session, atoi(size)))); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1174 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1175 | *begin = g_strdup("<f>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1176 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1177 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1178 | *end = g_strdup("</f>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1179 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1180 | /* TODO: color (bg uses <body>), emoticons */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1181 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1182 | *begin = g_strdup_printf("[%s]", root->name); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1183 | *end = g_strdup_printf("[/%s]", root->name); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1184 | } |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1185 | } |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1186 | |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1187 | /** Convert an xmlnode of msim markup or HTML to an HTML string or msim markup. |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1188 | * |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1189 | * @param f Function to convert tags. |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1190 | * |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1191 | * @return An HTML string. Caller frees. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1192 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1193 | static gchar * |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1194 | msim_convert_xmlnode(MsimSession *session, xmlnode *root, MSIM_XMLNODE_CONVERT f) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1195 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1196 | xmlnode *node; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1197 | gchar *begin, *inner, *end; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1198 | GString *final; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1199 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1200 | if (!root || !root->name) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1201 | return g_strdup(""); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1202 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1203 | |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1204 | purple_debug_info("msim", "msim_convert_xmlnode: got root=%s\n", |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1205 | root->name); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1206 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1207 | begin = inner = end = NULL; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1208 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1209 | final = g_string_new(""); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1210 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1211 | f(session, root, &begin, &end); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1212 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1213 | g_string_append(final, begin); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1214 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1215 | /* Loop over all child nodes. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1216 | for (node = root->child; node != NULL; node = node->next) { |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1217 | switch (node->type) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1218 | case XMLNODE_TYPE_ATTRIB: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1219 | /* Attributes handled above. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1220 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1221 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1222 | case XMLNODE_TYPE_TAG: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1223 | /* A tag or tag with attributes. Recursively descend. */ |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1224 | inner = msim_convert_xmlnode(session, node, f); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1225 | g_return_val_if_fail(inner != NULL, NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1226 | |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
1227 | purple_debug_info("msim", " ** node name=%s\n", |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1228 | (node && node->name) ? node->name : "(NULL)"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1229 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1230 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1231 | case XMLNODE_TYPE_DATA: |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1232 | /* Literal text. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1233 | inner = g_new0(char, node->data_sz + 1); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1234 | strncpy(inner, node->data, node->data_sz); |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
1235 | inner[node->data_sz] = 0; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1236 | |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
1237 | purple_debug_info("msim", " ** node data=%s\n", |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1238 | inner ? inner : "(NULL)"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1239 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1240 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1241 | default: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1242 | purple_debug_info("msim", |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1243 | "msim_convert_xmlnode: strange node\n"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1244 | inner = g_strdup(""); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1245 | } |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
1246 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1247 | if (inner) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1248 | g_string_append(final, inner); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1249 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1250 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1251 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1252 | /* TODO: Note that msim counts each piece of text enclosed by <f> as |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1253 | * a paragraph and will display each on its own line. You actually have |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1254 | * to _nest_ <f> tags to intersperse different text in one paragraph! |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1255 | * Comment out this line below to see. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1256 | g_string_append(final, end); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1257 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1258 | purple_debug_info("msim", "msim_markup_xmlnode_to_gtkhtml: RETURNING %s\n", |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
1259 | (final && final->str) ? final->str : "(NULL)"); |
|
18036
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
1260 | |
|
532aa29d4dda
Support font sizes in sending and receiving formatted text.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18035
diff
changeset
|
1261 | return final->str; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1262 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1263 | |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1264 | /** Convert XML to something based on MSIM_XMLNODE_CONVERT. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1265 | static gchar * |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1266 | msim_convert_xml(MsimSession *session, const gchar *raw, MSIM_XMLNODE_CONVERT f) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1267 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1268 | xmlnode *root; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1269 | gchar *str; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1270 | gchar *enclosed_raw; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1271 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1272 | g_return_val_if_fail(raw != NULL, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1273 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1274 | /* Enclose text in one root tag, to try to make it valid XML for parsing. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1275 | enclosed_raw = g_strconcat("<root>", raw, "</root>", NULL); |
|
18048
c8f29e1916c2
Add account option to send emoticons, defaulting to off since can't currently
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18047
diff
changeset
|
1276 | |
|
c8f29e1916c2
Add account option to send emoticons, defaulting to off since can't currently
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18047
diff
changeset
|
1277 | root = xmlnode_from_str(enclosed_raw, -1); |
|
c8f29e1916c2
Add account option to send emoticons, defaulting to off since can't currently
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18047
diff
changeset
|
1278 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1279 | if (!root) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1280 | purple_debug_info("msim", "msim_markup_to_html: couldn't parse " |
|
18048
c8f29e1916c2
Add account option to send emoticons, defaulting to off since can't currently
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18047
diff
changeset
|
1281 | "%s as XML, returning raw: %s\n", enclosed_raw, raw); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1282 | /* TODO: msim_unrecognized */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1283 | g_free(enclosed_raw); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1284 | return g_strdup(raw); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1285 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1286 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1287 | g_free(enclosed_raw); |
|
18048
c8f29e1916c2
Add account option to send emoticons, defaulting to off since can't currently
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18047
diff
changeset
|
1288 | |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1289 | str = msim_convert_xmlnode(session, root, f); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1290 | g_return_val_if_fail(str != NULL, NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1291 | purple_debug_info("msim", "msim_markup_to_html: returning %s\n", str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1292 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1293 | xmlnode_free(root); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1294 | |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1295 | return str; |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1296 | } |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1297 | |
|
18047
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1298 | /** Convert plaintext smileys to <i> markup tags. |
|
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1299 | * |
|
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1300 | * @param before Original text with ASCII smileys. Will be freed. |
|
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1301 | * @return A new string with <i> tags, if applicable. Must be g_free()'d. |
|
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1302 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1303 | static gchar * |
|
18047
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1304 | msim_convert_smileys_to_markup(gchar *before) |
|
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1305 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1306 | gchar *old, *new, *replacement; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1307 | guint i; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1308 | struct MSIM_EMOTICON *emote; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1309 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1310 | old = before; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1311 | new = NULL; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1312 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1313 | for (i = 0; (emote = &msim_emoticons[i]) && emote->name != NULL; ++i) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1314 | gchar *name, *symbol; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1315 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1316 | name = emote->name; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1317 | symbol = emote->symbol; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1318 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1319 | replacement = g_strdup_printf("<i n=\"%s\"/>", name); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1320 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1321 | purple_debug_info("msim", "msim_convert_smileys_to_markup: %s->%s\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1322 | symbol ? symbol : "(NULL)", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1323 | replacement ? replacement : "(NULL)"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1324 | new = str_replace(old, symbol, replacement); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1325 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1326 | g_free(replacement); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1327 | g_free(old); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1328 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1329 | old = new; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1330 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1331 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1332 | return new; |
|
18047
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1333 | } |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1334 | |
|
18047
c58fc8a8e378
Add support for sending emoticons.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18046
diff
changeset
|
1335 | |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1336 | /** High-level function to convert MySpaceIM markup to Purple (HTML) markup. |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1337 | * |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1338 | * @return Purple markup string, must be g_free()'d. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1339 | static gchar * |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1340 | msim_markup_to_html(MsimSession *session, const gchar *raw) |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1341 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1342 | return msim_convert_xml(session, raw, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1343 | (MSIM_XMLNODE_CONVERT)(msim_markup_tag_to_html)); |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1344 | } |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1345 | |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1346 | /** High-level function to convert Purple (HTML) to MySpaceIM markup. |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1347 | * |
|
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1348 | * @return HTML markup string, must be g_free()'d. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1349 | static gchar * |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1350 | html_to_msim_markup(MsimSession *session, const gchar *raw) |
|
18028
85ed2582be94
Support sending some formatted text in instant messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18026
diff
changeset
|
1351 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1352 | gchar *markup; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1353 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1354 | markup = msim_convert_xml(session, raw, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1355 | (MSIM_XMLNODE_CONVERT)(html_tag_to_msim_markup)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1356 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1357 | if (purple_account_get_bool(session->account, "emoticons", TRUE)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1358 | /* Frees markup and allocates a new one. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1359 | markup = msim_convert_smileys_to_markup(markup); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1360 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1361 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1362 | return markup; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1363 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1364 | |
|
18045
7e4b117d740b
Show official client build in buddy profiles.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18044
diff
changeset
|
1365 | /** Record the client version in the buddy list, from an incoming message. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1366 | static gboolean |
|
18045
7e4b117d740b
Show official client build in buddy profiles.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18044
diff
changeset
|
1367 | msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg) |
|
7e4b117d740b
Show official client build in buddy profiles.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18044
diff
changeset
|
1368 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1369 | gchar *username, *cv; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1370 | gboolean ret; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1371 | PurpleBuddy *buddy; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1372 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1373 | username = msim_msg_get_string(msg, "_username"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1374 | cv = msim_msg_get_string(msg, "cv"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1375 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1376 | g_return_val_if_fail(username != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1377 | g_return_val_if_fail(cv != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1378 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1379 | buddy = purple_find_buddy(session->account, username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1380 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1381 | if (buddy) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1382 | purple_blist_node_set_int(&buddy->node, "client_cv", atol(cv)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1383 | ret = TRUE; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1384 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1385 | ret = FALSE; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1386 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1387 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1388 | g_free(username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1389 | g_free(cv); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1390 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1391 | return ret; |
|
18045
7e4b117d740b
Show official client build in buddy profiles.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18044
diff
changeset
|
1392 | } |
|
7e4b117d740b
Show official client build in buddy profiles.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18044
diff
changeset
|
1393 | |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1394 | /** Handle an incoming buddy message. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1395 | static gboolean |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1396 | msim_incoming_bm(MsimSession *session, MsimMessage *msg) |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1397 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1398 | guint bm; |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1399 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1400 | bm = msim_msg_get_integer(msg, "bm"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1401 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1402 | msim_incoming_bm_record_cv(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1403 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1404 | switch (bm) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1405 | case MSIM_BM_STATUS: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1406 | return msim_incoming_status(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1407 | case MSIM_BM_INSTANT: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1408 | return msim_incoming_im(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1409 | case MSIM_BM_ACTION: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1410 | return msim_incoming_action(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1411 | case MSIM_BM_MEDIA: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1412 | return msim_incoming_media(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1413 | case MSIM_BM_UNOFFICIAL_CLIENT: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1414 | return msim_incoming_unofficial_client(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1415 | default: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1416 | /* Not really an IM, but show it for informational |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1417 | * purposes during development. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1418 | return msim_incoming_im(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1419 | } |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1420 | } |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1421 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1422 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1423 | * Handle an incoming instant message. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1424 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1425 | * @param session The session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1426 | * @param msg Message from the server, containing 'f' (userid from) and 'msg'. |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1427 | * Should also contain username in _username from preprocessing. |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1428 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1429 | * @return TRUE if successful. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1430 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1431 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1432 | msim_incoming_im(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1433 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1434 | gchar *username, *msg_msim_markup, *msg_purple_markup; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1435 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1436 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1437 | g_return_val_if_fail(msg != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1438 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1439 | username = msim_msg_get_string(msg, "_username"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1440 | g_return_val_if_fail(username != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1441 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1442 | msg_msim_markup = msim_msg_get_string(msg, "msg"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1443 | g_return_val_if_fail(msg_msim_markup != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1444 | |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
1445 | msg_purple_markup = msim_markup_to_html(session, msg_msim_markup); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1446 | g_free(msg_msim_markup); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1447 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1448 | serv_got_im(session->gc, username, msg_purple_markup, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1449 | PURPLE_MESSAGE_RECV, time(NULL)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1450 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1451 | g_free(username); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1452 | g_free(msg_purple_markup); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1453 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1454 | return TRUE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1455 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1456 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1457 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1458 | * Process unrecognized information. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1459 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1460 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1461 | * @param msg An MsimMessage that was unrecognized, or NULL. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1462 | * @param note Information on what was unrecognized, or NULL. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1463 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1464 | static void |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1465 | msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1466 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1467 | /* TODO: Some more context, outwardly equivalent to a backtrace, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1468 | * for helping figure out what this msg is for. What was going on? |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1469 | * But not too much information so that a user |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1470 | * posting this dump reveals confidential information. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1471 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1472 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1473 | /* TODO: dump unknown msgs to file, so user can send them to me |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1474 | * if they wish, to help add support for new messages (inspired |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1475 | * by Alexandr Shutko, who maintains OSCAR protocol documentation). */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1476 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1477 | purple_debug_info("msim", "Unrecognized data on account for %s\n", |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1478 | session->account->username ? session->account->username |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1479 | : "(NULL)"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1480 | if (note) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1481 | purple_debug_info("msim", "(Note: %s)\n", note); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1482 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1483 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1484 | if (msg) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1485 | msim_msg_dump("Unrecognized message dump: %s\n", msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1486 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1487 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1488 | |
|
18052
49c29865fde5
Support incoming zaps.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18051
diff
changeset
|
1489 | /** Process an incoming zap. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1490 | static gboolean |
|
18052
49c29865fde5
Support incoming zaps.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18051
diff
changeset
|
1491 | msim_incoming_zap(MsimSession *session, MsimMessage *msg) |
|
49c29865fde5
Support incoming zaps.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18051
diff
changeset
|
1492 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1493 | gchar *msg_text, *username, *zap_text; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1494 | gint zap; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1495 | const gchar *zap_past_tense[10]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1496 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1497 | zap_past_tense[0] = _("zapped"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1498 | zap_past_tense[1] = _("whacked"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1499 | zap_past_tense[2] = _("torched"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1500 | zap_past_tense[3] = _("smooched"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1501 | zap_past_tense[4] = _("hugged"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1502 | zap_past_tense[5] = _("bslapped"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1503 | zap_past_tense[6] = _("goosed"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1504 | zap_past_tense[7] = _("hi-fived"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1505 | zap_past_tense[8] = _("punk'd"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1506 | zap_past_tense[9] = _("raspberried"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1507 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1508 | msg_text = msim_msg_get_string(msg, "msg"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1509 | username = msim_msg_get_string(msg, "_username"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1510 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1511 | g_return_val_if_fail(msg_text != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1512 | g_return_val_if_fail(username != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1513 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1514 | g_return_val_if_fail(sscanf(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", &zap) == 1, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1515 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1516 | zap = CLAMP(zap, 0, sizeof(zap_past_tense) / sizeof(zap_past_tense[0])); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1517 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1518 | zap_text = g_strdup_printf(_("*** You have been %s! ***"), zap_past_tense[zap]); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1519 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1520 | serv_got_im(session->gc, username, zap_text, |
|
18052
49c29865fde5
Support incoming zaps.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18051
diff
changeset
|
1521 | PURPLE_MESSAGE_RECV | PURPLE_MESSAGE_SYSTEM, time(NULL)); |
|
49c29865fde5
Support incoming zaps.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18051
diff
changeset
|
1522 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1523 | g_free(zap_text); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1524 | g_free(msg_text); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1525 | g_free(username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1526 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1527 | return TRUE; |
|
18052
49c29865fde5
Support incoming zaps.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18051
diff
changeset
|
1528 | } |
|
49c29865fde5
Support incoming zaps.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18051
diff
changeset
|
1529 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1530 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1531 | * Handle an incoming action message. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1532 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1533 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1534 | * @param msg |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1535 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1536 | * @return TRUE if successful. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1537 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1538 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1539 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1540 | msim_incoming_action(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1541 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1542 | gchar *msg_text, *username; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1543 | gboolean rc; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1544 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1545 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1546 | g_return_val_if_fail(msg != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1547 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1548 | msg_text = msim_msg_get_string(msg, "msg"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1549 | g_return_val_if_fail(msg_text != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1550 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1551 | username = msim_msg_get_string(msg, "_username"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1552 | g_return_val_if_fail(username != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1553 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1554 | purple_debug_info("msim", "msim_incoming_action: action <%s> from <%d>\n", |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1555 | msg_text, username); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1556 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1557 | if (strcmp(msg_text, "%typing%") == 0) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1558 | /* TODO: find out if msim repeatedly sends typing messages, so we can |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1559 | * give it a timeout. Right now, there does seem to be an inordinately |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1560 | * amount of time between typing stopped-typing notifications. */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1561 | serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1562 | rc = TRUE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1563 | } else if (strcmp(msg_text, "%stoptyping%") == 0) { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1564 | serv_got_typing_stopped(session->gc, username); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1565 | rc = TRUE; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1566 | } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1567 | rc = msim_incoming_zap(session, msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1568 | } else { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1569 | msim_unrecognized(session, msg, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1570 | "got to msim_incoming_action but unrecognized value for 'msg'"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1571 | rc = FALSE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1572 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1573 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1574 | g_free(msg_text); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1575 | g_free(username); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1576 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1577 | return rc; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1578 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1579 | |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1580 | /* Process an incoming media (buddy icon) message. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1581 | static gboolean |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1582 | msim_incoming_media(MsimSession *session, MsimMessage *msg) |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1583 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1584 | gchar *username, *text; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1585 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1586 | username = msim_msg_get_string(msg, "_username"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1587 | text = msim_msg_get_string(msg, "msg"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1588 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1589 | g_return_val_if_fail(username != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1590 | g_return_val_if_fail(text != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1591 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1592 | purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1593 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1594 | /* Media messages are sent when the user opens a window to someone. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1595 | * Tell libpurple they started typing and stopped typing, to inform the Psychic |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1596 | * Mode plugin so it too can open a window to the user. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1597 | serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1598 | serv_got_typing_stopped(session->gc, username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1599 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1600 | g_free(username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1601 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1602 | return TRUE; |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1603 | } |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1604 | |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1605 | /* Process an incoming "unofficial client" message. The plugin for |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1606 | * Miranda IM sends this message with the plugin information. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1607 | static gboolean |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1608 | msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg) |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1609 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1610 | PurpleBuddy *buddy; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1611 | gchar *username, *client_info; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1612 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1613 | username = msim_msg_get_string(msg, "_username"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1614 | client_info = msim_msg_get_string(msg, "msg"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1615 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1616 | g_return_val_if_fail(username != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1617 | g_return_val_if_fail(client_info != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1618 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1619 | purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1620 | username, client_info); |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1621 | |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1622 | buddy = purple_find_buddy(session->account, username); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1623 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1624 | g_return_val_if_fail(buddy != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1625 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1626 | purple_blist_node_remove_setting(&buddy->node, "client"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1627 | purple_blist_node_set_string(&buddy->node, "client", client_info); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1628 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1629 | g_free(username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1630 | /* Do not free client_info - the blist now owns it. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1631 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1632 | return TRUE; |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1633 | } |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1634 | |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1635 | |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
1636 | #ifdef MSIM_SEND_CLIENT_VERSION |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1637 | /** Send our client version to another unofficial client that understands it. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1638 | static gboolean |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1639 | msim_send_unofficial_client(MsimSession *session, gchar *username) |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1640 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1641 | gchar *our_info; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1642 | gboolean ret; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1643 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1644 | our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1645 | PURPLE_MAJOR_VERSION, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1646 | PURPLE_MINOR_VERSION, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1647 | PURPLE_MICRO_VERSION, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1648 | MSIM_PRPL_VERSION_STRING); |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1649 | |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1650 | ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT); |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1651 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1652 | return ret; |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1653 | } |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
1654 | #endif |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1655 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1656 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1657 | * Handle when our user starts or stops typing to another user. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1658 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1659 | * @param gc |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1660 | * @param name The buddy name to which our user is typing to |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1661 | * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1662 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1663 | * @return 0 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1664 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1665 | unsigned int |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1666 | msim_send_typing(PurpleConnection *gc, const gchar *name, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1667 | PurpleTypingState state) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1668 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1669 | const gchar *typing_str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1670 | MsimSession *session; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1671 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1672 | g_return_val_if_fail(gc != NULL, 0); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1673 | g_return_val_if_fail(name != NULL, 0); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1674 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1675 | session = (MsimSession *)gc->proto_data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1676 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1677 | g_return_val_if_fail(MSIM_SESSION_VALID(session), 0); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1678 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1679 | switch (state) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1680 | case PURPLE_TYPING: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1681 | typing_str = "%typing%"; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1682 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1683 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1684 | case PURPLE_TYPED: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1685 | case PURPLE_NOT_TYPING: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1686 | default: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1687 | typing_str = "%stoptyping%"; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1688 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1689 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1690 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1691 | purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1692 | msim_send_bm(session, name, typing_str, MSIM_BM_ACTION); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1693 | return 0; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1694 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1695 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1696 | /** Callback for msim_get_info(), for when user info is received. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1697 | static void |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1698 | msim_get_info_cb(MsimSession *session, MsimMessage *user_info_msg, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1699 | gpointer data) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1700 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1701 | GHashTable *body; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1702 | gchar *body_str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1703 | MsimMessage *msg; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1704 | gchar *user; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1705 | PurpleNotifyUserInfo *user_info; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1706 | PurpleBuddy *buddy; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1707 | const gchar *str, *str2; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1708 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1709 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1710 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1711 | /* Get user{name,id} from msim_get_info, passed as an MsimMessage for |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1712 | orthogonality. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1713 | msg = (MsimMessage *)data; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1714 | g_return_if_fail(msg != NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1715 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1716 | user = msim_msg_get_string(msg, "user"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1717 | if (!user) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1718 | purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1719 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1720 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1721 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1722 | msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1723 | purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", user); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1724 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1725 | body_str = msim_msg_get_string(user_info_msg, "body"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1726 | g_return_if_fail(body_str != NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1727 | body = msim_parse_body(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1728 | g_free(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1729 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1730 | buddy = purple_find_buddy(session->account, user); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1731 | /* Note: don't assume buddy is non-NULL; will be if lookup random user |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1732 | * not on blist. */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1733 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1734 | user_info = purple_notify_user_info_new(); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1735 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1736 | /* Identification */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1737 | purple_notify_user_info_add_pair(user_info, _("User"), user); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1738 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1739 | /* note: g_hash_table_lookup does not create a new string! */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1740 | str = g_hash_table_lookup(body, "UserID"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1741 | if (str) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1742 | purple_notify_user_info_add_pair(user_info, _("User ID"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1743 | g_strdup(str)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1744 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1745 | /* a/s/l...the vitals */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1746 | str = g_hash_table_lookup(body, "Age"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1747 | if (str) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1748 | purple_notify_user_info_add_pair(user_info, _("Age"), g_strdup(str)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1749 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1750 | str = g_hash_table_lookup(body, "Gender"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1751 | if (str) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1752 | purple_notify_user_info_add_pair(user_info, _("Gender"), g_strdup(str)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1753 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1754 | str = g_hash_table_lookup(body, "Location"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1755 | if (str) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1756 | purple_notify_user_info_add_pair(user_info, _("Location"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1757 | g_strdup(str)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1758 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1759 | /* Other information */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1760 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1761 | if (buddy) { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1762 | /* Headline comes from buddy status messages */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1763 | str = purple_blist_node_get_string(&buddy->node, "Headline"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1764 | if (str) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1765 | purple_notify_user_info_add_pair(user_info, "Headline", str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1766 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1767 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1768 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1769 | str = g_hash_table_lookup(body, "BandName"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1770 | str2 = g_hash_table_lookup(body, "SongName"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1771 | if (str || str2) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1772 | purple_notify_user_info_add_pair(user_info, _("Song"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1773 | g_strdup_printf("%s - %s", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1774 | str ? str : "Unknown Artist", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1775 | str2 ? str2 : "Unknown Song")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1776 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1777 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1778 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1779 | /* Total friends only available if looked up by uid, not username. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1780 | str = g_hash_table_lookup(body, "TotalFriends"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1781 | if (str) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1782 | purple_notify_user_info_add_pair(user_info, _("Total Friends"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1783 | g_strdup(str)); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1784 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1785 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1786 | if (buddy) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1787 | gint cv; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1788 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1789 | str = purple_blist_node_get_string(&buddy->node, "client"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1790 | cv = purple_blist_node_get_int(&buddy->node, "client_cv"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1791 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1792 | if (str) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1793 | purple_notify_user_info_add_pair(user_info, _("Client Version"), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1794 | g_strdup_printf("%s (build %d)", str, cv)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1795 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1796 | } |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
1797 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1798 | purple_notify_userinfo(session->gc, user, user_info, NULL, NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1799 | purple_debug_info("msim", "msim_get_info_cb: username=%s\n", user); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1800 | //purple_notify_user_info_destroy(user_info); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1801 | /* Do not free username, since it will be used by user_info. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1802 | |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
1803 | g_hash_table_destroy(body); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1804 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1805 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1806 | /** Retrieve a user's profile. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1807 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1808 | msim_get_info(PurpleConnection *gc, const gchar *user) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1809 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1810 | PurpleBuddy *buddy; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1811 | MsimSession *session; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1812 | guint uid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1813 | gchar *user_to_lookup; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1814 | MsimMessage *user_msg; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1815 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1816 | g_return_if_fail(gc != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1817 | g_return_if_fail(user != NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1818 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1819 | session = (MsimSession *)gc->proto_data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1820 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1821 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1822 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1823 | /* Obtain uid of buddy. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1824 | buddy = purple_find_buddy(session->account, user); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1825 | if (buddy) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1826 | uid = purple_blist_node_get_int(&buddy->node, "UserID"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1827 | if (!uid) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1828 | PurpleNotifyUserInfo *user_info; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1829 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1830 | user_info = purple_notify_user_info_new(); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1831 | purple_notify_user_info_add_pair(user_info, NULL, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1832 | _("This buddy appears to not have a userid stored in the buddy list, can't look up. Is the user really on the buddy list?")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1833 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1834 | purple_notify_userinfo(session->gc, user, user_info, NULL, NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1835 | purple_notify_user_info_destroy(user_info); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1836 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1837 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1838 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1839 | user_to_lookup = g_strdup_printf("%d", uid); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1840 | } else { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1841 | /* Looking up buddy not on blist. Lookup by whatever user entered. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1842 | user_to_lookup = g_strdup(user); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1843 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1844 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1845 | /* Pass the username to msim_get_info_cb(), because since we lookup |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1846 | * by userid, the userinfo message will only contain the uid (not |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1847 | * the username). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1848 | */ |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
1849 | user_msg = msim_msg_new( |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1850 | "user", MSIM_TYPE_STRING, g_strdup(user), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1851 | NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1852 | purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", user); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1853 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1854 | msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1855 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1856 | g_free(user_to_lookup); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1857 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1858 | |
|
18035
2c401f444456
Remove MSIM_FAKE_SELF_ONLINE option, since our own status is actually updated
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18034
diff
changeset
|
1859 | /** Set your status - callback for when user manually sets it. */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1860 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1861 | msim_set_status(PurpleAccount *account, PurpleStatus *status) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1862 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1863 | PurpleStatusType *type; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1864 | MsimSession *session; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1865 | guint status_code; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1866 | const gchar *statstring; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1867 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1868 | session = (MsimSession *)account->gc->proto_data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1869 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1870 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1871 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1872 | type = purple_status_get_type(status); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1873 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
1874 | switch (purple_status_type_get_primitive(type)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1875 | case PURPLE_STATUS_AVAILABLE: |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1876 | purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1877 | MSIM_STATUS_CODE_ONLINE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1878 | status_code = MSIM_STATUS_CODE_ONLINE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1879 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1880 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1881 | case PURPLE_STATUS_INVISIBLE: |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1882 | purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1883 | MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1884 | status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1885 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1886 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1887 | case PURPLE_STATUS_AWAY: |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1888 | purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1889 | MSIM_STATUS_CODE_AWAY); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1890 | status_code = MSIM_STATUS_CODE_AWAY; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1891 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1892 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1893 | default: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1894 | purple_debug_info("msim", "msim_set_status: unknown " |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1895 | "status interpreting as online"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1896 | status_code = MSIM_STATUS_CODE_ONLINE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1897 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1898 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1899 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1900 | statstring = purple_status_get_attr_string(status, "message"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1901 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1902 | if (!statstring) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1903 | statstring = g_strdup(""); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1904 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1905 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1906 | msim_set_status_code(session, status_code, g_strdup(statstring)); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1907 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1908 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1909 | /** Go idle. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1910 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1911 | msim_set_idle(PurpleConnection *gc, int time) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1912 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1913 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1914 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1915 | g_return_if_fail(gc != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1916 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1917 | session = (MsimSession *)gc->proto_data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1918 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1919 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1920 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1921 | if (time == 0) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1922 | /* Going back from idle. In msim, idle is mutually exclusive |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1923 | * from the other states (you can only be away or idle, but not |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1924 | * both, for example), so by going non-idle I go online. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1925 | */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1926 | /* TODO: find out how to keep old status string? */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1927 | msim_set_status_code(session, MSIM_STATUS_CODE_ONLINE, g_strdup("")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1928 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1929 | /* msim doesn't support idle time, so just go idle */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1930 | msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, g_strdup("")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1931 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1932 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1933 | |
|
18034
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
1934 | /** Set status using an MSIM_STATUS_CODE_* value. |
|
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
1935 | * @param status_code An MSIM_STATUS_CODE_* value. |
|
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
1936 | * @param statstring Status string, must be a dynamic string (will be freed by msim_send). |
|
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
1937 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
1938 | static void |
|
18034
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
1939 | msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1940 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1941 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1942 | g_return_if_fail(statstring != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1943 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1944 | purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1945 | status_code, statstring); |
|
18034
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
1946 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1947 | if (!msim_send(session, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1948 | "status", MSIM_TYPE_INTEGER, status_code, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1949 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
18034
e1b21d1e5c7a
Allow setting status string messages. Known bug: custom status messages always
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18032
diff
changeset
|
1950 | "statstring", MSIM_TYPE_STRING, statstring, |
|
18029
48e7b6d97f1f
Fix compile warnings on Unix (missing sentinel and time_t to int typecast).
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18028
diff
changeset
|
1951 | "locstring", MSIM_TYPE_STRING, g_strdup(""), |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1952 | NULL)) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1953 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1954 | purple_debug_info("msim", "msim_set_status: failed to set status"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1955 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1956 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1957 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1958 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1959 | /** After a uid is resolved to username, tag it with the username and submit for processing. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1960 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1961 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1962 | * @param userinfo Response messsage to resolving request. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1963 | * @param data MsimMessage *, the message to attach information to. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1964 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1965 | static void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1966 | msim_incoming_resolved(MsimSession *session, MsimMessage *userinfo, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1967 | gpointer data) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1968 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1969 | gchar *body_str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1970 | GHashTable *body; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1971 | gchar *username; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1972 | MsimMessage *msg; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1973 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1974 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1975 | g_return_if_fail(userinfo != NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1976 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1977 | body_str = msim_msg_get_string(userinfo, "body"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1978 | g_return_if_fail(body_str != NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1979 | body = msim_parse_body(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1980 | g_return_if_fail(body != NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1981 | g_free(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1982 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1983 | username = g_hash_table_lookup(body, "UserName"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1984 | g_return_if_fail(username != NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1985 | |
|
18055
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
1986 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1987 | msg = (MsimMessage *)data; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1988 | g_return_if_fail(msg != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1989 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1990 | /* TODO: more elegant solution than below. attach whole message? */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1991 | /* Special elements name beginning with '_', we'll use internally within the |
|
18055
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
1992 | * program (did not come directly from the wire). */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1993 | msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
|
18055
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
1994 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
1995 | /* TODO: attach more useful information, like ImageURL */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1996 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1997 | msim_process(session, msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1998 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
1999 | /* TODO: Free copy cloned from msim_preprocess_incoming(). */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2000 | //XXX msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2001 | g_hash_table_destroy(body); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2002 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2003 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2004 | #if 0 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2005 | /* Lookup a username by userid, from buddy list. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2006 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2007 | * @param wanted_uid |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2008 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2009 | * @return Username of wanted_uid, if on blist, or NULL. Static string. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2010 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2011 | * XXX WARNING: UNKNOWN MEMORY CORRUPTION HERE! |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2012 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2013 | static const gchar * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2014 | msim_uid2username_from_blist(MsimSession *session, guint wanted_uid) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2015 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2016 | GSList *buddies, *cur; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2017 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2018 | buddies = purple_find_buddies(session->account, NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2019 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2020 | if (!buddies) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2021 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2022 | purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2023 | return NULL; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2024 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2025 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2026 | for (cur = buddies; cur != NULL; cur = g_slist_next(cur)) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2027 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2028 | PurpleBuddy *buddy; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2029 | //PurpleBlistNode *node; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2030 | guint uid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2031 | const gchar *name; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2032 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2033 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2034 | /* See finch/gnthistory.c */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2035 | buddy = cur->data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2036 | //node = cur->data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2037 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2038 | uid = purple_blist_node_get_int(&buddy->node, "UserID"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2039 | //uid = purple_blist_node_get_int(node, "UserID"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2040 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2041 | /* name = buddy->name; */ /* crash */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2042 | /* name = PURPLE_BLIST_NODE_NAME(&buddy->node); */ /* crash */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2043 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2044 | /* XXX Is this right? Memory corruption here somehow. Happens only |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2045 | * when return one of these values. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2046 | name = purple_buddy_get_name(buddy); /* crash */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2047 | //name = purple_buddy_get_name((PurpleBuddy *)node); /* crash */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2048 | /* return name; */ /* crash (with above) */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2049 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2050 | /* name = NULL; */ /* no crash */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2051 | /* return NULL; */ /* no crash (with anything) */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2052 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2053 | /* crash = |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2054 | *** glibc detected *** pidgin: realloc(): invalid pointer: 0x0000000000d2aec0 *** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2055 | ======= Backtrace: ========= |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2056 | /lib/libc.so.6(__libc_realloc+0x323)[0x2b7bfc012e03] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2057 | /usr/lib/libglib-2.0.so.0(g_realloc+0x31)[0x2b7bfba79a41] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2058 | /usr/lib/libgtk-x11-2.0.so.0(gtk_tree_path_append_index+0x3a)[0x2b7bfa110d5a] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2059 | /usr/lib/libgtk-x11-2.0.so.0[0x2b7bfa1287dc] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2060 | /usr/lib/libgtk-x11-2.0.so.0[0x2b7bfa128e56] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2061 | /usr/lib/libgtk-x11-2.0.so.0[0x2b7bfa128efd] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2062 | /usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x1b4)[0x2b7bfba72c84] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2063 | /usr/lib/libglib-2.0.so.0[0x2b7bfba75acd] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2064 | /usr/lib/libglib-2.0.so.0(g_main_loop_run+0x1ca)[0x2b7bfba75dda] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2065 | /usr/lib/libgtk-x11-2.0.so.0(gtk_main+0xa3)[0x2b7bfa0475f3] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2066 | pidgin(main+0x8be)[0x46b45e] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2067 | /lib/libc.so.6(__libc_start_main+0xf4)[0x2b7bfbfbf0c4] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2068 | pidgin(gtk_widget_grab_focus+0x39)[0x429ab9] |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2069 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2070 | or: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2071 | *** glibc detected *** /usr/local/bin/pidgin: malloc(): memory corruption (fast): 0x0000000000c10076 *** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2072 | (gdb) bt |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2073 | #0 0x00002b4074ecd47b in raise () from /lib/libc.so.6 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2074 | #1 0x00002b4074eceda0 in abort () from /lib/libc.so.6 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2075 | #2 0x00002b4074f0453b in __fsetlocking () from /lib/libc.so.6 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2076 | #3 0x00002b4074f0c810 in free () from /lib/libc.so.6 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2077 | #4 0x00002b4074f0d6dd in malloc () from /lib/libc.so.6 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2078 | #5 0x00002b4074974b5b in g_malloc () from /usr/lib/libglib-2.0.so.0 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2079 | #6 0x00002b40749868bf in g_strdup () from /usr/lib/libglib-2.0.so.0 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2080 | #7 0x00002b407810969f in msim_parse ( |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2081 | raw=0xd2a910 "\\bm\\100\\f\\3656574\\msg\\|s|0|ss|Offline") |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2082 | at message.c:648 |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2083 | #8 0x00002b407810889c in msim_input_cb (gc_uncasted=0xcf92c0, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2084 | source=<value optimized out>, cond=<value optimized out>) at myspace.c:1478 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2085 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2086 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2087 | Why is it crashing in msim_parse()'s g_strdup()? |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2088 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2089 | purple_debug_info("msim", "msim_uid2username_from_blist: %s's uid=%d (want %d)\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2090 | name, uid, wanted_uid); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2091 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2092 | if (uid == wanted_uid) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2093 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2094 | gchar *ret; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2095 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2096 | ret = g_strdup(name); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2097 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2098 | g_slist_free(buddies); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2099 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2100 | return ret; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2101 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2102 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2103 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2104 | g_slist_free(buddies); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2105 | return NULL; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2106 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2107 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2108 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2109 | /** Preprocess incoming messages, resolving as needed, calling msim_process() when ready to process. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2110 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2111 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2112 | * @param msg MsimMessage *, freed by caller. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2113 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2114 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2115 | msim_preprocess_incoming(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2116 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2117 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2118 | g_return_val_if_fail(msg != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2119 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2120 | if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2121 | guint uid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2122 | const gchar *username; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2123 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2124 | /* 'f' = userid message is from, in buddy messages */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2125 | uid = msim_msg_get_integer(msg, "f"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2126 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2127 | /* TODO: Make caching work. Currently it is commented out because |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2128 | * it crashes for unknown reasons, memory realloc error. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2129 | #if 0 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2130 | username = msim_uid2username_from_blist(session, uid); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2131 | #else |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2132 | username = NULL; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2133 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2134 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2135 | if (username) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2136 | /* Know username already, use it. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2137 | purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2138 | username); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2139 | msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2140 | return msim_process(session, msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2141 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2142 | } else { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2143 | gchar *from; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2144 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2145 | /* Send lookup request. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2146 | /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2147 | purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2148 | from = msim_msg_get_string(msg, "f"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2149 | msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2150 | g_free(from); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2151 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2152 | /* indeterminate */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2153 | return TRUE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2154 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2155 | } else { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2156 | /* Nothing to resolve - send directly to processing. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2157 | return msim_process(session, msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2158 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2159 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2160 | |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2161 | #ifdef MSIM_USE_KEEPALIVE |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2162 | /** Check if the connection is still alive, based on last communication. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2163 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2164 | msim_check_alive(gpointer data) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2165 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2166 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2167 | time_t delta; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2168 | gchar *errmsg; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2169 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2170 | session = (MsimSession *)data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2171 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2172 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2173 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2174 | delta = time(NULL) - session->last_comm; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2175 | //purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2176 | if (delta >= MSIM_KEEPALIVE_INTERVAL) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2177 | errmsg = g_strdup_printf(_("Connection to server lost (no data received within %d seconds)"), (int)delta); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2178 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2179 | purple_debug_info("msim", "msim_check_alive: %s > interval of %d, presumed dead\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2180 | errmsg, MSIM_KEEPALIVE_INTERVAL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2181 | purple_connection_error(session->gc, errmsg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2182 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2183 | purple_notify_error(session->gc, NULL, errmsg, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2184 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2185 | g_free(errmsg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2186 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2187 | return FALSE; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2188 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2189 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2190 | return TRUE; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2191 | } |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2192 | #endif |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2193 | |
|
18038
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
2194 | /** Handle mail reply checks. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2195 | static void |
|
18038
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
2196 | msim_check_inbox_cb(MsimSession *session, MsimMessage *reply, gpointer data) |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2197 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2198 | GHashTable *body; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2199 | gchar *body_str; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2200 | GString *notification; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2201 | guint old_inbox_status; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2202 | guint i, n; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2203 | const gchar *froms[5], *tos[5], *urls[5], *subjects[5]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2204 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2205 | /* Three parallel arrays for each new inbox message type. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2206 | static const gchar *inbox_keys[] = |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2207 | { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2208 | "Mail", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2209 | "BlogComment", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2210 | "ProfileComment", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2211 | "FriendRequest", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2212 | "PictureComment" |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2213 | }; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2214 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2215 | static const guint inbox_bits[] = |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2216 | { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2217 | MSIM_INBOX_MAIL, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2218 | MSIM_INBOX_BLOG_COMMENT, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2219 | MSIM_INBOX_PROFILE_COMMENT, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2220 | MSIM_INBOX_FRIEND_REQUEST, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2221 | MSIM_INBOX_PICTURE_COMMENT |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2222 | }; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2223 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2224 | static const gchar *inbox_urls[] = |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2225 | { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2226 | "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2227 | "http://blog.myspace.com/index.cfm?fuseaction=blog", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2228 | "http://home.myspace.com/index.cfm?fuseaction=user", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2229 | "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2230 | "http://home.myspace.com/index.cfm?fuseaction=user" |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2231 | }; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2232 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2233 | static const gchar *inbox_text[5]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2234 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2235 | /* Can't write _()'d strings in array initializers. Workaround. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2236 | inbox_text[0] = _("New mail messages"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2237 | inbox_text[1] = _("New blog comments"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2238 | inbox_text[2] = _("New profile comments"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2239 | inbox_text[3] = _("New friend requests!"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2240 | inbox_text[4] = _("New picture comments"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2241 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2242 | g_return_if_fail(reply != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2243 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2244 | msim_msg_dump("msim_check_inbox_cb: reply=%s\n", reply); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2245 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2246 | body_str = msim_msg_get_string(reply, "body"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2247 | g_return_if_fail(body_str != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2248 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2249 | body = msim_parse_body(body_str); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2250 | g_free(body_str); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2251 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2252 | notification = g_string_new(""); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2253 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2254 | old_inbox_status = session->inbox_status; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2255 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2256 | n = 0; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2257 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2258 | for (i = 0; i < sizeof(inbox_keys) / sizeof(inbox_keys[0]); ++i) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2259 | const gchar *key; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2260 | guint bit; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2261 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2262 | key = inbox_keys[i]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2263 | bit = inbox_bits[i]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2264 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2265 | if (g_hash_table_lookup(body, key)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2266 | /* Notify only on when _changes_ from no mail -> has mail |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2267 | * (edge triggered) */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2268 | if (!(session->inbox_status & bit)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2269 | purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2270 | key ? key : "(NULL)", n); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2271 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2272 | subjects[n] = inbox_text[i]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2273 | froms[n] = _("MySpace"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2274 | tos[n] = session->username; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2275 | /* TODO: append token, web challenge, so automatically logs in. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2276 | * Would also need to free strings because they won't be static |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2277 | */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2278 | urls[n] = inbox_urls[i]; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2279 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2280 | ++n; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2281 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2282 | purple_debug_info("msim", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2283 | "msim_check_inbox_cb: already notified of %s\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2284 | key ? key : "(NULL)"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2285 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2286 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2287 | session->inbox_status |= bit; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2288 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2289 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2290 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2291 | if (n) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2292 | purple_debug_info("msim", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2293 | "msim_check_inbox_cb: notifying of %d\n", n); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2294 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2295 | /* TODO: free strings with callback _if_ change to dynamic (w/ token) */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2296 | purple_notify_emails(session->gc, /* handle */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2297 | n, /* count */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2298 | TRUE, /* detailed */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2299 | subjects, froms, tos, urls, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2300 | NULL, /* PurpleNotifyCloseCallback cb */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2301 | NULL); /* gpointer user_data */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2302 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2303 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2304 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2305 | g_hash_table_destroy(body); |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2306 | } |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2307 | |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2308 | /* Send request to check if there is new mail. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2309 | static gboolean |
|
18038
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
2310 | msim_check_inbox(gpointer data) |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2311 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2312 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2313 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2314 | session = (MsimSession *)data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2315 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2316 | purple_debug_info("msim", "msim_check_inbox: checking mail\n"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2317 | g_return_val_if_fail(msim_send(session, |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2318 | "persist", MSIM_TYPE_INTEGER, 1, |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2319 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2320 | "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2321 | "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN, |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2322 | "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID, |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2323 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2324 | "rid", MSIM_TYPE_INTEGER, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2325 | msim_new_reply_callback(session, msim_check_inbox_cb, NULL), |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2326 | "body", MSIM_TYPE_STRING, g_strdup(""), |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2327 | NULL), TRUE); |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2328 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2329 | /* Always return true, so that we keep checking for mail. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2330 | return TRUE; |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2331 | } |
|
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2332 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2333 | /** Called when the session key arrives. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2334 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2335 | msim_we_are_logged_on(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2336 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2337 | MsimMessage *body; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2338 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2339 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2340 | g_return_val_if_fail(msg != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2341 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2342 | purple_connection_update_progress(session->gc, _("Connected"), 3, 4); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2343 | purple_connection_set_state(session->gc, PURPLE_CONNECTED); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2344 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2345 | session->sesskey = msim_msg_get_integer(msg, "sesskey"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2346 | purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2347 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2348 | /* What is proof? Used to be uid, but now is 52 base64'd bytes... */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2349 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2350 | /* Comes with: proof,profileid,userid,uniquenick -- all same values |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2351 | * some of the time, but can vary. This is our own user ID. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2352 | session->userid = msim_msg_get_integer(msg, "userid"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2353 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2354 | /* Not sure what profileid is used for. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2355 | if (msim_msg_get_integer(msg, "profileid") != session->userid) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2356 | msim_unrecognized(session, msg, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2357 | "Profile ID didn't match user ID, don't know why"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2358 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2359 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2360 | /* We now know are our own username, only after we're logged in.. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2361 | * which is weird, but happens because you login with your email |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2362 | * address and not username. Will be freed in msim_session_destroy(). */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2363 | session->username = msim_msg_get_string(msg, "uniquenick"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2364 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2365 | if (msim_msg_get_integer(msg, "uniquenick") == session->userid) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2366 | purple_debug_info("msim_we_are_logged_on", "TODO: pick username"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2367 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2368 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
2369 | body = msim_msg_new( |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2370 | "UserID", MSIM_TYPE_INTEGER, session->userid, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2371 | NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2372 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2373 | /* Request IM info about ourself. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2374 | msim_send(session, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2375 | "persist", MSIM_TYPE_STRING, g_strdup("persist"), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2376 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2377 | "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2378 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2379 | "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2380 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2381 | "body", MSIM_TYPE_DICTIONARY, body, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2382 | NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2383 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2384 | /* Request MySpace info about ourself. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2385 | msim_send(session, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2386 | "persist", MSIM_TYPE_STRING, g_strdup("persist"), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2387 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2388 | "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2389 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2390 | "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2391 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2392 | "body", MSIM_TYPE_STRING, g_strdup(""), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2393 | NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2394 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2395 | /* TODO: set options (persist cmd=514,dsn=1,lid=10) */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2396 | /* TODO: set blocklist */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2397 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2398 | /* Notify servers of our current status. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2399 | purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2400 | msim_set_status(session->account, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2401 | purple_account_get_active_status(session->account)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2402 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2403 | /* TODO: setinfo */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2404 | /* |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
2405 | body = msim_msg_new( |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2406 | "TotalFriends", MSIM_TYPE_INTEGER, 666, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2407 | NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2408 | msim_send(session, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2409 | "setinfo", MSIM_TYPE_BOOLEAN, TRUE, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2410 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2411 | "info", MSIM_TYPE_DICTIONARY, body, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2412 | NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2413 | */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2414 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2415 | /* Disable due to problems with timeouts. TODO: fix. */ |
|
18038
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
2416 | #ifdef MSIM_USE_KEEPALIVE |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2417 | purple_timeout_add(MSIM_KEEPALIVE_INTERVAL_CHECK, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2418 | (GSourceFunc)msim_check_alive, session); |
|
18038
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
2419 | #endif |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2420 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2421 | purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2422 | (GSourceFunc)msim_check_inbox, session); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2423 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2424 | msim_check_inbox(session); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2425 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2426 | return TRUE; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2427 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2428 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2429 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2430 | * Process a message. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2431 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2432 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2433 | * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2434 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2435 | * @return TRUE if successful. FALSE if processing failed. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2436 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2437 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2438 | msim_process(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2439 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2440 | g_return_val_if_fail(session != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2441 | g_return_val_if_fail(msg != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2442 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2443 | #ifdef MSIM_DEBUG_MSG |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2444 | msim_msg_dump("ready to process: %s\n", msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2445 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2446 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2447 | if (msim_msg_get_integer(msg, "lc") == 1) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2448 | return msim_login_challenge(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2449 | } else if (msim_msg_get_integer(msg, "lc") == 2) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2450 | return msim_we_are_logged_on(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2451 | } else if (msim_msg_get(msg, "bm")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2452 | return msim_incoming_bm(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2453 | } else if (msim_msg_get(msg, "rid")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2454 | return msim_process_reply(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2455 | } else if (msim_msg_get(msg, "error")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2456 | return msim_error(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2457 | } else if (msim_msg_get(msg, "ka")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2458 | return TRUE; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2459 | } else { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2460 | msim_unrecognized(session, msg, "in msim_process"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2461 | return FALSE; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2462 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2463 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2464 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2465 | /** Store an field of information about a buddy. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2466 | static void |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2467 | msim_store_buddy_info_each(gpointer key, gpointer value, gpointer user_data) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2468 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2469 | PurpleBuddy *buddy; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2470 | gchar *key_str, *value_str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2471 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2472 | buddy = (PurpleBuddy *)user_data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2473 | key_str = (gchar *)key; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2474 | value_str = (gchar *)value; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2475 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2476 | if (strcmp(key_str, "UserID") == 0 || |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2477 | strcmp(key_str, "Age") == 0 || |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2478 | strcmp(key_str, "TotalFriends") == 0) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2479 | /* Certain fields get set as integers, instead of strings, for |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2480 | * convenience. May not be the best way to do it, but having at least |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2481 | * UserID as an integer is convenient...until it overflows! */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2482 | purple_blist_node_set_int(&buddy->node, key_str, atol(value_str)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2483 | } else { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2484 | purple_blist_node_set_string(&buddy->node, key_str, value_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2485 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2486 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2487 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2488 | /** Save buddy information to the buddy list from a user info reply message. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2489 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2490 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2491 | * @param msg The user information reply, with any amount of information. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2492 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2493 | * The information is saved to the buddy's blist node, which ends up in blist.xml. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2494 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2495 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2496 | msim_store_buddy_info(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2497 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2498 | GHashTable *body; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2499 | gchar *username, *body_str, *uid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2500 | PurpleBuddy *buddy; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2501 | guint rid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2502 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2503 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2504 | g_return_val_if_fail(msg != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2505 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2506 | rid = msim_msg_get_integer(msg, "rid"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2507 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2508 | g_return_val_if_fail(rid != 0, FALSE); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2509 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2510 | body_str = msim_msg_get_string(msg, "body"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2511 | g_return_val_if_fail(body_str != NULL, FALSE); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2512 | body = msim_parse_body(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2513 | g_free(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2514 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2515 | /* TODO: implement a better hash-like interface, and use it. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2516 | username = g_hash_table_lookup(body, "UserName"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2517 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2518 | if (!username) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2519 | purple_debug_info("msim", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2520 | "msim_process_reply: not caching body, no UserName\n"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2521 | g_hash_table_destroy(body); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2522 | return FALSE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2523 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2524 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2525 | uid = g_hash_table_lookup(body, "UserID"); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2526 | if (!uid) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2527 | g_hash_table_destroy(body); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2528 | g_return_val_if_fail(uid, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2529 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2530 | |
|
18044
06152cc939ef
Increase read buffer size and be more careful about overruns.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18043
diff
changeset
|
2531 | purple_debug_info("msim", "associating uid %s with username %s\n", uid, username); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2532 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2533 | buddy = purple_find_buddy(session->account, username); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2534 | if (buddy) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2535 | g_hash_table_foreach(body, msim_store_buddy_info_each, buddy); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2536 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2537 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2538 | if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN && |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2539 | msim_msg_get_integer(msg, "lid") == MG_OWN_IM_INFO_LID) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2540 | /* TODO: do something with our own IM info, if we need it for some |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2541 | * specific purpose. Otherwise it is available on the buddy list, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2542 | * if the user has themselves as their own buddy. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2543 | } else if (msim_msg_get_integer(msg, "dsn") == MG_OWN_MYSPACE_INFO_DSN && |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2544 | msim_msg_get_integer(msg, "lid") == MG_OWN_MYSPACE_INFO_LID) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2545 | /* TODO: same as above, but for MySpace info. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2546 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2547 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2548 | g_hash_table_destroy(body); |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2549 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2550 | return TRUE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2551 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2552 | |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2553 | /** Process the initial server information from the server. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2554 | static gboolean |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2555 | msim_process_server_info(MsimSession *session, MsimMessage *msg) |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2556 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2557 | gchar *body_str; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2558 | GHashTable *body; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2559 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2560 | body_str = msim_msg_get_string(msg, "body"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2561 | g_return_val_if_fail(body_str != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2562 | body = msim_parse_body(body_str); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2563 | g_free(body_str); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2564 | g_return_val_if_fail(body != NULL, FALSE); |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2565 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2566 | /* Example body: |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2567 | AdUnitRefreshInterval=10. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2568 | AlertPollInterval=360. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2569 | AllowChatRoomEmoticonSharing=False. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2570 | ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2571 | CurClientVersion=673. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2572 | EnableIMBrowse=True. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2573 | EnableIMStuffAvatars=False. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2574 | EnableIMStuffZaps=False. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2575 | MaxAddAllFriends=100. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2576 | MaxContacts=1000. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2577 | MinClientVersion=594. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2578 | MySpaceIM_ENGLISH=78744676. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2579 | MySpaceNowTimer=720. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2580 | PersistenceDataTimeout=900. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2581 | UseWebChallenge=1. |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2582 | WebTicketGoHome=False |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2583 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2584 | Anything useful? TODO: use what is useful, and use it. |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2585 | */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2586 | purple_debug_info("msim_process_server_info", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2587 | "maximum contacts: %s\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2588 | g_hash_table_lookup(body, "MaxContacts") ? |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2589 | g_hash_table_lookup(body, "MaxContacts") : "(NULL)"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2590 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2591 | session->server_info = body; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2592 | /* session->server_info freed in msim_session_destroy */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2593 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2594 | return TRUE; |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2595 | } |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2596 | |
|
18057
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
2597 | /** Process a web challenge, used to login to the web site. */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2598 | static gboolean |
|
18057
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
2599 | msim_web_challenge(MsimSession *session, MsimMessage *msg) |
|
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
2600 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2601 | /* TODO: web challenge, store token */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2602 | return FALSE; |
|
18057
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
2603 | } |
|
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
2604 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2605 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2606 | * Process a persistance message reply from the server. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2607 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2608 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2609 | * @param msg Message reply from server. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2610 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2611 | * @return TRUE if successful. |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2612 | * |
|
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
2613 | * msim_lookup_user sets callback for here |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2614 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2615 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2616 | msim_process_reply(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2617 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2618 | MSIM_USER_LOOKUP_CB cb; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2619 | gpointer data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2620 | guint rid, cmd, dsn, lid; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2621 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2622 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2623 | g_return_val_if_fail(msg != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2624 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2625 | msim_store_buddy_info(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2626 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2627 | rid = msim_msg_get_integer(msg, "rid"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2628 | cmd = msim_msg_get_integer(msg, "cmd"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2629 | dsn = msim_msg_get_integer(msg, "dsn"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2630 | lid = msim_msg_get_integer(msg, "lid"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2631 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2632 | /* Unsolicited messages */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2633 | if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2634 | if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2635 | return msim_process_server_info(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2636 | } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2637 | return msim_web_challenge(session, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2638 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2639 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2640 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2641 | /* If a callback is registered for this userid lookup, call it. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2642 | cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2643 | data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2644 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2645 | if (cb) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2646 | purple_debug_info("msim", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2647 | "msim_process_body: calling callback now\n"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2648 | /* Clone message, so that the callback 'cb' can use it (needs to free it also). */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2649 | cb(session, msim_msg_clone(msg), data); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2650 | g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2651 | g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2652 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2653 | purple_debug_info("msim", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2654 | "msim_process_body: no callback for rid %d\n", rid); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2655 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2656 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2657 | return TRUE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2658 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2659 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2660 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2661 | * Handle an error from the server. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2662 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2663 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2664 | * @param msg The message. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2665 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2666 | * @return TRUE if successfully reported error. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2667 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2668 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2669 | msim_error(MsimSession *session, MsimMessage *msg) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2670 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2671 | gchar *errmsg, *full_errmsg; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2672 | guint err; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2673 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2674 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2675 | g_return_val_if_fail(msg != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2676 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2677 | err = msim_msg_get_integer(msg, "err"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2678 | errmsg = msim_msg_get_string(msg, "errmsg"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2679 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2680 | full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2681 | errmsg ? errmsg : "no 'errmsg' given"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2682 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2683 | g_free(errmsg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2684 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2685 | purple_debug_info("msim", "msim_error: %s\n", full_errmsg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2686 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2687 | purple_notify_error(session->account, g_strdup(_("MySpaceIM Error")), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2688 | full_errmsg, NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2689 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2690 | /* Destroy session if fatal. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2691 | if (msim_msg_get(msg, "fatal")) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2692 | purple_debug_info("msim", "fatal error, closing\n"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2693 | purple_connection_error(session->gc, full_errmsg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2694 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2695 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2696 | return TRUE; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2697 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2698 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2699 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2700 | * Process incoming status messages. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2701 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2702 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2703 | * @param msg Status update message. Caller frees. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2704 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2705 | * @return TRUE if successful. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2706 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2707 | static gboolean |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
2708 | msim_incoming_status(MsimSession *session, MsimMessage *msg) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2709 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2710 | PurpleBuddyList *blist; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2711 | PurpleBuddy *buddy; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2712 | GList *list; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2713 | gchar *status_headline; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2714 | gint status_code, purple_status_code; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2715 | gchar *username; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2716 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2717 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2718 | g_return_val_if_fail(msg != NULL, FALSE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2719 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2720 | msim_msg_dump("msim_status msg=%s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2721 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2722 | /* Helpfully looked up by msim_incoming_resolve() for us. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2723 | username = msim_msg_get_string(msg, "_username"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2724 | g_return_val_if_fail(username != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2725 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2726 | { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2727 | gchar *ss; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2728 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2729 | ss = msim_msg_get_string(msg, "msg"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2730 | purple_debug_info("msim", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2731 | "msim_status: updating status for <%s> to <%s>\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2732 | username, ss ? ss : "(NULL)"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2733 | g_free(ss); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2734 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2735 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2736 | /* Example fields: |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2737 | * |s|0|ss|Offline |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2738 | * |s|1|ss|:-)|ls||ip|0|p|0 |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2739 | */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2740 | list = msim_msg_get_list(msg, "msg"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2741 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2742 | status_code = atoi(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE)); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2743 | purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2744 | status_headline = g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2745 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2746 | blist = purple_get_blist(); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2747 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2748 | /* Add buddy if not found */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2749 | buddy = purple_find_buddy(session->account, username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2750 | if (!buddy) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2751 | purple_debug_info("msim", |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2752 | "msim_status: making new buddy for %s\n", username); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2753 | buddy = purple_buddy_new(session->account, username, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2754 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2755 | purple_blist_add_buddy(buddy, NULL, NULL, NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2756 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2757 | /* All buddies on list should have 'uid' integer associated with them. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2758 | purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2759 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2760 | msim_store_buddy_info(session, msg); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2761 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2762 | purple_debug_info("msim", "msim_status: found buddy %s\n", username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2763 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2764 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2765 | purple_blist_node_set_string(&buddy->node, "Headline", status_headline); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2766 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2767 | /* Set user status */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2768 | switch (status_code) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2769 | case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN: |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2770 | purple_status_code = PURPLE_STATUS_OFFLINE; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2771 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2772 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2773 | case MSIM_STATUS_CODE_ONLINE: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2774 | purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2775 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2776 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2777 | case MSIM_STATUS_CODE_AWAY: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2778 | purple_status_code = PURPLE_STATUS_AWAY; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2779 | break; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2780 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2781 | case MSIM_STATUS_CODE_IDLE: |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2782 | /* will be handled below */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2783 | purple_status_code = -1; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2784 | break; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2785 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2786 | default: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2787 | purple_debug_info("msim", "msim_status for %s, unknown status code %d, treating as available\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2788 | username, status_code); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2789 | purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2790 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2791 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2792 | purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2793 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2794 | if (status_code == MSIM_STATUS_CODE_IDLE) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2795 | purple_debug_info("msim", "msim_status: got idle: %s\n", username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2796 | purple_prpl_got_user_idle(session->account, username, TRUE, time(NULL)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2797 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2798 | /* All other statuses indicate going back to non-idle. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2799 | purple_prpl_got_user_idle(session->account, username, FALSE, time(NULL)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2800 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2801 | |
|
18064
527bea0f11ab
Disable sending third-party client version to oncoming buddies.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18063
diff
changeset
|
2802 | #ifdef MSIM_SEND_CLIENT_VERSION |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2803 | if (status_code == MSIM_STATUS_CODE_ONLINE) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2804 | /* Secretly whisper to unofficial clients our own version as they come online */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2805 | msim_send_unofficial_client(session, username); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2806 | } |
|
18064
527bea0f11ab
Disable sending third-party client version to oncoming buddies.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18063
diff
changeset
|
2807 | #endif |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
2808 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2809 | g_free(username); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2810 | msim_msg_list_free(list); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2811 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2812 | return TRUE; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2813 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2814 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2815 | /** Add a buddy to user's buddy list. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2816 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2817 | msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2818 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2819 | MsimSession *session; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2820 | MsimMessage *msg; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2821 | MsimMessage *msg_persist; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2822 | MsimMessage *body; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2823 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2824 | session = (MsimSession *)gc->proto_data; |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
2825 | purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n", |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2826 | buddy->name, (group && group->name) ? group->name : "(no group)"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2827 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
2828 | msg = msim_msg_new( |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2829 | "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2830 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2831 | /* "newprofileid" will be inserted here with uid. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2832 | "reason", MSIM_TYPE_STRING, g_strdup(""), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2833 | NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2834 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2835 | if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2836 | purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed.")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2837 | msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2838 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2839 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2840 | msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2841 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2842 | /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2843 | * buddy list since Purple adds it locally. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2844 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
2845 | body = msim_msg_new( |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2846 | "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2847 | "GroupName", MSIM_TYPE_STRING, g_strdup(group->name), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2848 | "Position", MSIM_TYPE_INTEGER, 1000, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2849 | "Visibility", MSIM_TYPE_INTEGER, 1, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2850 | "NickName", MSIM_TYPE_STRING, g_strdup(""), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2851 | "NameSelect", MSIM_TYPE_INTEGER, 0, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2852 | NULL); |
|
19135
705302b2c7f7
Use the new dictionary data type when:
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19133
diff
changeset
|
2853 | |
|
19139
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2854 | /* TODO: Update blocklist. */ |
|
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2855 | |
|
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2856 | #if 0 |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
2857 | msg_persist = msim_msg_new( |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2858 | "persist", MSIM_TYPE_INTEGER, 1, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2859 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2860 | "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2861 | "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2862 | "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2863 | /* TODO: Use msim_new_reply_callback to get rid. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2864 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
19135
705302b2c7f7
Use the new dictionary data type when:
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19133
diff
changeset
|
2865 | "body", MSIM_TYPE_DICTIONARY, body, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2866 | NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2867 | |
|
19139
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2868 | if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL)) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2869 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2870 | purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed")); |
|
19139
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2871 | msim_msg_free(msg_persist); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2872 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2873 | } |
|
19139
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2874 | msim_msg_free(msg_persist); |
|
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2875 | #endif |
|
e6854f8ecea4
Use the right message in the persistance command for adding buddies, but
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19137
diff
changeset
|
2876 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2877 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2878 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2879 | /** Perform actual postprocessing on a message, adding userid as specified. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2880 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2881 | * @param msg The message to postprocess. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2882 | * @param uid_before Name of field where to insert new field before, or NULL for end. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2883 | * @param uid_field_name Name of field to add uid to. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2884 | * @param uid The userid to insert. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2885 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2886 | * If the field named by uid_field_name already exists, then its string contents will |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2887 | * be used for the field, except "<uid>" will be replaced by the userid. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2888 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2889 | * If the field named by uid_field_name does not exist, it will be added before the |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2890 | * field named by uid_before, as an integer, with the userid. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2891 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2892 | * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing(). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2893 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2894 | static MsimMessage * |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2895 | msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2896 | const gchar *uid_field_name, guint uid) |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2897 | { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2898 | msim_msg_dump("msim_do_postprocessing msg: %s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2899 | |
|
19135
705302b2c7f7
Use the new dictionary data type when:
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19133
diff
changeset
|
2900 | /* First, check - if the field already exists, replace <uid> within it */ |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2901 | if (msim_msg_get(msg, uid_field_name)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2902 | MsimMessageElement *elem; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2903 | gchar *fmt_string; |
|
19135
705302b2c7f7
Use the new dictionary data type when:
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19133
diff
changeset
|
2904 | gchar *uid_str, *new_str; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2905 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2906 | /* Warning: this is a delicate, but safe, operation */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2907 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2908 | elem = msim_msg_get(msg, uid_field_name); |
|
19137
fb04b5cf5817
Use a list when updating the blocklist when removing the buddy, since
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
2909 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2910 | /* Get the packed element, flattening it. This allows <uid> to be |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2911 | * replaced within nested data structures, since the replacement is done |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2912 | * on the linear, packed data, not on a complicated data structure. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2913 | * |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2914 | * For example, if the field was originally a dictionary or a list, you |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2915 | * would have to iterate over all the items in it to see what needs to |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2916 | * be replaced. But by packing it first, the <uid> marker is easily replaced |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2917 | * just by a string replacement. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2918 | */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2919 | fmt_string = msim_msg_pack_element_data(elem); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2920 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2921 | uid_str = g_strdup_printf("%d", uid); |
|
19135
705302b2c7f7
Use the new dictionary data type when:
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19133
diff
changeset
|
2922 | new_str = str_replace(fmt_string, "<uid>", uid_str); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2923 | g_free(uid_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2924 | g_free(fmt_string); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2925 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2926 | /* Free the old element data */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2927 | msim_msg_free_element_data(elem->data); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2928 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2929 | /* Replace it with our new data */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2930 | elem->data = new_str; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2931 | elem->type = MSIM_TYPE_RAW; |
|
19135
705302b2c7f7
Use the new dictionary data type when:
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19133
diff
changeset
|
2932 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2933 | } else { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2934 | /* Otherwise, insert new field into outgoing message. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2935 | msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2936 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2937 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2938 | msim_msg_dump("msim_postprocess_outgoing_cb: postprocessed msg=%s\n", msg); |
|
19137
fb04b5cf5817
Use a list when updating the blocklist when removing the buddy, since
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
2939 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2940 | return msg; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2941 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2942 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2943 | /** Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2944 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2945 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2946 | * @param userinfo The user information reply message, containing the user ID |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2947 | * @param data The message to postprocess and send. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2948 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2949 | * The data message should contain these fields: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2950 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2951 | * _uid_field_name: string, name of field to add with userid from userinfo message |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2952 | * _uid_before: string, name of field before field to insert, or NULL for end |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2953 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2954 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2955 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2956 | static void |
|
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
2957 | msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo, |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2958 | gpointer data) |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2959 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2960 | gchar *body_str; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2961 | GHashTable *body; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2962 | gchar *uid, *uid_field_name, *uid_before; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2963 | MsimMessage *msg; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2964 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2965 | msg = (MsimMessage *)data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2966 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2967 | msim_msg_dump("msim_postprocess_outgoing_cb() got msg=%s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2968 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2969 | /* Obtain userid from userinfo message. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2970 | body_str = msim_msg_get_string(userinfo, "body"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2971 | g_return_if_fail(body_str != NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2972 | body = msim_parse_body(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2973 | g_free(body_str); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2974 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2975 | uid = g_strdup(g_hash_table_lookup(body, "UserID")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2976 | g_hash_table_destroy(body); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2977 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2978 | uid_field_name = msim_msg_get_string(msg, "_uid_field_name"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2979 | uid_before = msim_msg_get_string(msg, "_uid_before"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2980 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2981 | msg = msim_do_postprocessing(msg, uid_before, uid_field_name, atol(uid)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2982 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2983 | /* Send */ |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
2984 | if (!msim_msg_send(session, msg)) { |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
2985 | msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2986 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2987 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2988 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2989 | /* Free field names AFTER sending message, because MsimMessage does NOT copy |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2990 | * field names - instead, treats them as static strings (which they usually are). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2991 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2992 | g_free(uid_field_name); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2993 | g_free(uid_before); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2994 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
2995 | g_hash_table_destroy(body); |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
2996 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2997 | //msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2998 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
2999 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3000 | /** Postprocess and send a message. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3001 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3002 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3003 | * @param msg Message to postprocess. Will NOT be freed. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3004 | * @param username Username to resolve. Assumed to be a static string (will not be freed or copied). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3005 | * @param uid_field_name Name of new field to add, containing uid of username. Static string. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3006 | * @param uid_before Name of existing field to insert username field before. Static string. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3007 | * |
|
18063
619ec16f2e6d
Fix crash when deleting buddies on Windows. This was done by
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18062
diff
changeset
|
3008 | * @return TRUE if successful. |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3009 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3010 | gboolean |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3011 | msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3012 | const gchar *username, const gchar *uid_field_name, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3013 | const gchar *uid_before) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3014 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3015 | PurpleBuddy *buddy; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3016 | guint uid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3017 | gboolean rc; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3018 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3019 | g_return_val_if_fail(msg != NULL, FALSE); |
|
18063
619ec16f2e6d
Fix crash when deleting buddies on Windows. This was done by
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18062
diff
changeset
|
3020 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3021 | /* Store information for msim_postprocess_outgoing_cb(). */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3022 | msim_msg_dump("msim_postprocess_outgoing: msg before=%s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3023 | msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3024 | msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3025 | msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3026 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3027 | /* First, try the most obvious. If numeric userid is given, use that directly. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3028 | if (msim_is_userid(username)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3029 | uid = atol(username); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3030 | } else { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3031 | /* Next, see if on buddy list and know uid. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3032 | buddy = purple_find_buddy(session->account, username); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3033 | if (buddy) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3034 | uid = purple_blist_node_get_int(&buddy->node, "UserID"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3035 | } else { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3036 | uid = 0; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3037 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3038 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3039 | if (!buddy || !uid) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3040 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3041 | /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3042 | purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n", |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
3043 | username ? username : "(NULL)"); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3044 | msim_msg_dump("msim_postprocess_outgoing - scheduling lookup, msg=%s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3045 | /* TODO: where is cloned message freed? Should be in _cb. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3046 | msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg)); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3047 | return TRUE; /* not sure of status yet - haven't sent! */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3048 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3049 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3050 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3051 | /* Already have uid, postprocess and send msg immediately. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3052 | purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n", |
|
18066
101acc0b44be
Be more careful about null strings in %s format specifier in debug messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18064
diff
changeset
|
3053 | username ? username : "(NULL)", uid); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3054 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3055 | msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3056 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3057 | msim_msg_dump("msim_postprocess_outgoing: msg after (uid immediate)=%s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3058 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3059 | rc = msim_msg_send(session, msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3060 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3061 | //msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3062 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3063 | return rc; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3064 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3065 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3066 | /** Remove a buddy from the user's buddy list. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3067 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3068 | msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3069 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3070 | MsimSession *session; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3071 | MsimMessage *delbuddy_msg; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3072 | MsimMessage *persist_msg; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3073 | MsimMessage *blocklist_msg; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3074 | GList *blocklist_updates; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3075 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3076 | session = (MsimSession *)gc->proto_data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3077 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3078 | delbuddy_msg = msim_msg_new( |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3079 | "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3080 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3081 | /* 'delprofileid' with uid will be inserted here. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3082 | NULL); |
|
18063
619ec16f2e6d
Fix crash when deleting buddies on Windows. This was done by
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18062
diff
changeset
|
3083 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3084 | if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3085 | purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed")); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3086 | msim_msg_free(delbuddy_msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3087 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3088 | } |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3089 | msim_msg_free(delbuddy_msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3090 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3091 | persist_msg = msim_msg_new( |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3092 | "persist", MSIM_TYPE_INTEGER, 1, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3093 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3094 | "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3095 | "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3096 | "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3097 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3098 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3099 | /* <uid> will be replaced by postprocessing */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3100 | "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3101 | NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3102 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3103 | if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3104 | purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3105 | msim_msg_free(persist_msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3106 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3107 | } |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3108 | msim_msg_free(persist_msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3109 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3110 | blocklist_updates = NULL; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3111 | blocklist_updates = g_list_prepend(blocklist_updates, "a-"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3112 | blocklist_updates = g_list_prepend(blocklist_updates, "<uid>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3113 | blocklist_updates = g_list_prepend(blocklist_updates, "b-"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3114 | blocklist_updates = g_list_prepend(blocklist_updates, "<uid>"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3115 | blocklist_updates = g_list_reverse(blocklist_updates); |
|
19133
81e7c23bbb7f
In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18066
diff
changeset
|
3116 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3117 | blocklist_msg = msim_msg_new( |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3118 | "blocklist", MSIM_TYPE_BOOLEAN, TRUE, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3119 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
19133
81e7c23bbb7f
In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18066
diff
changeset
|
3120 | /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */ |
|
19137
fb04b5cf5817
Use a list when updating the blocklist when removing the buddy, since
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
3121 | //"idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3122 | "idlist", MSIM_TYPE_LIST, blocklist_updates, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3123 | NULL); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3124 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3125 | if (!msim_postprocess_outgoing(session, blocklist_msg, buddy->name, "idlist", NULL)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3126 | purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("blocklist command failed")); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3127 | msim_msg_free(blocklist_msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3128 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3129 | } |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3130 | msim_msg_free(blocklist_msg); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3131 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3132 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3133 | /** Return whether the buddy can be messaged while offline. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3134 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3135 | * The protocol supports offline messages in just the same way as online |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3136 | * messages. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3137 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3138 | gboolean |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3139 | msim_offline_message(const PurpleBuddy *buddy) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3140 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3141 | return TRUE; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3142 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3143 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3144 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3145 | * Callback when input available. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3146 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3147 | * @param gc_uncasted A PurpleConnection pointer. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3148 | * @param source File descriptor. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3149 | * @param cond PURPLE_INPUT_READ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3150 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3151 | * Reads the input, and calls msim_preprocess_incoming() to handle it. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3152 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
3153 | static void |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3154 | msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3155 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3156 | PurpleConnection *gc; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3157 | PurpleAccount *account; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3158 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3159 | gchar *end; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3160 | int n; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3161 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3162 | g_return_if_fail(gc_uncasted != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3163 | g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3164 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3165 | gc = (PurpleConnection *)(gc_uncasted); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3166 | account = purple_connection_get_account(gc); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3167 | session = gc->proto_data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3168 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3169 | g_return_if_fail(cond == PURPLE_INPUT_READ); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3170 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3171 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3172 | /* Mark down that we got data, so don't timeout. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3173 | session->last_comm = time(NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3174 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3175 | /* Only can handle so much data at once... |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3176 | * If this happens, try recompiling with a higher MSIM_READ_BUF_SIZE. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3177 | * Should be large enough to hold the largest protocol message. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3178 | */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3179 | if (session->rxoff >= MSIM_READ_BUF_SIZE) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3180 | purple_debug_error("msim", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3181 | "msim_input_cb: %d-byte read buffer full! rxoff=%d\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3182 | MSIM_READ_BUF_SIZE, session->rxoff); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3183 | purple_connection_error(gc, _("Read buffer full")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3184 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3185 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3186 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3187 | purple_debug_info("msim", "buffer at %d (max %d), reading up to %d\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3188 | session->rxoff, MSIM_READ_BUF_SIZE, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3189 | MSIM_READ_BUF_SIZE - session->rxoff); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3190 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3191 | /* Read into buffer. On Win32, need recv() not read(). session->fd also holds |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3192 | * the file descriptor, but it sometimes differs from the 'source' parameter. |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3193 | */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3194 | n = recv(session->fd, session->rxbuf + session->rxoff, MSIM_READ_BUF_SIZE - session->rxoff, 0); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3195 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3196 | if (n < 0 && errno == EAGAIN) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3197 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3198 | } else if (n < 0) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3199 | purple_debug_error("msim", "msim_input_cb: read error, ret=%d, " |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3200 | "error=%s, source=%d, fd=%d (%X))\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3201 | n, strerror(errno), source, session->fd, session->fd); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3202 | purple_connection_error(gc, _("Read error")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3203 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3204 | } else if (n == 0) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3205 | purple_debug_info("msim", "msim_input_cb: server disconnected\n"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3206 | purple_connection_error(gc, _("Server has disconnected")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3207 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3208 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3209 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3210 | if (n + session->rxoff >= MSIM_READ_BUF_SIZE) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3211 | purple_debug_info("msim_input_cb", "received %d bytes, pushing rxoff to %d, over buffer size of %d\n", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3212 | n, n + session->rxoff, MSIM_READ_BUF_SIZE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3213 | /* TODO: g_realloc like msn, yahoo, irc, jabber? */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3214 | purple_connection_error(gc, _("Read buffer full")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3215 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3216 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3217 | /* Null terminate */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3218 | purple_debug_info("msim", "msim_input_cb: going to null terminate " |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3219 | "at n=%d\n", n); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3220 | session->rxbuf[session->rxoff + n] = 0; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3221 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3222 | #ifdef MSIM_CHECK_EMBEDDED_NULLS |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3223 | /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3224 | if (strlen(session->rxbuf + session->rxoff) != n) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3225 | /* Occurs after login, but it is not a null byte. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3226 | purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes" |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3227 | "--null byte encountered?\n", |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3228 | strlen(session->rxbuf + session->rxoff), n); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3229 | //purple_connection_error(gc, "Invalid message - null byte on input"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3230 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3231 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3232 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3233 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3234 | session->rxoff += n; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3235 | purple_debug_info("msim", "msim_input_cb: read=%d\n", n); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3236 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3237 | #ifdef MSIM_DEBUG_RXBUF |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3238 | purple_debug_info("msim", "buf=<%s>\n", session->rxbuf); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3239 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3240 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3241 | /* Look for \\final\\ end markers. If found, process message. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3242 | while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3243 | MsimMessage *msg; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3244 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3245 | #ifdef MSIM_DEBUG_RXBUF |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3246 | purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3247 | #endif |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3248 | *end = 0; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3249 | msg = msim_parse(g_strdup(session->rxbuf)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3250 | if (!msg) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3251 | purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3252 | purple_connection_error(gc, _("Unparseable message")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3253 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3254 | /* Process message and then free it (processing function should |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3255 | * clone message if it wants to keep it afterwards.) */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3256 | if (!msim_preprocess_incoming(session, msg)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3257 | msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3258 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3259 | msim_msg_free(msg); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3260 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3261 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3262 | /* Move remaining part of buffer to beginning. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3263 | session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3264 | memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3265 | MSIM_READ_BUF_SIZE - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3266 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3267 | /* Clear end of buffer */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3268 | //memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3269 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3270 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3271 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3272 | /* Setup a callback, to be called when a reply is received with the returned rid. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3273 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3274 | * @param cb The callback, an MSIM_USER_LOOKUP_CB. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3275 | * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3276 | * |
| 18041 | 3277 | * @return The request/reply ID, used to link replies with requests, or -1. |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3278 | * Put the rid in your request, 'rid' field. |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3279 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3280 | * TODO: Make more generic and more specific: |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3281 | * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3282 | * 2) data - make it an MsimMessage? |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3283 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
3284 | static guint |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3285 | msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3286 | gpointer data) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3287 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3288 | guint rid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3289 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3290 | g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
| 18041 | 3291 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3292 | rid = session->next_rid++; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3293 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3294 | g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3295 | g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3296 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3297 | return rid; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3298 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3299 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3300 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3301 | * Callback when connected. Sets up input handlers. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3302 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3303 | * @param data A PurpleConnection pointer. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3304 | * @param source File descriptor. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3305 | * @param error_message |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3306 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
3307 | static void |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3308 | msim_connect_cb(gpointer data, gint source, const gchar *error_message) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3309 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3310 | PurpleConnection *gc; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3311 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3312 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3313 | g_return_if_fail(data != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3314 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3315 | gc = (PurpleConnection *)data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3316 | session = (MsimSession *)gc->proto_data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3317 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3318 | if (source < 0) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3319 | purple_connection_error(gc, _("Couldn't connect to host")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3320 | purple_connection_error(gc, g_strdup_printf( |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3321 | _("Couldn't connect to host: %s (%d)"), |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3322 | error_message ? error_message : "no message given", |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3323 | source)); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3324 | return; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3325 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3326 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3327 | session->fd = source; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3328 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3329 | gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3330 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3331 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3332 | /* Session methods */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3333 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3334 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3335 | * Create a new MSIM session. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3336 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3337 | * @param acct The account to create the session from. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3338 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3339 | * @return Pointer to a new session. Free with msim_session_destroy. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3340 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3341 | MsimSession * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3342 | msim_session_new(PurpleAccount *acct) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3343 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3344 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3345 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3346 | g_return_val_if_fail(acct != NULL, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3347 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3348 | session = g_new0(MsimSession, 1); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3349 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3350 | session->magic = MSIM_SESSION_STRUCT_MAGIC; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3351 | session->account = acct; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3352 | session->gc = purple_account_get_connection(acct); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3353 | session->sesskey = 0; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3354 | session->userid = 0; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3355 | session->username = NULL; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3356 | session->fd = -1; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3357 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3358 | /* TODO: Remove. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3359 | session->user_lookup_cb = g_hash_table_new_full(g_direct_hash, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3360 | g_direct_equal, NULL, NULL); /* do NOT free function pointers! (values) */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3361 | session->user_lookup_cb_data = g_hash_table_new_full(g_direct_hash, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3362 | g_direct_equal, NULL, NULL);/* TODO: we don't know what the values are, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3363 | they could be integers inside gpointers |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3364 | or strings, so I don't freed them. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3365 | Figure this out, once free cache. */ |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
3366 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3367 | /* Created in msim_process_server_info() */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3368 | session->server_info = NULL; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3369 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3370 | session->rxoff = 0; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3371 | session->rxbuf = g_new0(gchar, MSIM_READ_BUF_SIZE); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3372 | session->next_rid = 1; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3373 | session->last_comm = time(NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3374 | session->inbox_status = 0; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3375 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3376 | return session; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3377 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3378 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3379 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3380 | * Free a session. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3381 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3382 | * @param session The session to destroy. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3383 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3384 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3385 | msim_session_destroy(MsimSession *session) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3386 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3387 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3388 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3389 | session->magic = -1; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3390 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3391 | g_free(session->rxbuf); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3392 | g_free(session->username); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3393 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3394 | /* TODO: Remove. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3395 | g_hash_table_destroy(session->user_lookup_cb); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3396 | g_hash_table_destroy(session->user_lookup_cb_data); |
|
18056
2c2d509ebe78
Add msim_process_server_info() to save the server information dictionary
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18055
diff
changeset
|
3397 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3398 | if (session->server_info) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3399 | g_hash_table_destroy(session->server_info); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3400 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3401 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3402 | g_free(session); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3403 | } |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3404 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3405 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3406 | * Close the connection. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3407 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3408 | * @param gc The connection. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3409 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3410 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3411 | msim_close(PurpleConnection *gc) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3412 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3413 | MsimSession *session; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3414 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3415 | if (gc == NULL) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3416 | return; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3417 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3418 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3419 | session = (MsimSession *)gc->proto_data; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3420 | if (session == NULL) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3421 | return; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3422 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3423 | gc->proto_data = NULL; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3424 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3425 | if (!MSIM_SESSION_VALID(session)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3426 | return; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3427 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3428 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3429 | if (session->gc->inpa) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3430 | purple_input_remove(session->gc->inpa); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3431 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3432 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3433 | msim_session_destroy(session); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3434 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3435 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3436 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3437 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3438 | * Check if a string is a userid (all numeric). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3439 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3440 | * @param user The user id, email, or name. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3441 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3442 | * @return TRUE if is userid, FALSE if not. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3443 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
3444 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3445 | msim_is_userid(const gchar *user) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3446 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3447 | g_return_val_if_fail(user != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3448 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3449 | return strspn(user, "0123456789") == strlen(user); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3450 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3451 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3452 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3453 | * Check if a string is an email address (contains an @). |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3454 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3455 | * @param user The user id, email, or name. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3456 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3457 | * @return TRUE if is an email, FALSE if not. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3458 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3459 | * This function is not intended to be used as a generic |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3460 | * means of validating email addresses, but to distinguish |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3461 | * between a user represented by an email address from |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3462 | * other forms of identification. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3463 | */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
3464 | static gboolean |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3465 | msim_is_email(const gchar *user) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3466 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3467 | g_return_val_if_fail(user != NULL, FALSE); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3468 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3469 | return strchr(user, '@') != NULL; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3470 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3471 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3472 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3473 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3474 | * Asynchronously lookup user information, calling callback when receive result. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3475 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3476 | * @param session |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3477 | * @param user The user id, email address, or username. Not freed. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3478 | * @param cb Callback, called with user information when available. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3479 | * @param data An arbitray data pointer passed to the callback. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3480 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3481 | /* TODO: change to not use callbacks */ |
|
18059
9dcbd6ed0b28
Make msimprpl-internal functions static.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18058
diff
changeset
|
3482 | static void |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3483 | msim_lookup_user(MsimSession *session, const gchar *user, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3484 | MSIM_USER_LOOKUP_CB cb, gpointer data) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3485 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3486 | MsimMessage *body; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3487 | gchar *field_name; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3488 | guint rid, cmd, dsn, lid; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3489 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3490 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3491 | g_return_if_fail(user != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3492 | g_return_if_fail(cb != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3493 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3494 | purple_debug_info("msim", "msim_lookup_userid: " |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3495 | "asynchronously looking up <%s>\n", user); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3496 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3497 | msim_msg_dump("msim_lookup_user: data=%s\n", (MsimMessage *)data); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3498 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3499 | /* Setup callback. Response will be associated with request using 'rid'. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3500 | rid = msim_new_reply_callback(session, cb, data); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3501 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3502 | /* Send request */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3503 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3504 | cmd = MSIM_CMD_GET; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3505 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3506 | if (msim_is_userid(user)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3507 | field_name = "UserID"; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3508 | dsn = MG_MYSPACE_INFO_BY_ID_DSN; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3509 | lid = MG_MYSPACE_INFO_BY_ID_LID; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3510 | } else if (msim_is_email(user)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3511 | field_name = "Email"; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3512 | dsn = MG_MYSPACE_INFO_BY_STRING_DSN; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3513 | lid = MG_MYSPACE_INFO_BY_STRING_LID; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3514 | } else { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3515 | field_name = "UserName"; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3516 | dsn = MG_MYSPACE_INFO_BY_STRING_DSN; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3517 | lid = MG_MYSPACE_INFO_BY_STRING_LID; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3518 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3519 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3520 | body = msim_msg_new( |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3521 | field_name, MSIM_TYPE_STRING, g_strdup(user), |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3522 | NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3523 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3524 | g_return_if_fail(msim_send(session, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3525 | "persist", MSIM_TYPE_INTEGER, 1, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3526 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3527 | "cmd", MSIM_TYPE_INTEGER, 1, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3528 | "dsn", MSIM_TYPE_INTEGER, dsn, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3529 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3530 | "lid", MSIM_TYPE_INTEGER, lid, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3531 | "rid", MSIM_TYPE_INTEGER, rid, |
|
19135
705302b2c7f7
Use the new dictionary data type when:
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19133
diff
changeset
|
3532 | "body", MSIM_TYPE_DICTIONARY, body, |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3533 | NULL)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3534 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3535 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3536 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3537 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3538 | * Obtain the status text for a buddy. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3539 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3540 | * @param buddy The buddy to obtain status text for. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3541 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3542 | * @return Status text, or NULL if error. Caller g_free()'s. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3543 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3544 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3545 | char * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3546 | msim_status_text(PurpleBuddy *buddy) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3547 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3548 | MsimSession *session; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3549 | const gchar *display_name, *headline; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3550 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3551 | g_return_val_if_fail(buddy != NULL, NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3552 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3553 | session = (MsimSession *)buddy->account->gc->proto_data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3554 | g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL); |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3555 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3556 | display_name = headline = NULL; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3557 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3558 | /* Retrieve display name and/or headline, depending on user preference. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3559 | if (purple_account_get_bool(session->account, "show_display_name", TRUE)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3560 | display_name = purple_blist_node_get_string(&buddy->node, "DisplayName"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3561 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3562 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3563 | if (purple_account_get_bool(session->account, "show_headline", FALSE)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3564 | headline = purple_blist_node_get_string(&buddy->node, "Headline"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3565 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3566 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3567 | /* Return appropriate combination of display name and/or headline, or neither. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3568 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3569 | if (display_name && headline) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3570 | return g_strconcat(display_name, " ", headline, NULL); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3571 | } |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3572 | |
|
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3573 | if (display_name) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3574 | return g_strdup(display_name); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3575 | } |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3576 | |
|
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3577 | if (headline) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3578 | return g_strdup(headline); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3579 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3580 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3581 | return NULL; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3582 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3583 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3584 | /** |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3585 | * Obtain the tooltip text for a buddy. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3586 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3587 | * @param buddy Buddy to obtain tooltip text on. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3588 | * @param user_info Variable modified to have the tooltip text. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3589 | * @param full TRUE if should obtain full tooltip text. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3590 | * |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3591 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3592 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3593 | msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3594 | gboolean full) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3595 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3596 | const gchar *str, *str2; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3597 | gint n; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3598 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3599 | g_return_if_fail(buddy != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3600 | g_return_if_fail(user_info != NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3601 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3602 | if (PURPLE_BUDDY_IS_ONLINE(buddy)) { |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3603 | MsimSession *session; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3604 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3605 | session = (MsimSession *)buddy->account->gc->proto_data; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3606 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3607 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3608 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3609 | /* TODO: if (full), do something different */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3610 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3611 | /* Useful to identify the account the tooltip refers to. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3612 | * Other prpls show this. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3613 | str = purple_blist_node_get_string(&buddy->node, "UserName"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3614 | if (str) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3615 | purple_notify_user_info_add_pair(user_info, _("User Name"), str); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3616 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3617 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3618 | /* a/s/l...the vitals */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3619 | n = purple_blist_node_get_int(&buddy->node, "Age"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3620 | if (n) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3621 | purple_notify_user_info_add_pair(user_info, _("Age"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3622 | g_strdup_printf("%d", n)); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3623 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3624 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3625 | str = purple_blist_node_get_string(&buddy->node, "Gender"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3626 | if (str) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3627 | purple_notify_user_info_add_pair(user_info, _("Gender"), str); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3628 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3629 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3630 | str = purple_blist_node_get_string(&buddy->node, "Location"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3631 | if (str) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3632 | purple_notify_user_info_add_pair(user_info, _("Location"), str); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3633 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3634 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3635 | /* Other information */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3636 | str = purple_blist_node_get_string(&buddy->node, "Headline"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3637 | if (str) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3638 | purple_notify_user_info_add_pair(user_info, _("Headline"), str); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3639 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3640 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3641 | str = purple_blist_node_get_string(&buddy->node, "BandName"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3642 | str2 = purple_blist_node_get_string(&buddy->node, "SongName"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3643 | if (str || str2) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3644 | purple_notify_user_info_add_pair(user_info, _("Song"), |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3645 | g_strdup_printf("%s - %s", |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3646 | str ? str : _("Unknown Artist"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3647 | str2 ? str2 : _("Unknown Song"))); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3648 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3649 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3650 | n = purple_blist_node_get_int(&buddy->node, "TotalFriends"); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3651 | if (n) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3652 | purple_notify_user_info_add_pair(user_info, _("Total Friends"), |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3653 | g_strdup_printf("%d", n)); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3654 | } |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3655 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3656 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3657 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3658 | |
|
18055
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3659 | /** Actions menu for account. */ |
|
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3660 | GList * |
|
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3661 | msim_actions(PurplePlugin *plugin, gpointer context) |
|
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3662 | { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3663 | PurpleConnection *gc; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3664 | GList *menu; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3665 | //PurplePluginAction *act; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3666 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3667 | gc = (PurpleConnection *)context; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3668 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3669 | menu = NULL; |
|
18055
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3670 | |
|
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3671 | #if 0 |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3672 | /* TODO: find out how */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3673 | act = purple_plugin_action_new(_("Find people..."), msim_); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3674 | menu = g_list_append(menu, act); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3675 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3676 | act = purple_plugin_action_new(_("Import friends..."), NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3677 | menu = g_list_append(menu, act); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3678 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3679 | act = purple_plugin_action_new(_("Change IM name..."), NULL); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3680 | menu = g_list_append(menu, act); |
|
18055
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3681 | #endif |
|
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3682 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3683 | return menu; |
|
18055
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3684 | } |
|
ed3a5b60eff6
Use MsimMessage's new list type for status messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18053
diff
changeset
|
3685 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3686 | /** Callbacks called by Purple, to access this plugin. */ |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3687 | PurplePluginProtocolInfo prpl_info = { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3688 | /* options */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3689 | OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ |
|
18038
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
3690 | | OPT_PROTO_MAIL_CHECK, |
|
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
3691 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3692 | /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3693 | NULL, /* user_splits */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3694 | NULL, /* protocol_options */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3695 | NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3696 | msim_list_icon, /* list_icon */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3697 | NULL, /* list_emblems */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3698 | msim_status_text, /* status_text */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3699 | msim_tooltip_text, /* tooltip_text */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3700 | msim_status_types, /* status_types */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3701 | msim_blist_node_menu, /* blist_node_menu */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3702 | NULL, /* chat_info */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3703 | NULL, /* chat_info_defaults */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3704 | msim_login, /* login */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3705 | msim_close, /* close */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3706 | msim_send_im, /* send_im */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3707 | NULL, /* set_info */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3708 | msim_send_typing, /* send_typing */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3709 | msim_get_info, /* get_info */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3710 | msim_set_status, /* set_status */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3711 | msim_set_idle, /* set_idle */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3712 | NULL, /* change_passwd */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3713 | msim_add_buddy, /* add_buddy */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3714 | NULL, /* add_buddies */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3715 | msim_remove_buddy, /* remove_buddy */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3716 | NULL, /* remove_buddies */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3717 | NULL, /* add_permit */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3718 | NULL, /* add_deny */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3719 | NULL, /* rem_permit */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3720 | NULL, /* rem_deny */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3721 | NULL, /* set_permit_deny */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3722 | NULL, /* join_chat */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3723 | NULL, /* reject chat invite */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3724 | NULL, /* get_chat_name */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3725 | NULL, /* chat_invite */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3726 | NULL, /* chat_leave */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3727 | NULL, /* chat_whisper */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3728 | NULL, /* chat_send */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3729 | NULL, /* keepalive */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3730 | NULL, /* register_user */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3731 | NULL, /* get_cb_info */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3732 | NULL, /* get_cb_away */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3733 | NULL, /* alias_buddy */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3734 | NULL, /* group_buddy */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3735 | NULL, /* rename_group */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3736 | NULL, /* buddy_free */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3737 | NULL, /* convo_closed */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3738 | NULL, /* normalize */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3739 | NULL, /* set_buddy_icon */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3740 | NULL, /* remove_group */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3741 | NULL, /* get_cb_real_name */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3742 | NULL, /* set_chat_topic */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3743 | NULL, /* find_blist_chat */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3744 | NULL, /* roomlist_get_list */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3745 | NULL, /* roomlist_cancel */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3746 | NULL, /* roomlist_expand_category */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3747 | NULL, /* can_receive_file */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3748 | NULL, /* send_file */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3749 | NULL, /* new_xfer */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3750 | msim_offline_message, /* offline_message */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3751 | NULL, /* whiteboard_prpl_ops */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3752 | msim_send_really_raw, /* send_raw */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3753 | NULL, /* roomlist_room_serialize */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3754 | NULL, /* _purple_reserved1 */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3755 | NULL, /* _purple_reserved2 */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3756 | NULL, /* _purple_reserved3 */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3757 | NULL /* _purple_reserved4 */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3758 | }; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3759 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3760 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3761 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3762 | /** Based on MSN's plugin info comments. */ |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3763 | PurplePluginInfo info = { |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3764 | PURPLE_PLUGIN_MAGIC, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3765 | PURPLE_MAJOR_VERSION, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3766 | PURPLE_MINOR_VERSION, |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3767 | PURPLE_PLUGIN_PROTOCOL, /**< type */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3768 | NULL, /**< ui_requirement */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3769 | 0, /**< flags */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3770 | NULL, /**< dependencies */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3771 | PURPLE_PRIORITY_DEFAULT, /**< priority */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3772 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3773 | "prpl-myspace", /**< id */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3774 | "MySpaceIM", /**< name */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3775 | MSIM_PRPL_VERSION_STRING, /**< version */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3776 | /** summary */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3777 | "MySpaceIM Protocol Plugin", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3778 | /** description */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3779 | "MySpaceIM Protocol Plugin", |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3780 | "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3781 | "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3782 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3783 | msim_load, /**< load */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3784 | NULL, /**< unload */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3785 | NULL, /**< destroy */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3786 | NULL, /**< ui_info */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3787 | &prpl_info, /**< extra_info */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3788 | NULL, /**< prefs_info */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3789 | msim_actions, /**< msim_actions */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3790 | NULL, /**< reserved1 */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3791 | NULL, /**< reserved2 */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3792 | NULL, /**< reserved3 */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3793 | NULL /**< reserved4 */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3794 | }; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3795 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3796 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3797 | #ifdef MSIM_SELF_TEST |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3798 | /** Test functions. |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3799 | * Used to test or try out the internal workings of msimprpl. If you're reading |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3800 | * this code for the first time, these functions can be instructive in learning |
|
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3801 | * how msimprpl is architected. |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3802 | */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3803 | void |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3804 | msim_test_all(void) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3805 | guint failures; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3806 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3807 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3808 | failures = 0; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3809 | failures += msim_test_msg(); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3810 | failures += msim_test_escaping(); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3811 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3812 | if (failures) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3813 | purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3814 | } else { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3815 | purple_debug_info("msim", "msim_test_all - all tests passed!\n"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3816 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3817 | exit(0); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3818 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3819 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3820 | /** Test MsimMessage for basic functionality. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3821 | int |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3822 | msim_test_msg(void) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3823 | { |
|
19133
81e7c23bbb7f
In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18066
diff
changeset
|
3824 | MsimMessage *msg, *msg_cloned, *msg2; |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3825 | GList *list; |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3826 | gchar *packed, *packed_expected, *packed_cloned; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3827 | guint failures; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3828 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3829 | failures = 0; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3830 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3831 | purple_debug_info("msim", "\n\nTesting MsimMessage\n"); |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3832 | msg = msim_msg_new(NULL); /* Create a new, empty message. */ |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3833 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3834 | /* Append some new elements. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3835 | msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len(g_strdup("XXX"), 3)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3836 | msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3837 | msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42)); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3838 | msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3839 | msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3840 | msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7")); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3841 | msim_msg_dump("msg debug str=%s\n", msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3842 | packed = msim_msg_pack(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3843 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3844 | purple_debug_info("msim", "msg packed=%s\n", packed); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3845 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3846 | packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1" |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3847 | "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\"; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3848 | |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3849 | if (0 != strcmp(packed, packed_expected)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3850 | purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3851 | ++failures, packed, packed_expected); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3852 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3853 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3854 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3855 | msg_cloned = msim_msg_clone(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3856 | packed_cloned = msim_msg_pack(msg_cloned); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3857 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3858 | purple_debug_info("msim", "msg cloned=%s\n", packed_cloned); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3859 | if (0 != strcmp(packed, packed_cloned)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3860 | purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3861 | ++failures, packed_cloned, packed); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3862 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3863 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3864 | g_free(packed); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3865 | g_free(packed_cloned); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3866 | msim_msg_free(msg_cloned); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3867 | msim_msg_free(msg); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3868 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3869 | /* Try some of the more advanced functionality */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3870 | list = NULL; |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3871 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3872 | list = g_list_prepend(list, "item3"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3873 | list = g_list_prepend(list, "item2"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3874 | list = g_list_prepend(list, "item1"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3875 | list = g_list_prepend(list, "item0"); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3876 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3877 | msg = msim_msg_new(NULL); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3878 | msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3879 | msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3880 | msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3881 | msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3882 | msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3883 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3884 | msim_msg_dump("msg with list=%s\n", msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3885 | purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3886 | |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3887 | msg2 = msim_msg_new(NULL); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3888 | msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value")); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3889 | msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3890 | msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3891 | purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2)); |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3892 | |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3893 | msim_msg_free(msg2); |
|
19133
81e7c23bbb7f
In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18066
diff
changeset
|
3894 | |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3895 | return failures; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3896 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3897 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3898 | /** Test protocol-level escaping/unescaping. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3899 | int |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3900 | msim_test_escaping(void) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3901 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3902 | guint failures; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3903 | gchar *raw, *escaped, *unescaped, *expected; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3904 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3905 | failures = 0; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3906 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3907 | purple_debug_info("msim", "\n\nTesting escaping\n"); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3908 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3909 | raw = "hello/world\\hello/world"; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3910 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3911 | escaped = msim_escape(raw); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3912 | purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3913 | expected = "hello/1world/2hello/1world"; |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3914 | if (0 != strcmp(escaped, expected)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3915 | purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3916 | ++failures, escaped, expected); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3917 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3918 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3919 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3920 | unescaped = msim_unescape(escaped); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3921 | g_free(escaped); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3922 | purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped); |
|
19144
3868ddc14400
Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19139
diff
changeset
|
3923 | if (0 != strcmp(raw, unescaped)) { |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3924 | purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n", |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3925 | ++failures, raw, unescaped); |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3926 | } |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3927 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3928 | return failures; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3929 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3930 | #endif |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3931 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3932 | /** Initialize plugin. */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3933 | void |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3934 | init_plugin(PurplePlugin *plugin) |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3935 | { |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3936 | PurpleAccountOption *option; |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3937 | #ifdef MSIM_SELF_TEST |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3938 | msim_test_all(); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3939 | #endif /* MSIM_SELF_TEST */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3940 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3941 | /* TODO: default to automatically try different ports. Make the user be |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3942 | * able to set the first port to try (like LastConnectedPort in Windows client). */ |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3943 | option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3944 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3945 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3946 | option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3947 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3948 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3949 | option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3950 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3951 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3952 | option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE); |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3953 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
3954 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3955 | option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", FALSE); |
|
18048
c8f29e1916c2
Add account option to send emoticons, defaulting to off since can't currently
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18047
diff
changeset
|
3956 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
c8f29e1916c2
Add account option to send emoticons, defaulting to off since can't currently
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18047
diff
changeset
|
3957 | |
|
18057
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
3958 | #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3959 | option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI); |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
3960 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
3961 | |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19148
diff
changeset
|
3962 | option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
|
18042
390fbe2a4e87
Make DPI and base font point size configurable in account options. This
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18041
diff
changeset
|
3963 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
18057
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
3964 | #endif |
|
19151
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3965 | |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3966 | /* TODO: /zap command. Problem with this is that there are different kinds of zaps, |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3967 | * and the selection is best made available in a drop-down menu, instead of forcing |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3968 | * the user to type the kind of zap and memorizing available zaps (or putting it in the |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3969 | * help menu). A new "attention" API, for zap/buzz/nudge (different protocols) will |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3970 | * solve this. */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3971 | #if 0 |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3972 | purple_cmd_register("zap", /* cmd */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3973 | "w", /* args - accept a single word */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3974 | PURPLE_CMD_P_PRPL, /* priority */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3975 | PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY, /* flags */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3976 | "prpl-myspace", /* prpl_id */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3977 | msim_cmd_zap, /* func */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3978 | _("zap: zap a user to get their attention"), /* helpstr */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3979 | NULL); /* data */ |
|
6bf2cdffc98e
Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19149
diff
changeset
|
3980 | #endif |
|
18026
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3981 | } |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3982 | |
|
dec27c05ae89
Set status to current status when signing on. This makes the "Sign in as
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18025
diff
changeset
|
3983 | PURPLE_INIT_PLUGIN(myspace, init_plugin, info); |