libpurple/protocols/msn/command.c

Sun, 16 Sep 2007 18:03:53 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Sun, 16 Sep 2007 18:03:53 +0000
branch
cpw.khc.msnp14
changeset 20597
69b6246d3f94
parent 20550
af5abde0d99f
parent 19859
71d37b57eff2
child 20844
55f8b930a3f6
permissions
-rw-r--r--

explicit merge of '71d37b57eff2574031b2bbf1a2388ae1446db2da'
and '506f2256bc5e147c89cabba15e2865b28fe4ea9e'

8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file command.c MSN command functions
2240097956a7 [gaim-migrate @ 9572]
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
8810
2240097956a7 [gaim-migrate @ 9572]
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.
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 *
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * (at your option) any later version.
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 *
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * GNU General Public License for more details.
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 *
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 15884
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 #include "msn.h"
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 #include "command.h"
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26
11897
10853b830964 [gaim-migrate @ 14188]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9198
diff changeset
27 static gboolean
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 is_num(char *str)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 char *c;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 for (c = str; *c; c++) {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
32 if (!(g_ascii_isdigit(*c)))
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33 return FALSE;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34 }
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36 return TRUE;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 }
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
39 /*
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
40 * check the command is the command with payload content
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
41 * if it is return TRUE
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
42 * else return FALSE
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
43 */
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
44 static gboolean
13854
ab947cf0c2bb [gaim-migrate @ 16473]
Ma Yuan <mayuan2006@gmail.com>
parents: 13853
diff changeset
45 msn_check_payload_cmd(char *str)
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
46 {
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
47 if( (!strcmp(str,"ADL")) ||
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
48 (!strcmp(str,"GCF")) ||
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 13855
diff changeset
49 (!strcmp(str,"SG")) ||
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
50 (!strcmp(str,"MSG")) ||
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
51 (!strcmp(str,"RML")) ||
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
52 (!strcmp(str,"UBX")) ||
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
53 (!strcmp(str,"UBN")) ||
13870
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
54 (!strcmp(str,"UUM")) ||
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
55 (!strcmp(str,"UBM")) ||
13873
3c20f5d70d1d [gaim-migrate @ 16772]
Ma Yuan <mayuan2006@gmail.com>
parents: 13870
diff changeset
56 (!strcmp(str,"FQY")) ||
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
57 (!strcmp(str,"UUN")) ||
20522
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
58 (!strcmp(str,"UUX")) ||
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
59 (is_num(str))){
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
60 return TRUE;
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
61 }
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
62
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
63 return FALSE;
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
64 }
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
65
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
66 /*
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
67 * set command Payload length
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
68 */
20522
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
69 static void
13854
ab947cf0c2bb [gaim-migrate @ 16473]
Ma Yuan <mayuan2006@gmail.com>
parents: 13853
diff changeset
70 msn_set_payload_len(MsnCommand *cmd)
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
71 {
20522
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
72 char *param;
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
73 int len = 0;
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
74
20522
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
75 if (msn_check_payload_cmd(cmd->command) && (cmd->param_count > 0)){
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
76 param = cmd->params[cmd->param_count - 1];
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
77 len = is_num(param) ? atoi(param) : 0;
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
78 }
20522
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
79
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20521
diff changeset
80 cmd->payload_len = len;
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
81 }
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
82
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 MsnCommand *
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 msn_command_from_string(const char *string)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 MsnCommand *cmd;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 char *tmp;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 char *param_start;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 g_return_val_if_fail(string != NULL, NULL);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 tmp = g_strdup(string);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 param_start = strchr(tmp, ' ');
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 cmd = g_new0(MsnCommand, 1);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 cmd->command = tmp;
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
97
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 if (param_start)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 {
14916
76caac9890c5 [gaim-migrate @ 17623]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
100 *param_start++ = '\0';
76caac9890c5 [gaim-migrate @ 17623]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
101 cmd->params = g_strsplit(param_start, " ", 0);
76caac9890c5 [gaim-migrate @ 17623]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
102 }
76caac9890c5 [gaim-migrate @ 17623]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
103
76caac9890c5 [gaim-migrate @ 17623]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
104 if (cmd->params != NULL)
76caac9890c5 [gaim-migrate @ 17623]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
105 {
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
106 char *param;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
107 int c;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109 for (c = 0; cmd->params[c]; c++);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 cmd->param_count = c;
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
111
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 param = cmd->params[0];
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 cmd->trId = is_num(param) ? atoi(param) : 0;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115 }
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116 else
20479
03c44889c50f Revert some whitespace changes.
Richard Laager <rlaager@pidgin.im>
parents: 20473
diff changeset
117 {
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118 cmd->trId = 0;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
119 }
20473
91e1b3a49d10 msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
120
13853
cccd9dd599eb [gaim-migrate @ 16329]
Ma Yuan <mayuan2006@gmail.com>
parents: 12250
diff changeset
121 /*add payload Length checking*/
13854
ab947cf0c2bb [gaim-migrate @ 16473]
Ma Yuan <mayuan2006@gmail.com>
parents: 13853
diff changeset
122 msn_set_payload_len(cmd);
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
123 purple_debug_info("MSNP14","get payload len:%d\n",cmd->payload_len);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
124
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125 msn_command_ref(cmd);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
126
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
127 return cmd;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
128 }
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130 void
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
131 msn_command_destroy(MsnCommand *cmd)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
132 {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
133 g_return_if_fail(cmd != NULL);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
134
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
135 if (cmd->ref_count > 0)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136 {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
137 msn_command_unref(cmd);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
138 return;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8810
diff changeset
140
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8810
diff changeset
141 if (cmd->payload != NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8810
diff changeset
142 g_free(cmd->payload);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8810
diff changeset
143
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
144 g_free(cmd->command);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
145 g_strfreev(cmd->params);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
146 g_free(cmd);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
147 }
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
148
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
149 MsnCommand *
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
150 msn_command_ref(MsnCommand *cmd)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
151 {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
152 g_return_val_if_fail(cmd != NULL, NULL);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
153
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
154 cmd->ref_count++;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
155 return cmd;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 }
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
157
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
158 MsnCommand *
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
159 msn_command_unref(MsnCommand *cmd)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
160 {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
161 g_return_val_if_fail(cmd != NULL, NULL);
12250
5b14301dd1ec [gaim-migrate @ 14552]
Richard Laager <rlaager@pidgin.im>
parents: 11897
diff changeset
162 g_return_val_if_fail(cmd->ref_count > 0, NULL);
8810
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
163
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
164 cmd->ref_count--;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
165
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
166 if (cmd->ref_count == 0)
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
167 {
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
168 msn_command_destroy(cmd);
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
169 return NULL;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
170 }
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
171
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
172 return cmd;
2240097956a7 [gaim-migrate @ 9572]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
173 }

mercurial