libpurple/protocols/msn/command.c

branch
cpw.qulogic.msn
changeset 23826
3eeaac42358f
parent 23806
ef4e97200434
child 23842
5d868d301756
equal deleted inserted replaced
23825:14d0003d03fd 23826:3eeaac42358f
34 } 34 }
35 35
36 return TRUE; 36 return TRUE;
37 } 37 }
38 38
39 /*
40 * check the command is the command with payload content
41 * if it is return TRUE
42 * else return FALSE
43 */
44 static gboolean
45 msn_check_payload_cmd(const char *str)
46 {
47 g_return_val_if_fail(str != NULL, FALSE);
48
49 if((!strcmp(str,"ADL")) ||
50 (!strcmp(str,"GCF")) ||
51 (!strcmp(str,"SG")) ||
52 (!strcmp(str,"MSG")) ||
53 (!strcmp(str,"RML")) ||
54 (!strcmp(str,"UBX")) ||
55 (!strcmp(str,"UBN")) ||
56 (!strcmp(str,"UUM")) ||
57 (!strcmp(str,"UBM")) ||
58 (!strcmp(str,"FQY")) ||
59 (!strcmp(str,"UUN")) ||
60 (!strcmp(str,"UUX")) ||
61 (!strcmp(str,"IPG")) ||
62 (is_num(str))){
63 return TRUE;
64 }
65
66 return FALSE;
67 }
68
69 /*
70 * set command Payload length
71 */
72 static gboolean
73 msn_set_payload_len(MsnCommand *cmd)
74 {
75 char *param;
76 int len = 0;
77 gboolean has_payload = FALSE;
78
79 if (msn_check_payload_cmd(cmd->command) && (cmd->param_count > 0)){
80 param = cmd->params[cmd->param_count - 1];
81 len = is_num(param) ? atoi(param) : 0;
82 has_payload = TRUE;
83 }
84
85 cmd->payload_len = len;
86
87 return has_payload;
88 }
89
90 MsnCommand * 39 MsnCommand *
91 msn_command_from_string(const char *string) 40 msn_command_from_string(const char *string)
92 { 41 {
93 MsnCommand *cmd; 42 MsnCommand *cmd;
94 char *param_start; 43 char *param_start;
121 } 70 }
122 else 71 else
123 { 72 {
124 cmd->trId = 0; 73 cmd->trId = 0;
125 } 74 }
126
127 /* khc: Huh! */
128 /*add payload Length checking*/
129 if (msn_set_payload_len(cmd))
130 purple_debug_info("MSNP14","get payload len:%" G_GSIZE_FORMAT "\n", cmd->payload_len);
131 75
132 msn_command_ref(cmd); 76 msn_command_ref(cmd);
133 77
134 return cmd; 78 return cmd;
135 } 79 }

mercurial