From 4929bde22edc7c545301d343e5da9b2da787aead Mon Sep 17 00:00:00 2001 From: Alexey Stratulat <alexey.stratulat@demlabs.net> Date: Mon, 10 Jun 2019 17:23:30 +0700 Subject: [PATCH] Added checks for successful opening of the configuration file and initialization of dap_common. The function of setting the logging level is also added. --- src/libdap-python.c | 60 ++++++++++++++++++++++++++++++++++----------- src/libdap-python.h | 5 ++++ 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/libdap-python.c b/src/libdap-python.c index 5e03e03..218465a 100644 --- a/src/libdap-python.c +++ b/src/libdap-python.c @@ -1,7 +1,6 @@ #include "libdap-python.h" -static PyObject *dap_init(PyObject *self, PyObject *args) -{ +static PyObject *dap_init(PyObject *self, PyObject *args){ const char *data; char *system_configs_dir; char *dap_app_name; @@ -12,13 +11,10 @@ static PyObject *dap_init(PyObject *self, PyObject *args) int lenDapAppName=0; int countSeparators=0; int lenMassives = 0; - while (*(data+lenMassives) != '\0') - { - if (*(data+lenMassives)=='\n') - { + while (*(data+lenMassives) != '\0'){ + if (*(data+lenMassives)=='\n'){ countSeparators += 1; - } - else { + }else { if (countSeparators == 0) lenSystemConfigDir++; if (countSeparators == 1) @@ -35,20 +31,56 @@ static PyObject *dap_init(PyObject *self, PyObject *args) const char* log = "_logs.txt"; memcpy(dap_app_name_logs+lenDapAppName, log,9); dap_config_init(system_configs_dir); - dap_config_open(dap_app_name); - dap_common_init(dap_app_name_logs); + if ((g_config = dap_config_open(dap_app_name) ) == NULL){ + log_it(L_CRITICAL, "Can't init general configurations"); + return PyLong_FromLong(-1); + } + if (dap_common_init(dap_app_name_logs)!=0){ + log_it(L_CRITICAL, "Can't init common functions module"); + return PyLong_FromLong(-2); + } + dap_log_level_set( dap_config_get_item_bool_default(g_config,"general","debug_mode", false)? L_DEBUG: L_NOTICE ); return PyLong_FromLong(0); } -static PyObject *dap_deinit(PyObject *self) -{ +static PyObject *dap_deinit(PyObject *self){ dap_config_deinit(); dap_common_deinit(); return PyLong_FromLong(0); } -PyMODINIT_FUNC PyInit_libdap_python_module(void) -{ +static PyObject *dap_set_log_level(PyObject *self, PyObject *args){ + const char *data; + if (!PyArg_ParseTuple(args, "s", &data)) + return NULL; + if (strcmp(data,"DEBUG") == 0){ + dap_log_level_set(L_DEBUG); + return PyLong_FromLong(0); + } + if (strcmp(data, "INFO") == 0){ + dap_log_level_set(L_INFO); + return PyLong_FromLong(0); + } + if (strcmp(data, "NOTICE") == 0){ + dap_log_level_set(L_NOTICE); + return PyLong_FromLong(0); + } + if (strcmp(data, "WARNING") == 0){ + dap_log_level_set(L_WARNING); + return PyLong_FromLong(0); + } + if (strcmp(data, "ERROR") == 0){ + dap_log_level_set(L_ERROR); + return PyLong_FromLong(0); + } + if (strcmp(data, "CRITICAL") == 0){ + dap_log_level_set(L_CRITICAL); + return PyLong_FromLong(0); + } + return PyLong_FromLong(-1); +} + +PyMODINIT_FUNC PyInit_libdap_python_module(void){ return PyModule_Create(&dapmodule); } diff --git a/src/libdap-python.h b/src/libdap-python.h index 02f9806..93c1400 100644 --- a/src/libdap-python.h +++ b/src/libdap-python.h @@ -7,13 +7,18 @@ extern "C" { #endif +#define LOG_TAG "libdap-python" + static PyObject *dap_init(PyObject *self, PyObject *args); static PyObject *dap_deinit(PyObject *self); +static PyObject *dap_set_log_level(PyObject *self, PyObject *args); + static PyMethodDef DapMethods[] = { {"init", dap_init, METH_VARARGS, "Initialization of the DAP (Deus Applicaions Prototypes) library"}, {"deinit", dap_deinit, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) library"}, + {"setLogLevel", dap_set_log_level, METH_VARARGS, "Setting the logging level"}, {NULL, NULL, 0, NULL} }; -- GitLab