Sophie

Sophie

distrib > Mandriva > current > i586 > by-pkgid > 7cb850142e0302107af2bd521fedd26e > files > 1

freetalk-3.2-3mdv2010.1.src.rpm

diff -urNp freetalk-3.2.orig/src/callbacks.cc freetalk-3.2/src/callbacks.cc
--- freetalk-3.2.orig/src/callbacks.cc	2009-02-25 01:31:29.826691032 +0530
+++ freetalk-3.2/src/callbacks.cc	2009-02-25 02:56:04.323962193 +0530
@@ -1,7 +1,7 @@
 /*
   callbacks.c: Callback functions
   
-  Copyright (c) 2005, 2006, 2007 Freetalk Core Team
+  Copyright (c) 2005, 2006, 2007, 2009 Freetalk Core Team
   This file is part of GNU Freetalk.
   
   Freetalk is free software; you can redistribute it and/or modify
@@ -20,6 +20,7 @@
 */
 
 #include <stdio.h>
+#include <string>
 #include <string.h>
 #include <stdlib.h>
 #include <glib.h> 
@@ -116,8 +117,9 @@ ft_msg_msg_handler (LmMessageHandler *ha
 		    LmMessage *msg, gpointer user_data)
 {
   LmMessageNode *root, *body, *x;
-  const char *from, *msg_str, *type;
+  const char *msg_str, *type;
   char *ts = NULL;
+  std::string from;
 
   root = lm_message_get_node (msg);
   body = lm_message_node_get_child (root, "body");
@@ -152,11 +154,12 @@ ft_msg_msg_handler (LmMessageHandler *ha
     set_hook_return (0);
     /* TBD : make the below stripping of /Resource configurable */
     if (1) {
-      if (strchr (from, '/'))
-	*strchr (from, '/') = '\0';
+      const size_t pos = from.find("/");
+      if (pos != std::string::npos)
+	from.replace(pos, from.size() - pos, "");
     }
     {
-      FtRosterItem *item = ft_roster_lookup (from);
+      FtRosterItem *item = ft_roster_lookup (from.c_str());
       char *nickname;
       
       if (!item)
@@ -166,17 +169,17 @@ ft_msg_msg_handler (LmMessageHandler *ha
       
       scm_run_hook (ex_message_receive_hook,
 		    scm_list_n (ts ? scm_from_locale_string (ts) : scm_from_locale_string (""),
-				scm_from_locale_string (from),
+				scm_from_locale_string (from.c_str()),
 				nickname ? scm_from_locale_string (nickname) : scm_from_locale_string (""),
 				scm_from_locale_string (msg_str),
 				SCM_UNDEFINED));
     }
     if (ts) g_free (ts);
     
-    if (get_hook_return () == 1)
+    if (get_hook_return () == 1) 
       return LM_HANDLER_RESULT_REMOVE_MESSAGE;
     
-    PRINTF ("%s: %s", from, msg_str);
+    PRINTF ("%s: %s", from.c_str(), msg_str);
   } else {
     /* This logic should be looked into : FIXME */
     ft_send_file_message_data (msg);