summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-01-13 00:35:33 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-01-13 00:35:33 (GMT)
commita6975c1d754a1ba5bfb9e23f0b26692c746e6f9c (patch)
tree7ec962129ebbce6cd210b449443afc91ced72719 /src
parent5adcf950f1f928c7127f2d694b52addf54cc04ca (diff)
Handled the logs from the GUI, the command line and the Python bindings.
Diffstat (limited to 'src')
-rw-r--r--src/analysis/binary.c3
-rw-r--r--src/analysis/db/certs.c3
-rw-r--r--src/analysis/db/client.c2
-rw-r--r--src/analysis/db/server.c2
-rw-r--r--src/analysis/disass/area.c2
-rw-r--r--src/analysis/disass/disassembler.c1
-rw-r--r--src/analysis/disass/output.c2
-rw-r--r--src/analysis/disass/routines.c2
-rw-r--r--src/analysis/loading.c2
-rw-r--r--src/analysis/project.c2
-rwxr-xr-xsrc/core/Makefile.am1
-rw-r--r--src/core/logs.c188
-rw-r--r--src/core/logs.h60
-rw-r--r--src/debug/debugger.c2
-rw-r--r--src/debug/gdbrsp/stream.c2
-rw-r--r--src/debug/jdwp/debugger.c2
-rw-r--r--src/debug/jdwp/tcp.c2
-rw-r--r--src/format/executable.c2
-rw-r--r--src/format/format.c1
-rw-r--r--src/gui/core/theme.c2
-rw-r--r--src/gui/dialogs/identity.c2
-rw-r--r--src/gui/menus/debug.c1
-rw-r--r--src/gui/panels/log.c91
-rw-r--r--src/gui/panels/log.h19
-rw-r--r--src/main.c24
25 files changed, 293 insertions, 127 deletions
diff --git a/src/analysis/binary.c b/src/analysis/binary.c
index 5b2caf0..2769291 100644
--- a/src/analysis/binary.c
+++ b/src/analysis/binary.c
@@ -46,14 +46,15 @@
#include "../core/collections.h"
#include "../core/formats.h"
#include "../core/global.h"
+#include "../core/logs.h"
#include "../core/params.h"
#include "../core/processors.h"
//#include "../glibext/chrysamarshal.h"
+#include "../glibext/gloadedpanel.h"
#include "../gtkext/easygtk.h"
#include "../gtkext/gtkblockdisplay.h"
#include "../gtkext/gtkdisplaypanel.h"
#include "../gtkext/gtkgraphdisplay.h"
-#include "../gui/panels/log.h"
diff --git a/src/analysis/db/certs.c b/src/analysis/db/certs.c
index c6b49a8..083ef7d 100644
--- a/src/analysis/db/certs.c
+++ b/src/analysis/db/certs.c
@@ -24,6 +24,7 @@
#include "certs.h"
+#include <glib.h>
#include <malloc.h>
#include <stdio.h>
#include <openssl/err.h>
@@ -37,7 +38,7 @@
#include <i18n.h>
-#include "../../gui/panels/log.h"
+#include "../../core/logs.h"
diff --git a/src/analysis/db/client.c b/src/analysis/db/client.c
index 769eab7..aff235c 100644
--- a/src/analysis/db/client.c
+++ b/src/analysis/db/client.c
@@ -41,7 +41,7 @@
#include "misc/rlestr.h"
#include "../../common/io.h"
#include "../../common/xdg.h"
-#include "../../gui/panels/log.h"
+#include "../../core/logs.h"
diff --git a/src/analysis/db/server.c b/src/analysis/db/server.c
index 6155b6d..219b8b6 100644
--- a/src/analysis/db/server.c
+++ b/src/analysis/db/server.c
@@ -41,8 +41,8 @@
#include "misc/rlestr.h"
#include "../../common/io.h"
#include "../../common/xdg.h"
+#include "../../core/logs.h"
#include "../../core/params.h"
-#include "../../gui/panels/log.h"
diff --git a/src/analysis/disass/area.c b/src/analysis/disass/area.c
index f97a5c9..f7acb72 100644
--- a/src/analysis/disass/area.c
+++ b/src/analysis/disass/area.c
@@ -38,9 +38,9 @@
#include "../../common/bits.h"
#include "../../common/sort.h"
#include "../../core/global.h"
+#include "../../core/logs.h"
#include "../../format/format.h"
#include "../../glibext/delayed-int.h"
-#include "../../gui/panels/log.h"
diff --git a/src/analysis/disass/disassembler.c b/src/analysis/disass/disassembler.c
index 7a066fc..bb69c0e 100644
--- a/src/analysis/disass/disassembler.c
+++ b/src/analysis/disass/disassembler.c
@@ -41,7 +41,6 @@
#include "../../format/format.h"
#include "../../glibext/delayed-int.h"
#include "../../glibext/generators/prologue.h"
-#include "../../gui/panels/log.h"
#include "../../plugins/pglist.h"
diff --git a/src/analysis/disass/output.c b/src/analysis/disass/output.c
index f9656cf..3cc282a 100644
--- a/src/analysis/disass/output.c
+++ b/src/analysis/disass/output.c
@@ -30,9 +30,9 @@
#include <i18n.h>
+#include "../../core/logs.h"
#include "../../format/format.h"
#include "../../glibext/generators/rborder.h"
-#include "../../gui/panels/log.h"
diff --git a/src/analysis/disass/routines.c b/src/analysis/disass/routines.c
index 63a32cf..bc4247c 100644
--- a/src/analysis/disass/routines.c
+++ b/src/analysis/disass/routines.c
@@ -28,8 +28,8 @@
#include "limit.h"
#include "loop.h"
#include "rank.h"
+#include "../../core/logs.h"
#include "../../glibext/delayed-int.h"
-#include "../../gui/panels/log.h"
diff --git a/src/analysis/loading.c b/src/analysis/loading.c
index f8dc2c3..38d130e 100644
--- a/src/analysis/loading.c
+++ b/src/analysis/loading.c
@@ -26,9 +26,9 @@
#include "../core/formats.h"
#include "../core/global.h"
+#include "../core/logs.h"
#include "../glibext/delayed-int.h"
#include "../glibext/signal.h"
-#include "../gui/panels/log.h"
diff --git a/src/analysis/project.c b/src/analysis/project.c
index 31376de..a600788 100644
--- a/src/analysis/project.c
+++ b/src/analysis/project.c
@@ -37,10 +37,10 @@
#include "loading.h"
#include "../common/xml.h"
#include "../core/global.h"
+#include "../core/logs.h"
#include "../core/params.h"
#include "../glibext/delayed-int.h"
#include "../gui/core/panels.h"
-#include "../gui/panels/log.h"
#include "../gui/panels/panel.h"
#include "../format/format.h"
diff --git a/src/core/Makefile.am b/src/core/Makefile.am
index 26d43a5..c7700a6 100755
--- a/src/core/Makefile.am
+++ b/src/core/Makefile.am
@@ -6,6 +6,7 @@ libcore_la_SOURCES = \
core.h core.c \
formats.h formats.c \
global.h global.c \
+ logs.h logs.c \
params.h params.c \
processors.h processors.c
diff --git a/src/core/logs.c b/src/core/logs.c
new file mode 100644
index 0000000..f92e581
--- /dev/null
+++ b/src/core/logs.c
@@ -0,0 +1,188 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * logs.c - diffusion de messages d'alerte ou informatifs
+ *
+ * Copyright (C) 2017 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "logs.h"
+
+
+#include "../gui/core/panels.h"
+#include "../gui/panels/log.h"
+
+
+
+/* Conserve le niveau de filtre des messages */
+static LogMessageType _verbosity = LMT_COUNT;
+
+
+/* Affiche un message dans le terminal courant. */
+static void print_message_without_gui(LogMessageType, const char *);
+
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Fournit la verbosité des messages système. *
+* *
+* Retour : Plus faible niveau des types de message affichés. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+LogMessageType get_log_verbosity(void)
+{
+ return _verbosity;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : level = plus faible niveau des types de message affichés. *
+* *
+* Description : Définit la verbosité des messages système. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void set_log_verbosity(LogMessageType level)
+{
+ _verbosity = level;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : type = espèce du message à ajouter. *
+* msg = message à faire apparaître à l'écran. *
+* *
+* Description : Affiche un message dans le journal des messages système. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void log_simple_message(LogMessageType type, const char *msg)
+{
+ GPanelItem *item; /* Eventuel affichage présent */
+
+ if (type >= _verbosity)
+ {
+ item = get_panel_item_by_name(PANEL_LOG_ID);
+
+ if (item != NULL)
+ g_log_panel_add_message(G_LOG_PANEL(item), type, msg);
+
+ else
+ print_message_without_gui(type, msg);
+
+ }
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : type = espèce du message à ajouter. *
+* fmt = format du message à faire apparaître à l'écran. *
+* ... = éventuels arguments venant compléter le message. *
+* *
+* Description : Affiche un message dans le journal des messages système. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void log_variadic_message(LogMessageType type, const char *fmt, ...)
+{
+ size_t len; /* Taille tampon disponible */
+ char *buffer; /* Tampon du msg reconstitué */
+ int ret; /* Bilan d'une impression */
+ char *ptr; /* Nouvelle allocation */
+ va_list ap; /* Liste d'arguments variable */
+
+ len = VARIADIC_LOG_BUFSIZE;
+ buffer = calloc(len, sizeof(char));
+
+ while (buffer != NULL)
+ {
+ va_start(ap, fmt);
+ ret = vsnprintf(buffer, len, fmt, ap);
+ va_end(ap);
+
+ if (ret >= 0 && ret < len) break;
+
+ else
+ {
+ if (ret > -1) len += 1; /* glibc 2.1 */
+ else len *= 2; /* glibc 2.0 */
+
+ if ((ptr = realloc(buffer, len)) == NULL)
+ {
+ free(buffer);
+ buffer = NULL;
+ }
+ else buffer = ptr;
+
+ }
+
+ }
+
+ if (buffer != NULL)
+ {
+ log_simple_message(type, buffer);
+
+ free(buffer);
+
+ }
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : type = espèce du message à ajouter. *
+* msg = message à faire apparaître à l'écran. *
+* *
+* Description : Affiche un message dans le terminal courant. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void print_message_without_gui(LogMessageType type, const char *msg)
+{
+ printf("!! MSG :: %s\n", msg);
+
+}
diff --git a/src/core/logs.h b/src/core/logs.h
new file mode 100644
index 0000000..2199cc1
--- /dev/null
+++ b/src/core/logs.h
@@ -0,0 +1,60 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * logs.h - prototypes pour la diffusion de messages d'alerte ou informatifs
+ *
+ * Copyright (C) 2017 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _CORE_LOGS_H
+#define _CORE_LOGS_H
+
+
+#include <i18n.h>
+
+
+
+/* Type de messages disponibles */
+typedef enum _LogMessageType
+{
+ LMT_INFO, /* Information sur l'exécution */
+ LMT_PROCESS, /* Début de tâche quelconque */
+ LMT_WARNING, /* Avertissment à remonter */
+ LMT_ERROR, /* Erreur de traitement */
+ LMT_BAD_BINARY, /* Binaire malformé */
+
+ LMT_COUNT
+
+} LogMessageType;
+
+
+/* Fournit la verbosité des messages système. */
+LogMessageType get_log_verbosity(void);
+
+/* Définit la verbosité des messages système. */
+void set_log_verbosity(LogMessageType);
+
+/* Affiche un message dans le journal des messages système. */
+void log_simple_message(LogMessageType, const char *);
+
+/* Affiche un message dans le journal des messages système. */
+void log_variadic_message(LogMessageType, const char *, ...);
+
+
+
+#endif /* _CORE_LOGS_H */
diff --git a/src/debug/debugger.c b/src/debug/debugger.c
index 85ca241..4635d0e 100644
--- a/src/debug/debugger.c
+++ b/src/debug/debugger.c
@@ -35,8 +35,8 @@
#include "debugger-int.h"
#include "../common/sort.h"
+#include "../core/logs.h"
#include "../glibext/chrysamarshal.h"
-#include "../gui/panels/log.h"
#include "../plugins/pglist.h"
diff --git a/src/debug/gdbrsp/stream.c b/src/debug/gdbrsp/stream.c
index 979ed9b..d75cff4 100644
--- a/src/debug/gdbrsp/stream.c
+++ b/src/debug/gdbrsp/stream.c
@@ -36,7 +36,7 @@
#include "stream-int.h"
#include "utils.h"
#include "../../common/dllist.h"
-#include "../../gui/panels/log.h"
+#include "../../core/logs.h"
diff --git a/src/debug/jdwp/debugger.c b/src/debug/jdwp/debugger.c
index efe00d0..b73c8a3 100644
--- a/src/debug/jdwp/debugger.c
+++ b/src/debug/jdwp/debugger.c
@@ -35,7 +35,7 @@
#include "tcp.h"
#include "../debugger-int.h"
#include "../stream.h"
-#include "../../gui/panels/log.h"
+#include "../../core/logs.h"
diff --git a/src/debug/jdwp/tcp.c b/src/debug/jdwp/tcp.c
index 92dae0a..5059419 100644
--- a/src/debug/jdwp/tcp.c
+++ b/src/debug/jdwp/tcp.c
@@ -40,7 +40,7 @@
#include "sets/list.h"
#include "../stream-int.h"
#include "../../common/net.h"
-#include "../../gui/panels/log.h"
+#include "../../core/logs.h"
diff --git a/src/format/executable.c b/src/format/executable.c
index 6afe8b5..1f46721 100644
--- a/src/format/executable.c
+++ b/src/format/executable.c
@@ -32,7 +32,7 @@
#include "executable-int.h"
#include "format.h"
-#include "../gui/panels/log.h"
+#include "../core/logs.h"
diff --git a/src/format/format.c b/src/format/format.c
index ec8e5fb..1ab7efa 100644
--- a/src/format/format.c
+++ b/src/format/format.c
@@ -34,7 +34,6 @@
#include "preload.h"
#include "../arch/processor.h"
#include "../common/sort.h"
-#include "../gui/panels/log.h"
#include "../plugins/pglist.h"
diff --git a/src/gui/core/theme.c b/src/gui/core/theme.c
index 895a1a5..9c3c63b 100644
--- a/src/gui/core/theme.c
+++ b/src/gui/core/theme.c
@@ -38,9 +38,9 @@
#include <i18n.h>
-#include "../panels/log.h"
#include "../../common/extstr.h"
#include "../../common/xdg.h"
+#include "../../core/logs.h"
#include "../../core/params.h"
diff --git a/src/gui/dialogs/identity.c b/src/gui/dialogs/identity.c
index 0f6a111..3df2e91 100644
--- a/src/gui/dialogs/identity.c
+++ b/src/gui/dialogs/identity.c
@@ -30,8 +30,8 @@
#include <i18n.h>
-#include "../panels/log.h"
#include "../../analysis/db/keymgn.h"
+#include "../../core/logs.h"
diff --git a/src/gui/menus/debug.c b/src/gui/menus/debug.c
index cb270ff..3e785b5 100644
--- a/src/gui/menus/debug.c
+++ b/src/gui/menus/debug.c
@@ -32,7 +32,6 @@
#include "../../debug/debugger.h" /* REMME ! */
#include "../../gtkext/easygtk.h"
-#include "../../gui/panels/log.h"
diff --git a/src/gui/panels/log.c b/src/gui/panels/log.c
index 2fd8f4f..e547a03 100644
--- a/src/gui/panels/log.c
+++ b/src/gui/panels/log.c
@@ -88,9 +88,6 @@ static void g_log_panel_dispose(GLogPanel *);
static void g_log_panel_finalize(GLogPanel *);
/* Affiche un message dans le journal des messages système. */
-static void _log_simple_message(LogMessageType, char *);
-
-/* Affiche un message dans le journal des messages système. */
static gboolean log_message(log_data *);
@@ -270,28 +267,9 @@ GPanelItem *g_log_panel_new(void)
/******************************************************************************
* *
-* Paramètres : type = espèce du message à ajouter. *
-* msg = message à faire apparaître à l'écran. *
-* *
-* Description : Affiche un message dans le journal des messages système. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void log_simple_message(LogMessageType type, const char *msg)
-{
- _log_simple_message(type, strdup(msg));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : type = espèce du message à ajouter. *
-* msg = message à faire apparaître à l'écran. *
+* Paramètres : panel = instance d'objet GLib à traiter. *
+* type = espèce du message à ajouter. *
+* msg = message à faire apparaître à l'écran. *
* *
* Description : Affiche un message dans le journal des messages système. *
* *
@@ -301,18 +279,15 @@ void log_simple_message(LogMessageType type, const char *msg)
* *
******************************************************************************/
-static void _log_simple_message(LogMessageType type, char *msg)
+void g_log_panel_add_message(GLogPanel *panel, LogMessageType type, const char *msg)
{
- GPanelItem *item; /* Intermédiaire mis en place */
log_data *data; /* Paramètres à joindre */
- item = get_panel_item_by_name(PANEL_LOG_ID);
-
data = (log_data *)calloc(1, sizeof(log_data));
- data->item = item;
+ data->item = G_PANEL_ITEM(panel);
data->type = type;
- data->msg = msg;
+ data->msg = strdup(msg);
g_object_ref(G_OBJECT(data->item));
@@ -323,60 +298,6 @@ static void _log_simple_message(LogMessageType type, char *msg)
/******************************************************************************
* *
-* Paramètres : type = espèce du message à ajouter. *
-* fmt = format du message à faire apparaître à l'écran. *
-* ... = éventuels arguments venant compléter le message. *
-* *
-* Description : Affiche un message dans le journal des messages système. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void log_variadic_message(LogMessageType type, const char *fmt, ...)
-{
- size_t len; /* Taille tampon disponible */
- char *buffer; /* Tampon du msg reconstitué */
- int ret; /* Bilan d'une impression */
- char *ptr; /* Nouvelle allocation */
- va_list ap; /* Liste d'arguments variable */
-
- len = VARIADIC_LOG_BUFSIZE;
- buffer = calloc(len, sizeof(char));
-
- while (buffer != NULL)
- {
- va_start(ap, fmt);
- ret = vsnprintf(buffer, len, fmt, ap);
- va_end(ap);
-
- if (ret >= 0 && ret < len) break;
-
- else
- {
- if (ret > -1) len += 1; /* glibc 2.1 */
- else len *= 2; /* glibc 2.0 */
-
- if ((ptr = realloc(buffer, len)) == NULL)
- {
- free(buffer);
- buffer = NULL;
- }
- else buffer = ptr;
-
- }
-
- }
-
- _log_simple_message(type, buffer);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : data = paramètres destinés à l'affichage d'un message. *
* *
* Description : Affiche un message dans le journal des messages système. *
diff --git a/src/gui/panels/log.h b/src/gui/panels/log.h
index e37348a..dab8581 100644
--- a/src/gui/panels/log.h
+++ b/src/gui/panels/log.h
@@ -30,6 +30,7 @@
#include "panel.h"
+#include "../../core/logs.h"
@@ -55,19 +56,6 @@ typedef struct _GLogPanel GLogPanel;
typedef struct _GLogPanelClass GLogPanelClass;
-/* Type de messages disponibles */
-typedef enum _LogMessageType
-{
- LMT_INFO, /* Information sur l'exécution */
- LMT_BAD_BINARY, /* Binaire malformé */
- LMT_PROCESS, /* Début de tâche quelconque */
- LMT_ERROR, /* Erreur de traitement */
- LMT_WARNING, /* Avertissment à remonter */
-
- LMT_COUNT
-
-} LogMessageType;
-
/* Indique le type définit pour un panneau d'affichage de messages. */
GType g_log_panel_get_type(void);
@@ -76,10 +64,7 @@ GType g_log_panel_get_type(void);
GPanelItem *g_log_panel_new(void);
/* Affiche un message dans le journal des messages système. */
-void log_simple_message(LogMessageType, const char *);
-
-/* Affiche un message dans le journal des messages système. */
-void log_variadic_message(LogMessageType, const char *, ...);
+void g_log_panel_add_message(GLogPanel *, LogMessageType, const char *);
diff --git a/src/main.c b/src/main.c
index 1834352..20a443d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -36,6 +36,7 @@
#include "common/xdg.h"
#include "core/core.h"
#include "core/global.h"
+#include "core/logs.h"
#include "core/params.h"
#include "glibext/delayed.h"
#include "gui/editor.h"
@@ -89,7 +90,8 @@ static void show_chrysalide_help(const char *name)
printf("\n");
- printf("\t--batch\t\tExit after processing files.\n");
+ printf("\t--verbosity=level\tSet the log level (0 for all messages, %u for none).\n", LMT_COUNT);
+ printf("\t--batch\t\t\tExit after processing files.\n");
printf("\n");
@@ -145,6 +147,7 @@ int main(int argc, char **argv)
int result; /* Bilan de l'exécution */
bool show_help; /* Affichage de l'aide ? */
bool show_version; /* Affichage de la version ? */
+ LogMessageType verbosity; /* Niveau de filtre de message */
bool batch_mode; /* Exécution sans GUI ? */
int index; /* Indice d'argument */
int ret; /* Bilan d'un appel */
@@ -160,10 +163,11 @@ int main(int argc, char **argv)
bool welcome; /* Affichage de la bienvenue ? */
static struct option long_options[] = {
- { "help", no_argument, NULL, 'h' },
- { "version", no_argument, NULL, 'v' },
- { "batch", no_argument, NULL, 'b' },
- { NULL, 0, NULL, 0 }
+ { "help", no_argument, NULL, 'h' },
+ { "version", no_argument, NULL, 'v' },
+ { "verbosity", required_argument, NULL, 'V' },
+ { "batch", no_argument, NULL, 'b' },
+ { NULL, 0, NULL, 0 }
};
result = EXIT_FAILURE;
@@ -180,11 +184,12 @@ int main(int argc, char **argv)
show_help = false;
show_version = false;
+ verbosity = LMT_INFO;
batch_mode = false;
while (true)
{
- ret = getopt_long(argc, argv, "hvb", long_options, &index);
+ ret = getopt_long(argc, argv, "hvV:b", long_options, &index);
if (ret == -1) break;
switch (ret)
@@ -197,6 +202,10 @@ int main(int argc, char **argv)
show_version = true;
break;
+ case 'V':
+ verbosity = strtoul(optarg, NULL, 10);
+ break;
+
case 'b':
batch_mode = true;
break;
@@ -235,6 +244,9 @@ int main(int argc, char **argv)
gtk_init(&argc, &argv);
/* Initialisation du programme */
+
+ set_log_verbosity(verbosity);
+
if (!load_all_basic_components())
return EXIT_FAILURE;