From 785073b87241bfdc3367dae70a1547fcb3df6a40 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Tue, 28 Jul 2015 21:57:56 +0200 Subject: [PATCH] Sesssion: added path where to save session files (closes #944). --- src/session.c | 14 +++++++++++--- src/session.h | 3 ++- tests/session.c | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/session.c b/src/session.c index 6390c0d..9f0ee38 100644 --- a/src/session.c +++ b/src/session.c @@ -48,6 +48,7 @@ struct _ZakCgiSessionPrivate { ZakCgiMain *zakcgimain; gchar *base_uri; + gchar *path; gchar *sid; GFile *gfile; GKeyFile *kfile; @@ -75,18 +76,21 @@ zak_cgi_session_init (ZakCgiSession *zak_cgi_session) priv->zakcgimain = NULL; priv->base_uri = NULL; + priv->path = NULL; } /** * zak_cgi_session_new: * @zakcgimain: * @base_uri: + * @path: * * Returns: the newly created #ZakCgiSession object. */ ZakCgiSession *zak_cgi_session_new (ZakCgiMain *zakcgimain, - const gchar *base_uri) + const gchar *base_uri, + const gchar *path) { GHashTable *ht_cookies; @@ -103,6 +107,10 @@ ZakCgiSession { priv->base_uri = g_strdup (base_uri); } + if (path != NULL) + { + priv->path = g_strdup (path); + } ht_cookies = zak_cgi_main_get_cookies (priv->zakcgimain); priv->sid = g_hash_table_lookup (ht_cookies, "ZAKCGISID"); @@ -110,7 +118,7 @@ ZakCgiSession if (priv->sid != NULL) { /* open the file */ - priv->gfile = g_file_new_for_path (g_build_filename (g_get_tmp_dir (), priv->sid, NULL)); + priv->gfile = g_file_new_for_path (g_build_filename (priv->path != NULL ? priv->path : g_get_tmp_dir (), priv->sid, NULL)); error = NULL; @@ -166,7 +174,7 @@ gchar g_free (tmp); /* see if file already exists */ - priv->gfile = g_file_new_for_path (g_build_filename (g_get_tmp_dir (), priv->sid, NULL)); + priv->gfile = g_file_new_for_path (g_build_filename (priv->path != NULL ? priv->path : g_get_tmp_dir (), priv->sid, NULL)); error = NULL; iostream = g_file_replace_readwrite (priv->gfile, NULL, FALSE, G_FILE_CREATE_PRIVATE, NULL, &error); if (iostream == NULL diff --git a/src/session.h b/src/session.h index 3475ba2..44a992c 100644 --- a/src/session.h +++ b/src/session.h @@ -52,7 +52,8 @@ GType zak_cgi_session_get_type (void); ZakCgiSession *zak_cgi_session_new (ZakCgiMain *zakcgimain, - const gchar *base_uri); + const gchar *base_uri, + const gchar *path); gchar *zak_cgi_session_get_header (ZakCgiSession *session); diff --git a/tests/session.c b/tests/session.c index 6644d21..ef18155 100644 --- a/tests/session.c +++ b/tests/session.c @@ -34,7 +34,7 @@ main (int argc, char *argv[]) gchar *method; - session = zak_cgi_session_new (NULL, NULL); + session = zak_cgi_session_new (NULL, NULL, NULL); str = g_string_new ("\n" "Session Cookie\n" -- 2.49.0