diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2014-01-13 00:27:34 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2014-01-13 00:27:34 (GMT) |
commit | abb191e42e356914bd09176a6d6c5bf89ec50bbf (patch) | |
tree | 851f3d195a991bff42d5958a7d40d75422ad1e83 /src/xdg.c | |
parent | 01750b1c29ade2865f608513b139597a98a95e57 (diff) |
Ensured that a path with directories exists.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@366 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/xdg.c')
-rw-r--r-- | src/xdg.c | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/src/xdg.c b/src/xdg.c deleted file mode 100644 index 6541e89..0000000 --- a/src/xdg.c +++ /dev/null @@ -1,103 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * xdg.c - compléments mineurs au support Freedesktop - * - * Copyright (C) 2008 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "xdg.h" - - -#include <dirent.h> -#include <malloc.h> -#include <stdlib.h> -#include <string.h> - - - -/****************************************************************************** -* * -* Paramètres : suffix = élément visé dans le répertoire de configuration. * -* * -* Description : Détermine le chemin d'un répertoire selon les specs. XDG. * -* * -* Retour : Chemin d'accès aux configurations personnelles ou NULL. * -* * -* Remarques : cf. http://standards.freedesktop.org/basedir-spec/. * -* * -******************************************************************************/ - -char *get_xdg_config_dir(const char *suffix) -{ - char *result; /* Chemin d'accès à renvoyer */ - const char *env; /* Valeur de l'environnement */ - DIR *directory; /* Répertoire avec contenu ? */ - struct dirent *entry; /* Elément de répertoire */ - - result = NULL; - - env = getenv("XDG_CONFIG_HOME"); - - if (env != NULL && env[0] != '\0') - { - directory = opendir(env); - if (directory == NULL) goto default_cfg_dir; - - for (entry = readdir(directory); entry != NULL && result == NULL; entry = readdir(directory)) - { - if (strcmp(entry->d_name, ".") == 0) continue; - if (strcmp(entry->d_name, "..") == 0) continue; - - result = (char *)calloc(strlen(env) + 2 + strlen(suffix) + 1, sizeof(char)); - strcpy(result, env); - - if (env[strlen(env) - 1] != '/') - strcat(result, "/"); - - strcat(result, "."); - strcat(result, suffix); - - } - - closedir(directory); - - } - - default_cfg_dir: - - if (result == NULL) - { - env = getenv("HOME"); - if (env == NULL || env[0] == '\0') return NULL; - - result = (char *)calloc(strlen(env) + 1 + strlen(".config/") + strlen(suffix) + 1, sizeof(char)); - - strcpy(result, env); - - if (env[strlen(env) - 1] != '/') - strcat(result, "/"); - - strcat(result, ".config/"); - strcat(result, suffix); - - } - - return result; - -} |