[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