]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-tube-handler.c
tp-file: ready property has to be read only
[empathy.git] / libempathy / empathy-tube-handler.c
index 64b96b94ddc0273f463f4cab074c0d6cee45e3f0..18cda18b31dd5b3ea9f020861bbdc36632d2b9a3 100644 (file)
@@ -144,7 +144,7 @@ empathy_tube_handler_init (EmpathyTubeHandler *thandler)
 }
 
 EmpathyTubeHandler *
-empathy_tube_handler_new (EmpathyTubeType type, const gchar *service)
+empathy_tube_handler_new (TpTubeType type, const gchar *service)
 {
   EmpathyTubeHandler *thandler = NULL;
   DBusGProxy *proxy;
@@ -153,7 +153,7 @@ empathy_tube_handler_new (EmpathyTubeType type, const gchar *service)
   gchar *object_path;
   GError *error = NULL;
 
-  g_return_val_if_fail (type <= EMPATHY_TYPE_DBUS_TUBE, NULL);
+  g_return_val_if_fail (type < NUM_TP_TUBE_TYPES, NULL);
   g_return_val_if_fail (service != NULL, NULL);
 
   bus_name = empathy_tube_handler_build_bus_name (type, service);
@@ -185,36 +185,57 @@ OUT:
   return thandler;
 }
 
+static gchar *
+sanitize_service_name (const gchar *str)
+{
+  guint i;
+  gchar *result;
+
+  g_assert (str != NULL);
+  result = g_strdup (str);
+
+  for (i = 0; result[i] != '\0'; i++)
+    {
+      if (!g_ascii_isalnum (result[i]))
+        result[i] = '_';
+    }
+
+  return result;
+}
+
 gchar *
-empathy_tube_handler_build_bus_name (EmpathyTubeType type,
+empathy_tube_handler_build_bus_name (TpTubeType type,
   const gchar *service)
 {
   gchar *str = NULL;
   const gchar *prefix = NULL;
+  gchar *service_escaped;
 
-  g_return_val_if_fail (type <= EMPATHY_TYPE_DBUS_TUBE, NULL);
+  g_return_val_if_fail (type < NUM_TP_TUBE_TYPES, NULL);
   g_return_val_if_fail (service != NULL, NULL);
 
-  if (type == EMPATHY_TYPE_DBUS_TUBE)
+  if (type == TP_TUBE_TYPE_DBUS)
     prefix = "org.gnome.Empathy.DTubeHandler.";
-  else if (type == EMPATHY_TYPE_STREAM_TUBE)
+  else if (type == TP_TUBE_TYPE_STREAM)
     prefix = "org.gnome.Empathy.StreamTubeHandler.";
   else
     g_return_val_if_reached (NULL);
 
-  str = g_strconcat (prefix, service, NULL);
+  service_escaped = sanitize_service_name (service);
+  str = g_strconcat (prefix, service_escaped, NULL);
+  g_free (service_escaped);
 
   return str;
 }
 
 gchar *
-empathy_tube_handler_build_object_path (EmpathyTubeType type,
+empathy_tube_handler_build_object_path (TpTubeType type,
   const gchar *service)
 {
   gchar *bus_name;
   gchar *str;
 
-  g_return_val_if_fail (type <= EMPATHY_TYPE_DBUS_TUBE, NULL);
+  g_return_val_if_fail (type < NUM_TP_TUBE_TYPES, NULL);
   g_return_val_if_fail (service != NULL, NULL);
 
   bus_name = empathy_tube_handler_build_bus_name (type, service);