summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2024-05-14 20:00:12 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2024-05-14 20:00:12 (GMT)
commited57185faa4d7a53d953cf74a6f8626f44ce9b75 (patch)
treef34cb583e8c0d054676adb9f1da826aa92479d11
parente9f10d8fe1c5e9f8a70801c1cd4d3d342e290f15 (diff)
Restore some logging facilities with automatic switch to the GUI.
-rw-r--r--src/Makefile.am23
-rw-r--r--src/common/Makefile.am9
-rw-r--r--src/common/extstr.c14
-rw-r--r--src/core/Makefile.am8
-rw-r--r--src/core/logs.c32
-rw-r--r--src/gui/Makefile.am14
-rw-r--r--src/gui/core/Makefile.am10
-rw-r--r--src/gui/core/logs.c63
-rw-r--r--src/gui/core/logs.h37
9 files changed, 166 insertions, 44 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 89721b9..4a81282 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,5 @@
-lib_LTLIBRARIES = libchrysacoreui.la # libchrysacore.la
+lib_LTLIBRARIES = libchrysacore4.la libchrysacoreui.la # libchrysacore.la
bin_PROGRAMS = framework # chrysalide chrysalide-hub rost
@@ -74,6 +74,16 @@ libchrysacore_la_LDFLAGS += $(LIBMAGIC_LIBS)
endif
+libchrysacore4_la_SOURCES =
+
+libchrysacore4_la_LIBADD = \
+ common/libcommon4.la \
+ core/libcore4.la
+
+libchrysacore4_la_LDFLAGS = \
+ $(TOOLKIT_LIBS)
+
+
#--- libchrysacoreui
if BUILD_GTK_SUPPORT
@@ -81,7 +91,8 @@ if BUILD_GTK_SUPPORT
libchrysacoreui_la_SOURCES =
libchrysacoreui_la_LIBADD = \
- gtkext/libgtkext4.la
+ gtkext/libgtkext4.la \
+ gui/libgui4.la
libchrysacoreui_la_LDFLAGS = \
$(LIBGTK4_CFLAGS)
@@ -110,7 +121,7 @@ chrysalide_LDADD = $(LIBINTL)
-EXTRA_framework_DEPENDENCIES = libchrysacoreui.la
+EXTRA_framework_DEPENDENCIES = libchrysacore4.la libchrysacoreui.la
framework_SOURCES = \
framework.h framework.c
@@ -118,7 +129,7 @@ framework_SOURCES = \
framework_CFLAGS = $(TOOLKIT4_CFLAGS)
framework_LDFLAGS = $(TOOLKIT4_LIBS) \
- -L.libs -lchrysacoreui
+ -L.libs -lchrysacore4 -lchrysacoreui
framework_LDADD =
@@ -162,4 +173,6 @@ rost_LDFLAGS = $(LIBGOBJ_LIBS) -L.libs -lchrysacore
# glibext doit être traité en premier, à cause des marshals GLib
-SUBDIRS = core glibext $(GTKEXT_SUBDIR) analysis arch format common debug $(GUI_SUBDIR) mangling plugins schemas
+#SUBDIRS = core glibext $(GTKEXT_SUBDIR) analysis arch format common debug $(GUI_SUBDIR) mangling plugins schemas
+
+SUBDIRS = common core glibext gtkext gui
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 1a8f8c4..53d3627 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -1,5 +1,5 @@
-noinst_LTLIBRARIES = libcommon.la
+noinst_LTLIBRARIES = libcommon4.la # libcommon.la
libcommon_la_SOURCES = \
alloc.h alloc.c \
@@ -51,6 +51,13 @@ libcommon_la_CFLAGS += $(LIBCURL_CFLAGS)
endif
+
+libcommon4_la_SOURCES = \
+ extstr.h extstr.c
+
+libcommon4_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
+
+
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libcommon_la_SOURCES:%c=)
diff --git a/src/common/extstr.c b/src/common/extstr.c
index ac93f5d..bd3491f 100644
--- a/src/common/extstr.c
+++ b/src/common/extstr.c
@@ -55,7 +55,7 @@ char *stradd(char *str1, const char *str2)
else
{
- result = (char *)realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char));
+ result = realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char));
strcat(result, str2);
}
@@ -87,7 +87,7 @@ char *strnadd(char *str1, const char *str2, size_t n)
else
{
- result = (char *)realloc(str1, (strlen(str1) + n + 1) * sizeof(char));
+ result = realloc(str1, (strlen(str1) + n + 1) * sizeof(char));
strncat(result, str2, n);
}
@@ -155,7 +155,7 @@ char *strprep(char *str1, const char *str2)
char *result; /* Chaîne à renvoyer */
size_t len2; /* Taille de la seconde chaîne */
- result = (char *)realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char));
+ result = realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char));
len2 = strlen(str2);
@@ -261,7 +261,7 @@ char *strrpl(char *haystack, const char *needle1, const char *needle2)
{
inlen += (len2 - len1);
- haystack = (char *)realloc(haystack, inlen * sizeof(char *));
+ haystack = realloc(haystack, inlen * sizeof(char *));
found = haystack + index;
memmove(found + len2, found + len1, inlen - len2 - index);
@@ -274,7 +274,7 @@ char *strrpl(char *haystack, const char *needle1, const char *needle2)
inlen -= (len1 - len2);
- haystack = (char *)realloc(haystack, inlen * sizeof(char *));
+ haystack = realloc(haystack, inlen * sizeof(char *));
found = haystack + index;
}
@@ -390,7 +390,7 @@ char **strtoka(const char *str, const char *delim, size_t *count)
for (word = strtok(tmp, delim); word != NULL; word = strtok(NULL, delim))
{
- result = (char **)realloc(result, ++(*count) * sizeof(char *));
+ result = realloc(result, ++(*count) * sizeof(char *));
result[*count - 1] = strdup(word);
}
@@ -428,7 +428,7 @@ char *escape_crlf(char *input)
for (curpos = 0; regexec(&preg, &input[curpos], 2, pmatch, 0) != REG_NOMATCH; )
{
inlen += 1 + 1;
- input = (char *)realloc(input, inlen * sizeof(char *));
+ input = realloc(input, inlen * sizeof(char *));
memmove(&input[curpos + pmatch[1].rm_eo + 1], &input[curpos + pmatch[1].rm_eo], inlen - 1 - curpos - pmatch[1].rm_eo);
diff --git a/src/core/Makefile.am b/src/core/Makefile.am
index ac1ae14..f329a09 100644
--- a/src/core/Makefile.am
+++ b/src/core/Makefile.am
@@ -1,5 +1,5 @@
-noinst_LTLIBRARIES = libcore.la
+noinst_LTLIBRARIES = libcore4.la # libcore.la
libcore_la_SOURCES = \
collections.h collections.c \
@@ -17,6 +17,12 @@ libcore_la_SOURCES = \
libcore_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
+libcore4_la_SOURCES = \
+ logs.h logs.c
+
+libcore4_la_CFLAGS = $(TOOLKIT_CFLAGS)
+
+
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libcore_la_SOURCES:%c=)
diff --git a/src/core/logs.c b/src/core/logs.c
index 2b2b1ab..453eaff 100644
--- a/src/core/logs.c
+++ b/src/core/logs.c
@@ -29,10 +29,6 @@
#include "../common/extstr.h"
-#ifdef INCLUDE_GTK_SUPPORT
-# include "../gui/core/items.h"
-# include "../gui/panels/log.h"
-#endif
@@ -45,9 +41,11 @@
/* Conserve le niveau de filtre des messages */
static LogMessageType _verbosity = LMT_COUNT;
+/* Affiche un message dans le terminal courant. */
+__attribute__((weak)) void do_log_message_alt(LogMessageType, const char *);
/* Affiche un message dans le terminal courant. */
-static void print_message_without_gui(LogMessageType, const char *);
+static void do_log_message_nox(LogMessageType, const char *);
@@ -109,28 +107,12 @@ void set_log_verbosity(LogMessageType level)
void log_simple_message(LogMessageType type, const char *msg)
{
-#ifdef INCLUDE_GTK_SUPPORT
- GEditorItem *item; /* Eventuel affichage présent */
-#endif
-
if (type >= _verbosity)
{
-#ifdef INCLUDE_GTK_SUPPORT
-
- item = find_editor_item_by_type(G_TYPE_LOG_PANEL);
-
- if (item != NULL)
- {
- g_log_panel_add_message(G_LOG_PANEL(item), type, msg);
- g_object_unref(G_OBJECT(item));
- }
-
+ if (do_log_message_alt != NULL)
+ do_log_message_alt(type, msg);
else
-
-#endif
-
- print_message_without_gui(type, msg);
-
+ do_log_message_nox(type, msg);
}
}
@@ -236,7 +218,7 @@ void log_variadic_message(LogMessageType type, const char *fmt, ...)
* *
******************************************************************************/
-static void print_message_without_gui(LogMessageType type, const char *msg)
+static void do_log_message_nox(LogMessageType type, const char *msg)
{
char *formatted; /* Copie formatée du message */
const char *prefix; /* Introduction de la ligne */
diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am
index 058b36e..f4a682c 100644
--- a/src/gui/Makefile.am
+++ b/src/gui/Makefile.am
@@ -1,7 +1,7 @@
-BUILT_SOURCES = resources.h resources.c
+#BUILT_SOURCES = resources.h resources.c
-noinst_LTLIBRARIES = libgui.la
+noinst_LTLIBRARIES = libgui4.la #libgui.la
UI_FILES = \
editor.ui
@@ -28,12 +28,20 @@ libgui_la_LIBADD = \
libgui_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
+libgui4_la_SOURCES =
+
+libgui4_la_LIBADD = \
+ core/libguicore4.la
+
+libgui4_la_CFLAGS = $(LIBGTK4_CFLAGS)
+
+
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libgui_la_SOURCES:%c=)
-SUBDIRS = core dialogs menus panels tb
+SUBDIRS = core # dialogs menus panels tb
resources.c: gresource.xml $(UI_FILES)
diff --git a/src/gui/core/Makefile.am b/src/gui/core/Makefile.am
index 2077c4b..c219655 100644
--- a/src/gui/core/Makefile.am
+++ b/src/gui/core/Makefile.am
@@ -1,7 +1,7 @@
-BUILT_SOURCES = resources.h resources.c
+#BUILT_SOURCES = resources.h resources.c
-noinst_LTLIBRARIES = libguicore.la
+noinst_LTLIBRARIES = libguicore4.la # libguicore.la
RES_FILES = \
../../../pixmaps/palette.png \
@@ -23,6 +23,12 @@ libguicore_la_SOURCES = \
libguicore_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
+libguicore4_la_SOURCES = \
+ logs.h logs.c
+
+libguicore4_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
+
+
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libguicore_la_SOURCES:%c=)
diff --git a/src/gui/core/logs.c b/src/gui/core/logs.c
new file mode 100644
index 0000000..59910f1
--- /dev/null
+++ b/src/gui/core/logs.c
@@ -0,0 +1,63 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * logs.h - prototypes pour la diffusion graphique de messages d'alerte ou informatifs
+ *
+ * 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 Chrysalide. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "logs.h"
+
+
+
+/******************************************************************************
+* *
+* 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 : - *
+* *
+******************************************************************************/
+
+void do_log_message_alt2(LogMessageType type, const char *msg)
+{
+#if 0
+
+#ifdef INCLUDE_GTK_SUPPORT
+
+ GEditorItem *item; /* Eventuel affichage présent */
+
+ item = find_editor_item_by_type(G_TYPE_LOG_PANEL);
+
+ if (item != NULL)
+ {
+ g_log_panel_add_message(G_LOG_PANEL(item), type, msg);
+ g_object_unref(G_OBJECT(item));
+ }
+
+#endif
+
+#endif
+
+ printf("[log GUI] [%u] %s\n", type, msg);
+
+}
diff --git a/src/gui/core/logs.h b/src/gui/core/logs.h
new file mode 100644
index 0000000..b489339
--- /dev/null
+++ b/src/gui/core/logs.h
@@ -0,0 +1,37 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * logs.h - prototypes pour la diffusion graphique de messages d'alerte ou informatifs
+ *
+ * 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 Chrysalide. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _GUI_CORE_LOGS_H
+#define _GUI_CORE_LOGS_H
+
+
+#include "../../core/logs.h"
+
+
+
+/* Affiche un message dans le terminal courant. */
+void do_log_message_alt(LogMessageType, const char *);
+
+
+
+#endif /* _GUI_CORE_LOGS_H */