summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/analysis/db/cdb.c1
-rw-r--r--src/common/pathname.c83
-rw-r--r--src/common/pathname.h7
-rw-r--r--src/common/xdg.c84
-rw-r--r--src/common/xdg.h12
5 files changed, 94 insertions, 93 deletions
diff --git a/src/analysis/db/cdb.c b/src/analysis/db/cdb.c
index 70e0dc5..a42f838 100644
--- a/src/analysis/db/cdb.c
+++ b/src/analysis/db/cdb.c
@@ -48,6 +48,7 @@
#include "../../common/cpp.h"
#include "../../common/extstr.h"
#include "../../common/io.h"
+#include "../../common/pathname.h"
#include "../../common/xdg.h"
#include "../../common/xml.h"
#include "../../core/collections.h"
diff --git a/src/common/pathname.c b/src/common/pathname.c
index 181fd1f..3a68599 100644
--- a/src/common/pathname.c
+++ b/src/common/pathname.c
@@ -28,6 +28,7 @@
#include <glib.h>
#include <malloc.h>
#include <string.h>
+#include <sys/stat.h>
#include "extstr.h"
@@ -171,3 +172,85 @@ char *build_absolute_filename(const char *ref, const char *target)
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : path = chemin d'accès avec répertoires. *
+* *
+* Description : S'assure que le chemin fourni est bien en place. *
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool mkpath(const char *path)
+{
+ char tmp[PATH_MAX]; /* Recopie de travail */
+ size_t len; /* Taille du chemin fourni */
+ char *iter; /* Boucle de parcours */
+ struct stat info; /* Information sur l'existant */
+ int ret; /* Bilan d'un appel système */
+
+ snprintf(tmp, PATH_MAX, "%s", path);
+ len = strlen(tmp);
+
+ /* Le chemin fournit ne contient que des répertoires ? */
+ if (tmp[len - 1] == G_DIR_SEPARATOR)
+ tmp[len - 1] = '\0';
+
+ /* Sinon, on supprime le dernier élément, qui est un fichier */
+ else
+ {
+ iter = strrchr(tmp, G_DIR_SEPARATOR);
+ if (iter == NULL) return true;
+
+ *iter = '\0';
+
+ }
+
+ for(iter = tmp + 1; *iter; iter++)
+ if(*iter == G_DIR_SEPARATOR)
+ {
+ *iter = '\0';
+
+ /* Analyse de l'existant */
+ if (stat(tmp, &info) == 0)
+ {
+ if (S_ISDIR(info.st_mode) == 0)
+ return false;
+ else
+ {
+ *iter = G_DIR_SEPARATOR;
+ continue;
+ }
+ }
+
+ ret = mkdir(tmp, S_IRWXU);
+ if (ret != 0)
+ {
+ perror("mkdir");
+ return false;
+ }
+
+ *iter = G_DIR_SEPARATOR;
+
+ }
+
+ /* Analyse de l'existant */
+ if (stat(tmp, &info) == 0)
+ {
+ if (S_ISDIR(info.st_mode) == 0)
+ return false;
+ else
+ return true;
+ }
+
+ ret = mkdir(tmp, S_IRWXU);
+ if (ret != 0) perror("mkdir");
+
+ return (ret == 0);
+
+}
diff --git a/src/common/pathname.h b/src/common/pathname.h
index 744a11b..72d6606 100644
--- a/src/common/pathname.h
+++ b/src/common/pathname.h
@@ -25,12 +25,19 @@
#define _COMMON_PATHNAME_H
+#include <stdbool.h>
+
+
+
/* Calcule le chemin relatif entre deux fichiers donnés. */
char *build_relative_filename(const char *, const char *);
/* Calcule le chemin absolu d'un fichier par rapport à un autre. */
char *build_absolute_filename(const char *, const char *);
+/* S'assure que le chemin fourni est bien en place. */
+bool mkpath(const char *);
+
#endif /* _COMMON_PATHNAME_H */
diff --git a/src/common/xdg.c b/src/common/xdg.c
index 29e4cb9..81bc7aa 100644
--- a/src/common/xdg.c
+++ b/src/common/xdg.c
@@ -27,10 +27,8 @@
#include <dirent.h>
#include <glib.h>
#include <malloc.h>
-#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/stat.h>
@@ -105,85 +103,3 @@ char *get_xdg_config_dir(const char *suffix)
return result;
}
-
-
-/******************************************************************************
-* *
-* Paramètres : path = chemin d'accès avec répertoires. *
-* *
-* Description : S'assure que le chemin fourni est bien en place. *
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool mkpath(const char *path)
-{
- char tmp[PATH_MAX]; /* Recopie de travail */
- size_t len; /* Taille du chemin fourni */
- char *iter; /* Boucle de parcours */
- struct stat info; /* Information sur l'existant */
- int ret; /* Bilan d'un appel système */
-
- snprintf(tmp, PATH_MAX, "%s", path);
- len = strlen(tmp);
-
- /* Le chemin fournit ne contient que des répertoires ? */
- if (tmp[len - 1] == G_DIR_SEPARATOR)
- tmp[len - 1] = '\0';
-
- /* Sinon, on supprime le dernier élément, qui est un fichier */
- else
- {
- iter = strrchr(tmp, G_DIR_SEPARATOR);
- if (iter == NULL) return true;
-
- *iter = '\0';
-
- }
-
- for(iter = tmp + 1; *iter; iter++)
- if(*iter == G_DIR_SEPARATOR)
- {
- *iter = '\0';
-
- /* Analyse de l'existant */
- if (stat(tmp, &info) == 0)
- {
- if (S_ISDIR(info.st_mode) == 0)
- return false;
- else
- {
- *iter = G_DIR_SEPARATOR;
- continue;
- }
- }
-
- ret = mkdir(tmp, S_IRWXU);
- if (ret != 0)
- {
- perror("mkdir");
- return false;
- }
-
- *iter = G_DIR_SEPARATOR;
-
- }
-
- /* Analyse de l'existant */
- if (stat(tmp, &info) == 0)
- {
- if (S_ISDIR(info.st_mode) == 0)
- return false;
- else
- return true;
- }
-
- ret = mkdir(tmp, S_IRWXU);
- if (ret != 0) perror("mkdir");
-
- return (ret == 0);
-
-}
diff --git a/src/common/xdg.h b/src/common/xdg.h
index a9aa254..19a507e 100644
--- a/src/common/xdg.h
+++ b/src/common/xdg.h
@@ -21,20 +21,14 @@
*/
-#ifndef _XDG_H
-#define _XDG_H
-
-
-#include <stdbool.h>
+#ifndef _COMMON_XDG_H
+#define _COMMON_XDG_H
/* Détermine le chemin d'un répertoire selon les specs. XDG. */
char *get_xdg_config_dir(const char *);
-/* S'assure que le chemin fourni est bien en place. */
-bool mkpath(const char *);
-
-#endif /* _XDG_H */
+#endif /* _COMMON_XDG_H */