| 195 |
195 |
| 196 if (!args) |
196 if (!args) |
| 197 return 0; |
197 return 0; |
| 198 |
198 |
| 199 if (!strcmp(cmd, "mode")) { |
199 if (!strcmp(cmd, "mode")) { |
| 200 if (!args[0] && (*target == '#' || *target == '&')) |
200 if (!args[0] && irc_ischannel(target)) |
| 201 buf = irc_format(irc, "vc", "MODE", target); |
201 buf = irc_format(irc, "vc", "MODE", target); |
| 202 else if (args[0] && (*args[0] == '+' || *args[0] == '-')) |
202 else if (args[0] && (*args[0] == '+' || *args[0] == '-')) |
| 203 buf = irc_format(irc, "vcv", "MODE", target, args[0]); |
203 buf = irc_format(irc, "vcv", "MODE", target, args[0]); |
| 204 else if (args[0]) |
204 else if (args[0]) |
| 205 buf = irc_format(irc, "vv", "MODE", args[0]); |
205 buf = irc_format(irc, "vv", "MODE", args[0]); |
| 222 |
222 |
| 223 int irc_cmd_names(struct irc_conn *irc, const char *cmd, const char *target, const char **args) |
223 int irc_cmd_names(struct irc_conn *irc, const char *cmd, const char *target, const char **args) |
| 224 { |
224 { |
| 225 char *buf; |
225 char *buf; |
| 226 |
226 |
| 227 if (!args) |
227 if (!args || (!args[0] && !irc_ischannel(target))) |
| 228 return 0; |
228 return 0; |
| 229 |
229 |
| 230 buf = irc_format(irc, "vc", "NAMES", args[0] ? args[0] : target); |
230 buf = irc_format(irc, "vc", "NAMES", args[0] ? args[0] : target); |
| 231 irc_send(irc, buf); |
231 irc_send(irc, buf); |
| 232 g_free(buf); |
232 g_free(buf); |
| 315 { |
315 { |
| 316 char *stamp; |
316 char *stamp; |
| 317 char *buf; |
317 char *buf; |
| 318 |
318 |
| 319 if (args && args[0]) { |
319 if (args && args[0]) { |
| 320 if (*args[0] == '#' || *args[0] == '&') |
320 if (irc_ischannel(args[0])) |
| 321 return 0; |
321 return 0; |
| 322 stamp = g_strdup_printf("\001PING %lu\001", time(NULL)); |
322 stamp = g_strdup_printf("\001PING %lu\001", time(NULL)); |
| 323 buf = irc_format(irc, "vn:", "PRIVMSG", args[0], stamp); |
323 buf = irc_format(irc, "vn:", "PRIVMSG", args[0], stamp); |
| 324 g_free(stamp); |
324 g_free(stamp); |
| 325 } else { |
325 } else { |
| 412 char *buf; |
412 char *buf; |
| 413 |
413 |
| 414 if (!args || !args[0]) |
414 if (!args || !args[0]) |
| 415 return 0; |
415 return 0; |
| 416 |
416 |
| 417 if (*target != '#' && *target != '&') /* not a channel, punt */ |
417 if (!irc_ischannel(target)) /* not a channel, punt */ |
| 418 return 0; |
418 return 0; |
| 419 |
419 |
| 420 if (args[1]) |
420 if (args[1]) |
| 421 buf = irc_format(irc, "vcn:", "REMOVE", target, args[0], args[1]); |
421 buf = irc_format(irc, "vcn:", "REMOVE", target, args[0], args[1]); |
| 422 else |
422 else |