From 8f3a80574fa3f1fa99a0d54df5c06d7fd054eae3 Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Sun, 23 Aug 2009 23:41:12 +0300 Subject: [PATCH] Move ensure_dir_exist() to separate files It is needed for more than composing log file path. Studio, room, project xml file paths need it too. --- daemon/dirhelpers.c | 66 +++++++++++++++++++++++++++++++++++++++++++++ daemon/dirhelpers.h | 32 ++++++++++++++++++++++ daemon/log.c | 51 +++++------------------------------ wscript | 1 + 4 files changed, 105 insertions(+), 45 deletions(-) create mode 100644 daemon/dirhelpers.c create mode 100644 daemon/dirhelpers.h diff --git a/daemon/dirhelpers.c b/daemon/dirhelpers.c new file mode 100644 index 00000000..56328cb5 --- /dev/null +++ b/daemon/dirhelpers.c @@ -0,0 +1,66 @@ +/* -*- Mode: C ; c-basic-offset: 2 -*- */ +/* + * LADI Session Handler (ladish) + * + * Copyright (C) 2009 Nedko Arnaudov + * + ************************************************************************** + * This file contains implementation of the directory helper functions + ************************************************************************** + * + * LADI Session Handler 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 2 of the License, or + * (at your option) any later version. + * + * LADI Session Handler 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 LADI Session Handler. If not, see + * or write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "common.h" + +#include +#include +#include + +bool +ensure_dir_exist( + const char * dirname, + int mode) +{ + struct stat st; + if (stat(dirname, &st) != 0) + { + if (errno == ENOENT) + { + lash_info("Directory \"%s\" does not exist. Creating...", dirname); + if (mkdir(dirname, mode) != 0) + { + lash_error("Failed to create \"%s\" directory: %d (%s)", dirname, errno, strerror(errno)); + return false; + } + } + else + { + lash_error("Failed to stat \"%s\": %d (%s)", dirname, errno, strerror(errno)); + return false; + } + } + else + { + if (!S_ISDIR(st.st_mode)) + { + lash_error("\"%s\" exists but is not directory.", dirname); + return false; + } + } + + return true; +} diff --git a/daemon/dirhelpers.h b/daemon/dirhelpers.h new file mode 100644 index 00000000..1c1fed53 --- /dev/null +++ b/daemon/dirhelpers.h @@ -0,0 +1,32 @@ +/* -*- Mode: C ; c-basic-offset: 2 -*- */ +/* + * LADI Session Handler (ladish) + * + * Copyright (C) 2009 Nedko Arnaudov + * + ************************************************************************** + * This file contains prototypes of the directory helper functions + ************************************************************************** + * + * LADI Session Handler 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 2 of the License, or + * (at your option) any later version. + * + * LADI Session Handler 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 LADI Session Handler. If not, see + * or write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef DIRHELPERS_H__805193D2_2662_40FA_8814_AF8A4E08F4B0__INCLUDED +#define DIRHELPERS_H__805193D2_2662_40FA_8814_AF8A4E08F4B0__INCLUDED + +bool ensure_dir_exist(const char * dirname, int mode); + +#endif /* #ifndef DIRHELPERS_H__805193D2_2662_40FA_8814_AF8A4E08F4B0__INCLUDED */ diff --git a/daemon/log.c b/daemon/log.c index 3255384e..cd9a5eb4 100644 --- a/daemon/log.c +++ b/daemon/log.c @@ -25,18 +25,14 @@ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "../common.h" + +#include +#include +#include -#include "../common/debug.h" #include "../catdup.h" +#include "dirhelpers.h" #define DEFAULT_XDG_LOG "/.log" #define LASH_XDG_SUBDIR "/" BASE_NAME @@ -44,41 +40,6 @@ FILE * g_logfile; -bool -ensure_dir_exist( - const char * dirname, - int mode) -{ - struct stat st; - if (stat(dirname, &st) != 0) - { - if (errno == ENOENT) - { - lash_info("Directory \"%s\" does not exist. Creating...", dirname); - if (mkdir(dirname, mode) != 0) - { - lash_error("Failed to create \"%s\" directory: %d (%s)", dirname, errno, strerror(errno)); - return false; - } - } - else - { - lash_error("Failed to stat \"%s\": %d (%s)", dirname, errno, strerror(errno)); - return false; - } - } - else - { - if (!S_ISDIR(st.st_mode)) - { - lash_error("\"%s\" exists but is not directory.", dirname); - return false; - } - } - - return true; -} - void lash_log_init() __attribute__ ((constructor)); void lash_log_init() { diff --git a/wscript b/wscript index 32bafeaa..0d4a5795 100644 --- a/wscript +++ b/wscript @@ -173,6 +173,7 @@ def build(bld): 'main.c', 'loader.c', 'log.c', + 'dirhelpers.c', 'sigsegv.c', 'proctitle.c', 'appdb.c',