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; |
