File mu-conference-tcl.patch of Package mu-conference

--- include/conference.h.orig
+++ include/conference.h
@@ -74,6 +74,7 @@
 #define LOG_TEXT		0
 #define LOG_XML			1
 #define LOG_XHTML		2
+#define LOG_TCL                 3
 
 
 /* Role List */
--- src/Makefile.orig
+++ src/Makefile
@@ -2,7 +2,7 @@
 OPTFLAGS=-O2 -Wall 
 CFLAGS:=$(CFLAGS) $(OPTFLAGS) -I../../lib -I../include `pkg-config --cflags glib-2.0` -D_JCOMP -D_REENTRANT -DLIBIDN
 #CFLAGS:=$(CFLAGS) -O2 -Wall -I../../lib -I../include `pkg-config --cflags glib-2.0` -D_JCOMP -D_REENTRANT -DLIBIDN -DHAVE_MYSQL
-LIBS:=$(LIBS) -ljcomp -lm `pkg-config --libs glib-2.0` `pkg-config --libs gthread-2.0` -lexpat -lidn
+LIBS:=$(LIBS) -ljcomp -lm `pkg-config --libs glib-2.0` `pkg-config --libs gthread-2.0` -lexpat -lidn $(TCL_LIB_FLAG)
 #LIBS:=$(LIBS) -ljcomp -lm `pkg-config --libs glib-2.0` `pkg-config --libs gthread-2.0` -lexpat -lidn `mysql_config --libs`
 LDFLAGS:=-L.
 
--- src/conference_room.c.orig
+++ src/conference_room.c
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA
  */
 
+#include <tcl.h>
 #include "conference.h"
 extern int deliver__flag;
 
@@ -50,7 +51,20 @@
   return temp;
 }
 
+static void con_room_log_xml(cnr room, char *nick, xmlnode xml)
+{
+    char *message;
 
+    if (xml == NULL) {
+	log_warn(NAME, "[%s] ERR: Aborting - NULL reference found - ", FZONE);
+	return;
+    }
+    /* the sender requested the message not to be logged */
+    if (xmlnode_get_tag(xml, "x?nolog=1")) return;
+
+    message = xmlnode_get_tag_data(xml, "body");
+    con_room_log(room, nick, message);
+}
 
 /* Handles logging for each room, simply returning if logfile is not defined */
 void con_room_log(cnr room, char *nick, char *message)
@@ -122,6 +136,18 @@
       fprintf(logfile, "<span class=\"time\">%s</span> --- %s<br />\n", timestr, message);
     }
   }
+  else if(room->logformat == LOG_TCL) {
+      Tcl_Obj *objs[4];
+      Tcl_Obj *cmdline;
+
+      objs[0] = Tcl_NewStringObj("m", -1);
+      objs[1] = Tcl_NewStringObj(jutil_timestamp(), -1);
+      objs[2] = Tcl_NewStringObj(nick, -1);
+      objs[3] = Tcl_NewStringObj(message, -1);
+      cmdline = Tcl_NewListObj(4, objs);
+      fprintf(logfile, "%s\n", Tcl_GetStringFromObj(cmdline, NULL));
+      Tcl_DecrRefCount(cmdline);
+  }
   else
   {
     if(nick)
@@ -227,6 +253,8 @@
     spool_add(sp, ".xml");
   else if(type == LOG_XHTML)
     spool_add(sp, ".html");
+  else if(type == LOG_TCL)
+    spool_add(sp, ".tcl");
   else
     spool_add(sp, ".txt");
 
@@ -1138,7 +1166,7 @@
     g_hash_table_foreach(room->local, con_room_sendwalk, (void*)jp->x);
 
     /* log */
-    con_room_log(room, from->localid->resource, xmlnode_get_tag_data(jp->x, "body"));
+    con_room_log_xml(room, from->localid->resource, jp->x);
 
     /* Save from address */
     if (cont == 0) {
@@ -1585,7 +1613,7 @@
   log_debug(NAME,"[%s] Sending packet from room %s: %s", FZONE, jid_full(room->id), xmlnode2str(x));
 
   /* log */
-  con_room_log(room, NULL, xmlnode_get_tag_data(x, "body"));
+  con_room_log_xml(room, NULL, x);
 
   xmlnode_put_attrib(x, "from", jid_full(room->id));
 
--- src/xdata.c.orig
+++ src/xdata.c
@@ -287,6 +287,19 @@
             room->logformat = LOG_XHTML;
           }
         }
+      else if(j_strcmp(xmlnode_get_tag_data(xmlnode_get_tag(results,var),"value"), "tcl") == 0)
+      {
+        if(room->logfile != NULL && room->logformat != LOG_TCL)
+        {
+          fclose(room->logfile);
+          room->logformat = LOG_TCL;
+          con_room_log_new(room);
+        }
+        else
+        {
+          room->logformat = LOG_TCL;
+        }
+      }
         else
         {
           if(room->logfile != NULL && room->logformat != LOG_TEXT)
@@ -555,6 +568,8 @@
       xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"xml", -1);
     else if(room->logformat == LOG_XHTML)
       xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"xhtml", -1);
+  else if(room->logformat == LOG_TCL)
+    xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"tcl", -1);
     else
       xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"text", -1);
 
@@ -565,6 +580,9 @@
     xmlnode_put_attrib(element, "label", "XHTML");
     xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "xhtml", -1);
     element = xmlnode_insert_tag(field, "option");
+  xmlnode_put_attrib(element, "label", "Tcl Script");
+  xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "tcl", -1);
+  element = xmlnode_insert_tag(field, "option");
     xmlnode_put_attrib(element, "label", "Plain Text");
     xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "text", -1);
   }
--- src/main.c.orig
+++ src/main.c
@@ -20,6 +20,7 @@
 
 */
 
+#include <tcl.h>
 #include "jcomp.h"
 #include "lib.h"
 
@@ -48,6 +49,8 @@
 
   /* GThread       *dthread; */ /* the packet delivery thread */
   GMainLoop     *gmain;   /* the receive packet event loop */
+  
+  Tcl_FindExecutable(argv[0]);
 
   jcr = (jcr_instance)calloc(1, sizeof(_jcr_instance));
 
openSUSE Build Service is sponsored by