commit dd677bd0e6fe5d7082640032f18deffb2ca778b0
parent 75722552afbdbb82f35b90ce2aef74e648b9634f
Author: Holger Berndt <hb@claws-mail.org>
Date: Sun, 9 Jun 2013 20:38:23 +0200
Python plugin: Better error reporting during directory creation
Diffstat:
1 file changed, 29 insertions(+), 10 deletions(-)
diff --git a/src/plugins/python/python_plugin.c b/src/plugins/python/python_plugin.c
@@ -25,6 +25,8 @@
#include <Python.h>
+#include <errno.h>
+
#include "common/hooks.h"
#include "common/plugin.h"
#include "common/version.h"
@@ -228,23 +230,40 @@ static void compose_toolbar_callback(gpointer parent, const gchar *item_name, gp
g_free(filename);
}
-static void make_sure_script_directory_exists(const gchar *subdir)
+static char* make_sure_script_directory_exists(const gchar *subdir)
{
char *dir;
+ char *retval = NULL;
dir = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, PYTHON_SCRIPTS_BASE_DIR, G_DIR_SEPARATOR_S, subdir, NULL);
if(!g_file_test(dir, G_FILE_TEST_IS_DIR)) {
if(g_mkdir(dir, 0777) != 0)
- debug_print("Python plugin: Could not create directory '%s'\n", dir);
+ retval = g_strdup_printf("Could not create directory '%s': %s", dir, g_strerror(errno));
}
g_free(dir);
+ return retval;
}
-static void make_sure_directories_exist(void)
+static int make_sure_directories_exist(char **error)
{
- make_sure_script_directory_exists("");
- make_sure_script_directory_exists(PYTHON_SCRIPTS_MAIN_DIR);
- make_sure_script_directory_exists(PYTHON_SCRIPTS_COMPOSE_DIR);
- make_sure_script_directory_exists(PYTHON_SCRIPTS_AUTO_DIR);
+ const char* dirs[] = {
+ ""
+ , PYTHON_SCRIPTS_MAIN_DIR
+ , PYTHON_SCRIPTS_COMPOSE_DIR
+ , PYTHON_SCRIPTS_AUTO_DIR
+ , NULL
+ };
+ const char **dir = dirs;
+
+ *error = NULL;
+
+ while(*dir) {
+ *error = make_sure_script_directory_exists(*dir);
+ if(*error)
+ break;
+ dir++;
+ }
+
+ return (*error == NULL);
}
static void migrate_scripts_out_of_base_dir(void)
@@ -544,8 +563,7 @@ void python_menu_done(void)
gint plugin_init(gchar **error)
{
/* Version check */
- if(!check_plugin_version(MAKE_NUMERIC_VERSION(3,7,6,9),
- VERSION_NUMERIC, _("Python"), error))
+ if(!check_plugin_version(MAKE_NUMERIC_VERSION(3,7,6,9), VERSION_NUMERIC, _("Python"), error))
return -1;
/* load hooks */
@@ -556,7 +574,8 @@ gint plugin_init(gchar **error)
}
/* script directories */
- make_sure_directories_exist();
+ if(!make_sure_directories_exist(error))
+ return -1;
/* initialize python interpreter */
Py_Initialize();