Mercurial > pidgin
comparison src/cmds.c @ 14035:8bda65b88e49
[gaim-migrate @ 16638]
A bunch of small changes. Mostly remove "if not null" checks before
calling g_free, g_list_free, g_slist_free and g_strdup. Also use
g_list_foreach() to call g_free to free strings in an array. And
some whitespace changes here and there.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 05 Aug 2006 08:27:39 +0000 |
parents | bdf8081b1bc1 |
children |
comparison
equal
deleted
inserted
replaced
14034:0839a7b71325 | 14035:8bda65b88e49 |
---|---|
69 c->id = id; | 69 c->id = id; |
70 c->cmd = g_strdup(cmd); | 70 c->cmd = g_strdup(cmd); |
71 c->args = g_strdup(args); | 71 c->args = g_strdup(args); |
72 c->priority = p; | 72 c->priority = p; |
73 c->flags = f; | 73 c->flags = f; |
74 c->prpl_id = prpl_id ? g_strdup(prpl_id) : NULL; | 74 c->prpl_id = g_strdup(prpl_id); |
75 c->func = func; | 75 c->func = func; |
76 c->help = helpstr ? g_strdup(helpstr) : NULL; | 76 c->help = g_strdup(helpstr); |
77 c->data = data; | 77 c->data = data; |
78 | 78 |
79 cmds = g_list_insert_sorted(cmds, c, (GCompareFunc)cmds_compare_func); | 79 cmds = g_list_insert_sorted(cmds, c, (GCompareFunc)cmds_compare_func); |
80 | 80 |
81 return id; | 81 return id; |
83 | 83 |
84 static void gaim_cmd_free(GaimCmd *c) | 84 static void gaim_cmd_free(GaimCmd *c) |
85 { | 85 { |
86 g_free(c->cmd); | 86 g_free(c->cmd); |
87 g_free(c->args); | 87 g_free(c->args); |
88 if (c->prpl_id) | 88 g_free(c->prpl_id); |
89 g_free(c->prpl_id); | 89 g_free(c->help); |
90 if (c->help) | |
91 g_free(c->help); | |
92 | |
93 g_free(c); | 90 g_free(c); |
94 } | 91 } |
95 | 92 |
96 void gaim_cmd_unregister(GaimCmdId id) | 93 void gaim_cmd_unregister(GaimCmdId id) |
97 { | 94 { |
107 return; | 104 return; |
108 } | 105 } |
109 } | 106 } |
110 } | 107 } |
111 | 108 |
109 /** | |
110 * This sets args to a NULL-terminated array of strings. It should | |
111 * be freed using g_strfreev(). | |
112 */ | |
112 static gboolean gaim_cmd_parse_args(GaimCmd *cmd, const gchar *s, const gchar *m, gchar ***args) | 113 static gboolean gaim_cmd_parse_args(GaimCmd *cmd, const gchar *s, const gchar *m, gchar ***args) |
113 { | 114 { |
114 int i; | 115 int i; |
115 const char *end, *cur; | 116 const char *end, *cur; |
116 | 117 |
140 cur = end; | 141 cur = end; |
141 } else { | 142 } else { |
142 (*args)[i] = gaim_markup_slice(m, g_utf8_pointer_to_offset(s, cur), g_utf8_pointer_to_offset(s, end)); | 143 (*args)[i] = gaim_markup_slice(m, g_utf8_pointer_to_offset(s, cur), g_utf8_pointer_to_offset(s, end)); |
143 cur = end +1; | 144 cur = end +1; |
144 } | 145 } |
145 break; | 146 break; |
146 case 's': | 147 case 's': |
147 (*args)[i] = g_strdup(cur); | 148 (*args)[i] = g_strdup(cur); |
148 cur = cur + strlen(cur); | 149 cur = cur + strlen(cur); |
149 break; | 150 break; |
150 case 'S': | 151 case 'S': |
156 | 157 |
157 if (*cur) | 158 if (*cur) |
158 return (cmd->flags & GAIM_CMD_FLAG_ALLOW_WRONG_ARGS); | 159 return (cmd->flags & GAIM_CMD_FLAG_ALLOW_WRONG_ARGS); |
159 | 160 |
160 return TRUE; | 161 return TRUE; |
161 } | |
162 | |
163 static void gaim_cmd_free_args(gchar **args) | |
164 { | |
165 int i; | |
166 | |
167 for (i = 0; args[i]; i++) | |
168 g_free(args[i]); | |
169 g_free(args); | |
170 } | 162 } |
171 | 163 |
172 static void gaim_cmd_strip_current_char(gunichar c, char *s, guint len) | 164 static void gaim_cmd_strip_current_char(gunichar c, char *s, guint len) |
173 { | 165 { |
174 int bytes; | 166 int bytes; |
258 | 250 |
259 right_prpl = TRUE; | 251 right_prpl = TRUE; |
260 | 252 |
261 /* this checks the allow bad args flag for us */ | 253 /* this checks the allow bad args flag for us */ |
262 if (!gaim_cmd_parse_args(c, rest, mrest, &args)) { | 254 if (!gaim_cmd_parse_args(c, rest, mrest, &args)) { |
263 gaim_cmd_free_args(args); | 255 g_strfreev(args); |
264 args = NULL; | 256 args = NULL; |
265 continue; | 257 continue; |
266 } | 258 } |
267 | 259 |
268 tried_cmd = TRUE; | 260 tried_cmd = TRUE; |
269 ret = c->func(conv, cmd, args, &err, c->data); | 261 ret = c->func(conv, cmd, args, &err, c->data); |
270 if (ret == GAIM_CMD_RET_CONTINUE) { | 262 if (ret == GAIM_CMD_RET_CONTINUE) { |
271 if (err) | 263 g_free(err); |
272 g_free(err); | |
273 err = NULL; | 264 err = NULL; |
274 gaim_cmd_free_args(args); | 265 g_strfreev(args); |
275 args = NULL; | 266 args = NULL; |
276 continue; | 267 continue; |
277 } else { | 268 } else { |
278 break; | 269 break; |
279 } | 270 } |
280 | 271 |
281 } | 272 } |
282 | 273 |
283 if (args) | 274 g_strfreev(args); |
284 gaim_cmd_free_args(args); | |
285 g_free(cmd); | 275 g_free(cmd); |
286 g_free(mrest); | 276 g_free(mrest); |
287 | 277 |
288 if (!found) | 278 if (!found) |
289 return GAIM_CMD_STATUS_NOT_FOUND; | 279 return GAIM_CMD_STATUS_NOT_FOUND; |