/* Chrysalide - Outil d'analyse de fichiers binaires * io.c - entrées sorties fiables * * Copyright (C) 2014 Cyrille Bagard * * This file is part of Chrysalide. * * 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 . */ #include "io.h" #include #include #include #include #include /****************************************************************************** * * * Paramètres : path = chemin d'accès à valider. * * * * Description : S'assure qu'un chemin donné existe dans le système. * * * * Retour : 0 si le chemin est actuellement présent, -1 sinon. * * * * Remarques : - * * * ******************************************************************************/ int ensure_path_exists(const char *path) { int result; /* Bilan de l'assurance */ char *copy; /* Chemin libérable */ char *tmp; /* Chemin altérable */ copy = strdup(path); tmp = dirname(copy); result = access(tmp, W_OK | X_OK); if (result != 0) { result = ensure_path_exists(tmp); if (result == 0) result = mkdir(tmp, 0700); } free(copy); return result; }