From f34023c5c6d47ccfed65ea9b61497b4febb8746c Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Fri, 27 Apr 2018 12:13:20 +0200
Subject: Skipped the instruction printing in batch mode.

---
 src/analysis/disass/disassembler.c |  3 ++-
 src/core/global.c                  | 41 ++++++++++++++++++++++++++++++++++++++
 src/core/global.h                  |  9 +++++++++
 src/main.c                         |  3 +++
 4 files changed, 55 insertions(+), 1 deletion(-)

diff --git a/src/analysis/disass/disassembler.c b/src/analysis/disass/disassembler.c
index dded65b..ca5e565 100644
--- a/src/analysis/disass/disassembler.c
+++ b/src/analysis/disass/disassembler.c
@@ -427,7 +427,8 @@ void disassemble_binary(GLoadedBinary *binary, wgroup_id_t gid, GtkStatusStack *
 
     process_disassembly_event(PGA_DISASSEMBLY_ENDED, binary);
 
-    output_disassembly(binary, context, status, cache);
+    if (!is_batch_mode())
+        output_disassembly(binary, context, status, cache);
 
     /* Nettoyage final et sortie ! */
 
diff --git a/src/core/global.c b/src/core/global.c
index decf300..8736b30 100644
--- a/src/core/global.c
+++ b/src/core/global.c
@@ -28,6 +28,9 @@
 
 
 
+/* Mode de fonctionnement */
+static bool _batch_mode = false;
+
 /* Gestionnaire de tâches parallèles */
 static GWorkQueue *_queue = NULL;
 
@@ -47,6 +50,44 @@ static current_project_change_cb _project_notify = NULL;
 
 /******************************************************************************
 *                                                                             *
+*  Paramètres  : -                                                            *
+*                                                                             *
+*  Description : Note un mode d'exécution sans interface.                     *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+void set_batch_mode(void)
+{
+    _batch_mode = true;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : -                                                            *
+*                                                                             *
+*  Description : Indique le mode d'exécution courant du programme.            *
+*                                                                             *
+*  Retour      : true si le fonctionnement est sans interface.                *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+bool is_batch_mode(void)
+{
+    return _batch_mode;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
 *  Paramètres  : queue = nouveau gestionnaire à mémoriser ou NULL.            *
 *                                                                             *
 *  Description : Définit le gestionnaire de traitements parallèles courant.   *
diff --git a/src/core/global.h b/src/core/global.h
index 5f01909..f398621 100644
--- a/src/core/global.h
+++ b/src/core/global.h
@@ -25,12 +25,21 @@
 #define _CORE_GLOBAL_H
 
 
+#include <stdbool.h>
+
+
 #include "../analysis/loading.h"
 #include "../analysis/project.h"
 #include "../glibext/delayed.h"
 
 
 
+/* Note un mode d'exécution sans interface. */
+void set_batch_mode(void);
+
+/* Indique le mode d'exécution courant du programme. */
+bool is_batch_mode(void);
+
 /* Définit le gestionnaire de traitements parallèles courant. */
 void set_work_queue(GWorkQueue *);
 
diff --git a/src/main.c b/src/main.c
index 0abc29f..793a735 100644
--- a/src/main.c
+++ b/src/main.c
@@ -253,6 +253,9 @@ int main(int argc, char **argv)
 
     /* Initialisation du programme */
 
+    if (batch_mode)
+        set_batch_mode();
+
     set_log_verbosity(verbosity);
 
     if (!load_all_basic_components())
-- 
cgit v0.11.2-87-g4458