Mercurial > pidgin.yaz
diff src/buddy_chat.c @ 2374:9e9385cddcc6
[gaim-migrate @ 2387]
i need to go to class. but just because i need to do something doesn't mean i will, especially when what i need to do is related to school.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 27 Sep 2001 20:32:59 +0000 |
parents | 2927c2c26fe6 |
children | 05034cd0402b |
line wrap: on
line diff
--- a/src/buddy_chat.c Thu Sep 27 19:27:52 2001 +0000 +++ b/src/buddy_chat.c Thu Sep 27 20:32:59 2001 +0000 @@ -25,6 +25,7 @@ #include <string.h> #include <sys/time.h> #include <unistd.h> +#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <gtk/gtk.h> @@ -469,6 +470,46 @@ return FALSE; } +static gboolean find_nick(struct gaim_connection *gc, char *message) +{ + char *msg = g_strdup(message), *who, *p; + int n; + g_strdown(msg); + + who = g_strdup(gc->username); + n = strlen(who); + g_strdown(who); + + if ((p = strstr(msg, who)) != NULL) { + if ((p == msg) || (!isalnum(*(p - 1)) && !isalnum(*(p + n)))) { + g_free(who); + g_free(msg); + return TRUE; + } + } + g_free(who); + + if (g_strcasecmp(gc->username, gc->displayname)) { + g_free(msg); + return FALSE; + } + + who = g_strdup(gc->displayname); + n = strlen(who); + g_strdown(who); + + if ((p = strstr(msg, who)) != NULL) { + if ((p == msg) || (!isalnum(*(p - 1)) && !isalnum(*(p + n)))) { + g_free(who); + g_free(msg); + return TRUE; + } + } + g_free(who); + g_free(msg); + return FALSE; +} + void chat_write(struct conversation *b, char *who, int flag, char *message, time_t mtime) { GList *ignore = b->ignored; @@ -488,11 +529,11 @@ if (!(flag & WFLAG_WHISPER)) { str = g_strdup(normalize (who)); - if (!g_strcasecmp(str, normalize (b->gc->username))) { + if (!g_strcasecmp(str, normalize(b->gc->username))) { if (b->makesound && (sound_options & OPT_SOUND_CHAT_YOU_SAY)) play_sound(CHAT_YOU_SAY); flag |= WFLAG_SEND; - } else if (!g_strcasecmp(str, normalize (b->gc->displayname))) { + } else if (!g_strcasecmp(str, normalize(b->gc->displayname))) { if (b->makesound && (sound_options & OPT_SOUND_CHAT_YOU_SAY)) play_sound(CHAT_YOU_SAY); flag |= WFLAG_SEND; @@ -504,6 +545,9 @@ g_free(str); } + if ((flag & WFLAG_RECV) && find_nick(b->gc, message)) + flag |= WFLAG_NICK; + write_to_conv(b, message, flag, who, mtime); }