From 2d488a40520e64708b34f5e28102f606d9bcb38e Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Wed, 2 May 2018 12:12:53 +0200
Subject: Moved archive temporary files.

---
 src/analysis/db/cdb.c | 29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/src/analysis/db/cdb.c b/src/analysis/db/cdb.c
index e909210..170bdfa 100644
--- a/src/analysis/db/cdb.c
+++ b/src/analysis/db/cdb.c
@@ -52,6 +52,7 @@
 #include "../../common/pathname.h"
 #include "../../common/xml.h"
 #include "../../core/collections.h"
+#include "../../core/params.h"
 
 
 
@@ -60,8 +61,6 @@
 
 
 
-
-
 /* Informations relatives à un client */
 typedef struct _cdb_client
 {
@@ -311,8 +310,10 @@ static void g_cdb_archive_finalize(GCdbArchive *archive)
 GCdbArchive *g_cdb_archive_new(const char *basedir, const rle_string *hash, const rle_string *user, DBError *error)
 {
     GCdbArchive *result;                    /* Adresse à retourner         */
-    struct stat finfo;                      /* Information sur l'archive   */
+    const char *tmpdir;                     /* Répertoire d'accueil        */
+    bool status;                            /* Bilan d'un consultation     */
     int ret;                                /* Retour d'un appel           */
+    struct stat finfo;                      /* Information sur l'archive   */
 
     result = g_object_new(G_TYPE_CDB_ARCHIVE, NULL);
 
@@ -330,21 +331,17 @@ GCdbArchive *g_cdb_archive_new(const char *basedir, const rle_string *hash, cons
 
     /* Chemin des enregistrements temporaires */
 
-    result->xml_desc = strdup(g_get_tmp_dir());
+    status = g_generic_config_get_value(get_main_configuration(), MPK_TMPDIR, &tmpdir);
+    if (!status) goto gcan_no_tmp;
 
-    if (result->xml_desc[strlen(result->xml_desc) - 1] != G_DIR_SEPARATOR)
-        result->xml_desc = stradd(result->xml_desc, G_DIR_SEPARATOR_S);
+    ret = asprintf(&result->xml_desc, "%s" G_DIR_SEPARATOR_S "%s_desc.xml", tmpdir, result->hash.data);
+    if (ret == -1) goto gcan_no_tmp;
 
-    result->xml_desc = stradd(result->xml_desc, result->hash.data);
-    result->xml_desc = stradd(result->xml_desc, "_desc.xml");
+    ret = ensure_path_exists(result->xml_desc);
+    if (ret == -1) goto gcan_no_tmp;
 
-    result->sql_db = strdup(g_get_tmp_dir());
-
-    if (result->sql_db[strlen(result->sql_db) - 1] != G_DIR_SEPARATOR)
-        result->sql_db = stradd(result->sql_db, G_DIR_SEPARATOR_S);
-
-    result->sql_db = stradd(result->sql_db, result->hash.data);
-    result->sql_db = stradd(result->sql_db, "_db.sql");
+    ret = asprintf(&result->sql_db, "%s" G_DIR_SEPARATOR_S "%s_db.sql", tmpdir, result->hash.data);
+    if (ret == -1) goto gcan_no_tmp;
 
     /* Création de l'archive si elle n'existe pas */
 
@@ -388,6 +385,8 @@ GCdbArchive *g_cdb_archive_new(const char *basedir, const rle_string *hash, cons
 
     return result;
 
+ gcan_no_tmp:
+
  gcan_error:
 
     g_object_unref(G_OBJECT(result));
-- 
cgit v0.11.2-87-g4458