[ekg2-commit] r4032 - trunk/plugins/irc: trunk/plugins/irc/irc.c trunk/plugins/irc/misc.c
SVN commit
svn w toxygen.net
Pią, 27 Cze 2008, 22:29:56 CEST
Author: wiechu
Date: 2008-06-27 22:29:56 +0200 (Fri, 27 Jun 2008)
New Revision: 4032
Modified:
trunk/plugins/irc/irc.c
trunk/plugins/irc/misc.c
Log:
irc topic recode.
Modified: trunk/plugins/irc/irc.c
===================================================================
--- trunk/plugins/irc/irc.c 2008-06-27 18:21:15 UTC (rev 4031)
+++ trunk/plugins/irc/irc.c 2008-06-27 20:29:56 UTC (rev 4032)
@@ -1611,6 +1611,17 @@
else
newtop = saprintf("TOPIC %s\r\n", chan+4);
+ if (j->conv_out != (void *) -1) {
+ char *recode = ekg_convert_string_p(newtop, j->conv_out);
+
+ if (!recode)
+ debug_error("[irc] ekg_convert_string_p() failed [%x] using not recoded text\n", j->conv_out);
+ else {
+ xfree(newtop);
+ newtop = recode;
+ }
+ }
+
watch_write(j->send_watch, newtop);
array_free(mp);
xfree (newtop);
Modified: trunk/plugins/irc/misc.c
===================================================================
--- trunk/plugins/irc/misc.c 2008-06-27 18:21:15 UTC (rev 4031)
+++ trunk/plugins/irc/misc.c 2008-06-27 20:29:56 UTC (rev 4032)
@@ -1460,6 +1460,7 @@
window_t *w;
char *t, *dest=NULL;
char *coloured;
+ char *__topic, *__topicby;
channel_t *chanp = NULL;
IRC_TO_LOWER(param[2]);
@@ -1472,16 +1473,28 @@
*t = '\0';
xfree(chanp->topic);
xfree(chanp->topicby);
- if (xstrlen(OMITCOLON(param[3]))) {
- chanp->topic = xstrdup(OMITCOLON(param[3]));
- chanp->topicby = xstrdup(OMITCOLON(param[0]));
- coloured = irc_ircoldcolstr_to_ekgcolstr(s, OMITCOLON(param[3]), 1);
+
+ __topicby = OMITCOLON(param[0]);
+ __topic = OMITCOLON(param[3]);
+ if (xstrlen(__topic)) {
+ if (j->conv_in != (void *) -1) {
+ char *recoded = ekg_convert_string_p(__topic, j->conv_in);
+ if (recoded) {
+ chanp->topic = recoded;
+ } else {
+ debug_error("[irc] ekg_convert_string_p() failed [%x] using not recoded text\n", j->conv_in);
+ chanp->topic = xstrdup(__topic);
+ }
+ } else
+ chanp->topic = xstrdup(__topic);
+ chanp->topicby = xstrdup(__topicby);
+ coloured = irc_ircoldcolstr_to_ekgcolstr(s, chanp->topic, 1);
print_window(dest, s, 0, "IRC_TOPIC_CHANGE", session_name(s),
param[0]+1, t?t+1:"", param[2], coloured);
xfree(coloured);
} else {
chanp->topic = xstrdup("No topic set!");
- chanp->topicby = xstrdup(OMITCOLON(param[0]));
+ chanp->topicby = xstrdup(__topicby);
print_window(dest, s, 0, "IRC_TOPIC_UNSET", session_name(s),
param[0]+1, t?t+1:"", param[2]);
}
Więcej informacji o liście dyskusyjnej ekg2-commit