Mercurial > pidgin
comparison libpurple/protocols/irc/parse.c @ 24353:c204239bef48
Strip multiple leading mode characters from incoming nicknames.
This patch adds the function irc_nick_skip_mode, which takes an IRC
connection and nickname, and returns a pointer internal to the
nickname representing the first non-mode-character of the nick.
Apparently some IRC servers prepend more than one mode character to
nicknames under some circumstances; the standard is pretty vague on
the matter, and I can't see as how it hurts anything, so here goes.
This patch was originally from Marcos Garc?a Ochoa.
Fixes #7416
committer: Ethan Blanton <elb@pidgin.im>
| author | Marcos Garc?a Ochoa <magao@bigfoot.com> |
|---|---|
| date | Fri, 31 Oct 2008 14:51:11 +0000 |
| parents | aac5753e2528 |
| children | 4f46eb13b540 |
comparison
equal
deleted
inserted
replaced
| 24352:8d040d580a44 | 24353:c204239bef48 |
|---|---|
| 495 } | 495 } |
| 496 result[j] = '\0'; | 496 result[j] = '\0'; |
| 497 return result; | 497 return result; |
| 498 } | 498 } |
| 499 | 499 |
| 500 const char *irc_nick_skip_mode(struct irc_conn *irc, const char *nick) | |
| 501 { | |
| 502 static const char *default_modes = "@+%&"; | |
| 503 const char *mode_chars; | |
| 504 | |
| 505 mode_chars = irc->mode_chars ? irc->mode_chars : default_modes; | |
| 506 | |
| 507 while (strchr(mode_chars, *nick) != NULL) | |
| 508 nick++; | |
| 509 | |
| 510 return nick; | |
| 511 } | |
| 512 | |
| 500 gboolean irc_ischannel(const char *string) | 513 gboolean irc_ischannel(const char *string) |
| 501 { | 514 { |
| 502 return (string[0] == '#' || string[0] == '&'); | 515 return (string[0] == '#' || string[0] == '&'); |
| 503 } | 516 } |
| 504 | 517 |
