libpurple/protocols/msn/state.c

Sun, 16 Sep 2007 17:52:49 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Sun, 16 Sep 2007 17:52:49 +0000
branch
cpw.khc.msnp14
changeset 20591
8469ac3acbec
parent 20590
633c12c90fd7
child 20597
69b6246d3f94
permissions
-rw-r--r--

Various (untested) changes to the CurrentMedia parsing. This code is a
little less pretty than what I wrote, but it also has the advantage of
being less clever. It walks the string character-by-character, which may
be easier to understand than mine which uses strchr().

5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file state.c State functions and definitions
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
8 * source distribution.
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 5824
diff changeset
9 *
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * (at your option) any later version.
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 *
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * GNU General Public License for more details.
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 *
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 #include "msn.h"
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 #include "state.h"
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
27 static const char *away_text[] =
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 {
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 N_("Available"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 N_("Available"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 N_("Busy"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
32 N_("Idle"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33 N_("Be Right Back"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34 N_("Away From Computer"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 N_("On The Phone"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36 N_("Out To Lunch"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 N_("Available"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38 N_("Available")
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
39 };
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
40
13866
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
41 /* Local Function Prototype*/
20474
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
42 static char *msn_build_psm(const char *psmstr,const char *mediastr,
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
43 const char *guidstr);
13866
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
44
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
45 /*
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
46 * WLM media PSM info build prcedure
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
47 *
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
48 * Result can like:
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
49 * <CurrentMedia>\0Music\01\0{0} - {1}\0Song Title\0Song Artist\0Song Album\0\0</CurrentMedia>\
13866
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
50 * <CurrentMedia>\0Games\01\0Playing {0}\0Game Name\0</CurrentMedia>\
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
51 * <CurrentMedia>\0Office\01\0Office Message\0Office App Name\0</CurrentMedia>"
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
52 */
20474
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
53 static char *
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
54 msn_build_psm(const char *psmstr,const char *mediastr, const char *guidstr)
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
55 {
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
56 xmlnode *dataNode,*psmNode,*mediaNode,*guidNode;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
57 char *result;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
58 int length;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
59
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
60 dataNode = xmlnode_new("Data");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
61
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
62 psmNode = xmlnode_new("PSM");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
63 if(psmstr != NULL){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
64 xmlnode_insert_data(psmNode,psmstr,strlen(psmstr));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
65 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
66 xmlnode_insert_child(dataNode,psmNode);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
67
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
68 mediaNode = xmlnode_new("CurrentMedia");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
69 if(mediastr != NULL){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
70 xmlnode_insert_data(psmNode,mediastr,strlen(mediastr));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
71 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
72 xmlnode_insert_child(dataNode,mediaNode);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
73
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
74 guidNode = xmlnode_new("MachineGuid");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
75 if(guidstr != NULL){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
76 xmlnode_insert_data(guidNode,guidstr,strlen(guidstr));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
77 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
78 xmlnode_insert_child(dataNode,guidNode);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
79
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
80 result = xmlnode_to_str(dataNode,&length);
20574
41544383ab30 Plug some leak.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20551
diff changeset
81 xmlnode_free(dataNode);
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
82 return result;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
83 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
84
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
85 /* parse CurrentMedia string */
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
86 char *
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
87 msn_parse_currentmedia(const char *cmedia)
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
88 {
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
89 char **cmedia_array;
20590
633c12c90fd7 Ignore empty currentmedia string.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20589
diff changeset
90 GString *buffer = NULL;
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
91 int strings;
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
92
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
93 if ((cmedia == NULL) || (*cmedia == '\0')) {
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
94 purple_debug_info("msn", "No currentmedia string\n");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
95 return NULL;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
96 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
97
20522
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20508
diff changeset
98 purple_debug_info("msn", "Parsing currentmedia string: \"%s\"\n", cmedia);
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20508
diff changeset
99
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
100 cmedia_array = g_strsplit(cmedia, "\\0", 0);
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
101
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
102 strings = 0;
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
103 /* Yes, we want to skip the first element here, as it is empty due to
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
104 * the cmedia string starting with \0 -- see the examples below.
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
105 while (cmedia_array[++strings] != NULL);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
106
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
107 /* The cmedia_array[2] field contains a 1 if enabled. */
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
108 if ((strings > 3) && (!strcmp(cmedia_array[2], "1"))) {
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
109 char *inptr = cmedia_array[3];
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
110
20590
633c12c90fd7 Ignore empty currentmedia string.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20589
diff changeset
111 buffer = g_string_new(NULL);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
112
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
113 while (*inptr != '\0') {
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
114 if ((*inptr == '{') && ((*(inptr + 1) != '\0') && (*(inptr+2) == '}')) {
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
115 char *tmpptr;
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
116 int tmp;
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
117
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
118 errno = 0;
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
119 tmp = strtol(inptr + 1, &tmpptr, 10);
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
120
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
121 if (errno == 0 && tmpptr != inptr + 1 &&
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
122 tmp + 4 < strings) {
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
123 /* Replace {?} tag with appropriate text only when successful.
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
124 * Skip otherwise. */
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
125 buffer = g_string_append(buffer, cmedia_array[tmp + 4]);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
126 }
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
127 inptr += 3; /* Skip to the next char after '}' */
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
128 } else {
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
129 buffer = g_string_append_c(buffer, *inptr++);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
130 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
131 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
132 purple_debug_info("msn", "Parsed currentmedia string, result: \"%s\"\n",
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
133 buffer->str);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
134 } else {
20591
8469ac3acbec Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents: 20590
diff changeset
135 purple_debug_info("msn", "Current media marked disabled, not parsing.\n");
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
136 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
137
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
138 g_strfreev(cmedia_array);
20590
633c12c90fd7 Ignore empty currentmedia string.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20589
diff changeset
139 return buffer ? g_string_free(buffer, FALSE) : NULL;
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
140 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
141
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
142 /* get the CurrentMedia info from the XML string */
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
143 char *
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
144 msn_get_currentmedia(char *xml_str, gsize len)
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
145 {
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
146 xmlnode *payloadNode, *currentmediaNode;
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
147 char *currentmedia;
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
148
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
149 purple_debug_info("msn","msn get CurrentMedia\n");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
150 payloadNode = xmlnode_from_str(xml_str, len);
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
151 if (!payloadNode){
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
152 purple_debug_error("msn","PSM XML parse Error!\n");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
153 return NULL;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
154 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
155 currentmediaNode = xmlnode_get_child(payloadNode, "CurrentMedia");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
156 if (currentmediaNode == NULL){
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
157 purple_debug_info("msn","No CurrentMedia Node");
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
158 xmlnode_free(payloadNode);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
159 return NULL;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
160 }
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
161 currentmedia = xmlnode_get_data(currentmediaNode);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
162
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
163 xmlnode_free(payloadNode);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
164
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
165 return currentmedia;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
166 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
167
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
168 /*get the PSM info from the XML string*/
20474
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
169 char *
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
170 msn_get_psm(char *xml_str, gsize len)
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
171 {
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
172 xmlnode *payloadNode, *psmNode;
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
173 char *psm;
13889
1030d616ee64 [gaim-migrate @ 17004]
Ma Yuan <mayuan2006@gmail.com>
parents: 13888
diff changeset
174
20550
af5abde0d99f Misc cleanups, better error handling, and print the Address Book received from the server in a human readable way.
Carlos Silva <typ0@pidgin.im>
parents: 20522
diff changeset
175 purple_debug_info("MSNP14","msn get PSM\n");
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
176 payloadNode = xmlnode_from_str(xml_str, len);
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
177 if (!payloadNode){
20550
af5abde0d99f Misc cleanups, better error handling, and print the Address Book received from the server in a human readable way.
Carlos Silva <typ0@pidgin.im>
parents: 20522
diff changeset
178 purple_debug_error("MSNP14","PSM XML parse Error!\n");
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
179 return NULL;
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
180 }
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
181 psmNode = xmlnode_get_child(payloadNode, "PSM");
13889
1030d616ee64 [gaim-migrate @ 17004]
Ma Yuan <mayuan2006@gmail.com>
parents: 13888
diff changeset
182 if (psmNode == NULL){
20550
af5abde0d99f Misc cleanups, better error handling, and print the Address Book received from the server in a human readable way.
Carlos Silva <typ0@pidgin.im>
parents: 20522
diff changeset
183 purple_debug_info("MSNP14","No PSM status Node");
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
184 xmlnode_free(payloadNode);
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
185 return NULL;
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
186 }
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
187 psm = xmlnode_get_data(psmNode);
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
188
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
189 xmlnode_free(payloadNode);
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
190
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
191 return psm;
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
192 }
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
193
13891
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
194 /* set the MSN's PSM info,Currently Read from the status Line
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
195 * Thanks for Cris Code
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
196 */
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
197 void
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
198 msn_set_psm(MsnSession *session)
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
199 {
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
200 PurpleAccount *account = session->account;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
201 PurplePresence *presence;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
202 PurpleStatus *status;
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
203 MsnCmdProc *cmdproc;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
204 MsnTransaction *trans;
20474
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
205 char *payload;
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
206 const char *statusline;
20551
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
207 gchar *unescapedstatusline;
13891
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
208
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
209 g_return_if_fail(session != NULL);
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
210 g_return_if_fail(session->notification != NULL);
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
211
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
212 cmdproc = session->notification->cmdproc;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
213 /*prepare PSM info*/
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
214 if(session->psm){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
215 g_free(session->psm);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
216 }
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
217 /*Get the PSM string from Purple's Status Line*/
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
218 presence = purple_account_get_presence(account);
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
219 status = purple_presence_get_active_status(presence);
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
220 statusline = purple_status_get_attr_string(status, "message");
20551
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
221 unescapedstatusline = purple_unescape_html(statusline);
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
222 session->psm = msn_build_psm(unescapedstatusline, NULL, NULL);
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
223 g_free(unescapedstatusline);
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
224 payload = session->psm;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
225
20551
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
226 purple_debug_misc("MSNP14","Sending UUX command with payload: %s\n",payload);
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
227 trans = msn_transaction_new(cmdproc, "UUX","%d",strlen(payload));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
228 msn_transaction_set_payload(trans, payload, strlen(payload));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
229 msn_cmdproc_send_trans(cmdproc, trans);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
230 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
231
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
232 void
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
233 msn_change_status(MsnSession *session)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
234 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
235 PurpleAccount *account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
236 MsnCmdProc *cmdproc;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
237 MsnUser *user;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
238 MsnObject *msnobj;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
239 const char *state_text;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
240
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9262
diff changeset
241 g_return_if_fail(session != NULL);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9262
diff changeset
242 g_return_if_fail(session->notification != NULL);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9262
diff changeset
243
14453
1cc75906700c [gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
244 account = session->account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
245 cmdproc = session->notification->cmdproc;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
246 user = session->user;
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
247 state_text = msn_state_get_text(msn_state_from_account(account));
10908
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
248
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
249 /* If we're not logged in yet, don't send the status to the server,
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
250 * it will be sent when login completes
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
251 */
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
252 if (!session->logged_in)
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
253 return;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
254
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
255 msnobj = msn_user_get_object(user);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
256
20508
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
257 if (msnobj == NULL)
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
258 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
259 msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
260 MSN_CLIENT_ID);
20508
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
261 }
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
262 else
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
263 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
264 char *msnobj_str;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
265
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
266 msnobj_str = msn_object_to_string(msnobj);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
267
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
268 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
269 MSN_CLIENT_ID, purple_url_encode(msnobj_str));
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
270
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
271 g_free(msnobj_str);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
272 }
13891
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
273 msn_set_psm(session);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
274 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
275
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
276 const char *
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
277 msn_away_get_text(MsnAwayType type)
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 {
7631
0e9e516bb6c3 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 6701
diff changeset
279 g_return_val_if_fail(type <= MSN_HIDDEN, NULL);
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280
5824
cbae51183b18 [gaim-migrate @ 6254]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5361
diff changeset
281 return _(away_text[type]);
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
283
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
284 const char *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
285 msn_state_get_text(MsnAwayType state)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
286 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
287 static char *status_text[] =
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
288 { "NLN", "NLN", "BSY", "IDL", "BRB", "AWY", "PHN", "LUN", "HDN", "HDN" };
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
289
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
290 return status_text[state];
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
291 }
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
292
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
293 MsnAwayType
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
294 msn_state_from_account(PurpleAccount *account)
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
295 {
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
296 MsnAwayType msnstatus;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
297 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
298 PurpleStatus *status;
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
299 const char *status_id;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
300
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
301 presence = purple_account_get_presence(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
302 status = purple_presence_get_active_status(presence);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
303 status_id = purple_status_get_id(status);
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
304
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
305 if (!strcmp(status_id, "away"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
306 msnstatus = MSN_AWAY;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
307 else if (!strcmp(status_id, "brb"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
308 msnstatus = MSN_BRB;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
309 else if (!strcmp(status_id, "busy"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
310 msnstatus = MSN_BUSY;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
311 else if (!strcmp(status_id, "phone"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
312 msnstatus = MSN_PHONE;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
313 else if (!strcmp(status_id, "lunch"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
314 msnstatus = MSN_LUNCH;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
315 else if (!strcmp(status_id, "invisible"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
316 msnstatus = MSN_HIDDEN;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
317 else
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
318 msnstatus = MSN_ONLINE;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
319
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
320 if ((msnstatus == MSN_ONLINE) && purple_presence_is_idle(presence))
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
321 msnstatus = MSN_IDLE;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
322
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
323 return msnstatus;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
324 }

mercurial