[telepathy-gabble/master] add gabble_ft_manager_get_tmp_dir

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Mon Mar 30 07:08:51 PDT 2009


---
 src/ft-manager.c |   23 ++++++++++++++++++++++-
 src/ft-manager.h |    2 ++
 2 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/src/ft-manager.c b/src/ft-manager.c
index 91b3ebf..04e5c52 100644
--- a/src/ft-manager.c
+++ b/src/ft-manager.c
@@ -18,9 +18,11 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#define _BSD_SOURCE
 #define _XOPEN_SOURCE /* glibc2 needs this */
 #include <time.h>
 #include <dbus/dbus-glib.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -69,6 +71,8 @@ struct _GabbleFtManagerPrivate
   gboolean dispose_has_run;
   GabbleConnection *connection;
   GList *channels;
+  /* path of the temporary directory used to store UNIX sockets */
+  gchar *tmp_dir;
 };
 
 static void
@@ -175,7 +179,9 @@ gabble_ft_manager_dispose (GObject *object)
 void
 gabble_ft_manager_finalize (GObject *object)
 {
-  /*GabbleFtManager *self = GABBLE_FT_MANAGER (object);*/
+  GabbleFtManager *self = GABBLE_FT_MANAGER (object);
+
+  g_free (self->priv->tmp_dir);
 
   G_OBJECT_CLASS (gabble_ft_manager_parent_class)->finalize (object);
 }
@@ -552,3 +558,18 @@ gabble_ft_manager_new (GabbleConnection *connection)
       "connection", connection,
       NULL);
 }
+
+const gchar *
+gabble_ft_manager_get_tmp_dir (GabbleFtManager *self)
+{
+  if (self->priv->tmp_dir != NULL)
+    return self->priv->tmp_dir;
+
+  self->priv->tmp_dir = g_strdup_printf ("%s/gabble-ft-XXXXXX",
+      g_get_tmp_dir ());
+  self->priv->tmp_dir = mkdtemp (self->priv->tmp_dir);
+  if (self->priv->tmp_dir == NULL)
+    g_critical ("mkdtemp failed: %s\n", g_strerror (errno));
+
+  return self->priv->tmp_dir;
+}
diff --git a/src/ft-manager.h b/src/ft-manager.h
index 49a44d6..5424c3c 100644
--- a/src/ft-manager.h
+++ b/src/ft-manager.h
@@ -66,6 +66,8 @@ void gabble_ft_manager_handle_si_request (GabbleFtManager *self,
     GabbleBytestreamIface *bytestream, TpHandle handle, const gchar *stream_id,
     LmMessage *msg);
 
+const gchar * gabble_ft_manager_get_tmp_dir (GabbleFtManager *self);
+
 G_END_DECLS
 
 #endif /* #ifndef __GABBLE_FT_MANAGER_H__*/
-- 
1.5.6.5




More information about the telepathy-commits mailing list