[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