diff options
Diffstat (limited to 'plugins/pychrysalide')
-rw-r--r-- | plugins/pychrysalide/core.c | 6 | ||||
-rw-r--r-- | plugins/pychrysalide/core/Makefile.am | 3 | ||||
-rw-r--r-- | plugins/pychrysalide/core/module.c | 2 | ||||
-rw-r--r-- | plugins/pychrysalide/core/nox.c | 110 | ||||
-rw-r--r-- | plugins/pychrysalide/core/nox.h | 39 |
5 files changed, 156 insertions, 4 deletions
diff --git a/plugins/pychrysalide/core.c b/plugins/pychrysalide/core.c index 8510d78..a4de749 100644 --- a/plugins/pychrysalide/core.c +++ b/plugins/pychrysalide/core.c @@ -61,8 +61,8 @@ #include "analysis/module.h" #include "arch/module.h" #include "common/module.h" +#include "core/module.h" #include "glibext/module.h" -/* #include "core/module.h" */ /* #include "debug/module.h" */ /* #include "format/module.h" */ /* #ifdef INCLUDE_GTK_SUPPORT */ @@ -647,8 +647,8 @@ PyMODINIT_FUNC PyInit_pychrysalide(void) if (status) status = add_arch_module(result); if (status) status = add_common_module(result); if (status) status = add_glibext_module(result); - /* if (status) status = add_core_module(result); + /* if (status) status = add_debug_module(result); if (status) status = add_format_module(result); #ifdef INCLUDE_GTK_SUPPORT @@ -670,8 +670,8 @@ PyMODINIT_FUNC PyInit_pychrysalide(void) if (status) status = populate_arch_module(); if (status) status = populate_glibext_module(); if (status) status = populate_common_module(); - /* if (status) status = populate_core_module(); + /* if (status) status = populate_debug_module(); if (status) status = populate_format_module(); #ifdef INCLUDE_GTK_SUPPORT diff --git a/plugins/pychrysalide/core/Makefile.am b/plugins/pychrysalide/core/Makefile.am index a50324a..5588c9f 100644 --- a/plugins/pychrysalide/core/Makefile.am +++ b/plugins/pychrysalide/core/Makefile.am @@ -14,7 +14,8 @@ noinst_LTLIBRARIES = libpychrysacore.la libpychrysacore_la_SOURCES = \ constants.h constants.c \ logs.h logs.c \ - module.h module.c + module.h module.c \ + nox.h nox.c libpychrysacore_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_INTERPRETER_CFLAGS) $(LIBPYGOBJECT_CFLAGS) \ -I$(top_srcdir)/src -DNO_IMPORT_PYGOBJECT diff --git a/plugins/pychrysalide/core/module.c b/plugins/pychrysalide/core/module.c index b588057..4af0403 100644 --- a/plugins/pychrysalide/core/module.c +++ b/plugins/pychrysalide/core/module.c @@ -31,6 +31,7 @@ //#include "demanglers.h" //#include "global.h" #include "logs.h" +#include "nox.h" //#include "params.h" //#include "processors.h" //#include "queue.h" @@ -105,6 +106,7 @@ bool populate_core_module(void) //if (result) result = populate_core_module_with_demanglers(); //if (result) result = populate_core_module_with_global(); if (result) result = populate_core_module_with_logs(); + if (result) result = populate_core_module_with_nox(); //if (result) result = populate_core_module_with_params(); //if (result) result = populate_core_module_with_processors(); //if (result) result = populate_core_module_with_queue(); diff --git a/plugins/pychrysalide/core/nox.c b/plugins/pychrysalide/core/nox.c new file mode 100644 index 0000000..46a4847 --- /dev/null +++ b/plugins/pychrysalide/core/nox.c @@ -0,0 +1,110 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * nox.c - équivalent Python du fichier "core/nox.c" + * + * Copyright (C) 2024 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide 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. + * + * Chrysalide 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#include "nox.h" + + +#include <pygobject.h> + + +#include <core/nox.h> +#include <plugins/self.h> + + +#include "../access.h" +#include "../helpers.h" + + + +/* Indique la présence ou l'absence d'un affichage graphique. */ +static PyObject *py_nox_run_in_nox_mode(PyObject *, PyObject *); + + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* args = arguments fournis à l'appel. * +* * +* Description : Indique la présence ou l'absence d'un affichage graphique. * +* * +* Retour : Statut à transmettre. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_nox_run_in_nox_mode(PyObject *self, PyObject *args) +{ + PyObject *result; /* Conversion à retourner */ + bool status; /* Statut à retransmettre */ + +#define NOX_RUN_IN_NOX_MODE_METHOD PYTHON_METHOD_DEF \ +( \ + run_in_nox_mode, "", \ + METH_NOARGS, py_nox, \ + "Tell if Chrysalide runs with a graphical support or not." \ + "\n" \ + "The result is a boolean status: *True* in case of terminal only mode." \ +) + + status = run_in_nox_mode(); + + result = status ? Py_True : Py_False; + Py_INCREF(result); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : - * +* * +* Description : Définit une extension du module 'core' à compléter. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool populate_core_module_with_nox(void) +{ + bool result; /* Bilan à retourner */ + PyObject *module; /* Module à recompléter */ + + static PyMethodDef py_nox_methods[] = { + NOX_RUN_IN_NOX_MODE_METHOD, + { NULL } + }; + + module = get_access_to_python_module("pychrysalide.core"); + + result = register_python_module_methods(module, py_nox_methods); + + return result; + +} diff --git a/plugins/pychrysalide/core/nox.h b/plugins/pychrysalide/core/nox.h new file mode 100644 index 0000000..042f5a8 --- /dev/null +++ b/plugins/pychrysalide/core/nox.h @@ -0,0 +1,39 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * nox.h - prototypes pour l'équivalent Python du fichier "core/nox.h" + * + * Copyright (C) 2024 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide 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. + * + * Chrysalide 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#ifndef _PLUGINS_PYCHRYSALIDE_CORE_NOX_H +#define _PLUGINS_PYCHRYSALIDE_CORE_NOX_H + + +#include <Python.h> +#include <stdbool.h> + + + +/* Définit une extension du module 'core' à compléter. */ +bool populate_core_module_with_nox(void); + + + +#endif /* _PLUGINS_PYCHRYSALIDE_CORE_NOX_H */ |