diff options
Diffstat (limited to 'src/analysis/binary.c')
-rw-r--r-- | src/analysis/binary.c | 296 |
1 files changed, 0 insertions, 296 deletions
diff --git a/src/analysis/binary.c b/src/analysis/binary.c index 08bbf84..8c03dcf 100644 --- a/src/analysis/binary.c +++ b/src/analysis/binary.c @@ -47,7 +47,6 @@ #include "../core/params.h" #include "../core/processors.h" #include "../glibext/chrysamarshal.h" -#include "../glibext/delayed-int.h" #include "../gui/panels/log.h" @@ -142,68 +141,6 @@ static bool g_loaded_binary_connect_remote(GLoadedBinary *); -/* ----------------------- CHARGEMENT DE BINAIRE NON BLOQUANT ----------------------- */ - - -#define G_TYPE_BINARY_LOADER g_binary_loader_get_type() -#define G_BINARY_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_BINARY_LOADER, GBinaryLoader)) -#define G_IS_BINARY_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_BINARY_LOADER)) -#define G_BINARY_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_BINARY_LOADER, GBinaryLoaderClass)) -#define G_IS_BINARY_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_BINARY_LOADER)) -#define G_BINARY_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_BINARY_LOADER, GBinaryLoaderClass)) - - -/* Chargement non bloquant d'un binaire (instance) */ -struct _GBinaryLoader -{ - GDelayedWork parent; /* A laisser en premier */ - - bool from_content; /* Sélection de champs */ - - union - { - GBinContent *content; /* Contenu brut à disposition */ - - struct - { - char *filename; /* Chemin vers l'ensemble XML */ - char *path; /* Chemin de la définition XML */ - GStudyProject *project; /* Accès aux contenus liés */ - - }; - - }; - - GLoadedBinary *binary; /* Résultat du chargement */ - -}; - -/* Chargement non bloquant d'un binaire (classe) */ -struct _GBinaryLoaderClass -{ - GDelayedWorkClass parent; /* A laisser en premier */ - -}; - - -/* Indique le type défini pour le chargement non bloquant d'un binaire. */ -GType g_binary_loader_get_type(void); - -/* Initialise la classe des tâches de chargement non bloquant. */ -static void g_binary_loader_class_init(GBinaryLoaderClass *); - -/* Initialise une tâche de chargement non bloquant d'un binaire. */ -static void g_binary_loader_init(GBinaryLoader *); - -/* Supprime toutes les références externes. */ -static void g_binary_loader_dispose(GBinaryLoader *); - -/* Procède à la libération totale de la mémoire. */ -static void g_binary_loader_finalize(GBinaryLoader *); - -/* Réalise le chargement effectif d'un binaire. */ -static void g_binary_loader_process(GBinaryLoader *, GtkStatusStack *); - /* ---------------------------------------------------------------------------------- */ @@ -1762,236 +1699,3 @@ void ack_completed_disassembly(GDelayedDisassembly *disass, GLoadedBinary *binar g_signal_emit_by_name(binary, "disassembly-done"); } - - - -/* ---------------------------------------------------------------------------------- */ -/* CHARGEMENT DE BINAIRE NON BLOQUANT */ -/* ---------------------------------------------------------------------------------- */ - - -/* Indique le type défini pour le chargement non bloquant d'un binaire. */ -G_DEFINE_TYPE(GBinaryLoader, g_binary_loader, G_TYPE_DELAYED_WORK); - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des tâches de chargement non bloquant. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_binary_loader_class_init(GBinaryLoaderClass *klass) -{ - GObjectClass *object; /* Autre version de la classe */ - GDelayedWorkClass *work; /* Version en classe parente */ - - object = G_OBJECT_CLASS(klass); - - object->dispose = (GObjectFinalizeFunc/* ! */)g_binary_loader_dispose; - object->finalize = (GObjectFinalizeFunc)g_binary_loader_finalize; - - work = G_DELAYED_WORK_CLASS(klass); - - work->run = (run_task_fc)g_binary_loader_process; - -} - - -/****************************************************************************** -* * -* Paramètres : loader = instance à initialiser. * -* * -* Description : Initialise une tâche de chargement non bloquant d'un binaire.* -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_binary_loader_init(GBinaryLoader *loader) -{ - loader->binary = NULL; - -} - - -/****************************************************************************** -* * -* Paramètres : loader = instance d'objet GLib à traiter. * -* * -* Description : Supprime toutes les références externes. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_binary_loader_dispose(GBinaryLoader *loader) -{ - if (loader->from_content) - g_object_unref(G_OBJECT(loader->content)); - - else - g_object_unref(G_OBJECT(loader->project)); - - if (loader->binary != NULL) - g_object_unref(G_OBJECT(loader->binary)); - - G_OBJECT_CLASS(g_binary_loader_parent_class)->dispose(G_OBJECT(loader)); - -} - - -/****************************************************************************** -* * -* Paramètres : loader = instance d'objet GLib à traiter. * -* * -* Description : Procède à la libération totale de la mémoire. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_binary_loader_finalize(GBinaryLoader *loader) -{ - if (!loader->from_content) - { - free(loader->filename); - free(loader->path); - } - - G_OBJECT_CLASS(g_binary_loader_parent_class)->finalize(G_OBJECT(loader)); - -} - - -/****************************************************************************** -* * -* Paramètres : content = contenu binaire chargé en mémoire. * -* * -* Description : Prépare le chargement non bloqué d'un contenu binaire. * -* * -* Retour : Instance de binaire chargé ou NULL en cas d'échec. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GBinaryLoader *g_binary_loader_new(GBinContent *content) -{ - GBinaryLoader *result; /* Tâche à retourner */ - - result = g_object_new(G_TYPE_BINARY_LOADER, NULL); - - result->from_content = true; - - result->content = content; - g_object_ref(G_OBJECT(content)); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : filename = chemin d'accès au fichier à charger. * -* path = chemin d'accès au noeud XML à lire. * -* project = projet dans lequel venir rechercher les contenus. * -* * -* Description : Prépare le chargement non bloqué d'un contenu XML. * -* * -* Retour : Instance de binaire chargé ou NULL en cas d'échec. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GBinaryLoader *g_binary_loader_new_from_xml(const char *filename, const char *path, GStudyProject *project) -{ - GBinaryLoader *result; /* Tâche à retourner */ - - result = g_object_new(G_TYPE_BINARY_LOADER, NULL); - - result->from_content = false; - - result->filename = strdup(filename); - result->path = strdup(path); - result->project = project; - g_object_ref(G_OBJECT(project)); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : loader = encadrement du chargement à mener. * -* status = barre de statut à tenir informée. * -* * -* Description : Réalise le chargement effectif d'un binaire. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_binary_loader_process(GBinaryLoader *loader, GtkStatusStack *status) -{ - xmlDocPtr xdoc; /* Structure XML chargée */ - xmlXPathContextPtr context; /* Contexte pour les XPath */ - - if (loader->from_content) - loader->binary = g_loaded_binary_new(loader->content); - - else - { - if (open_xml_file(loader->filename, &xdoc, &context)) - { - loader->binary = g_loaded_binary_new_from_xml(context, loader->path, loader->project); - - close_xml_file(xdoc, context); - - } - - } - -} - - -/****************************************************************************** -* * -* Paramètres : loader = encadrement du chargement à consulter. * -* * -* Description : Retourne l'instance du binaire chargé en cas de succès. * -* * -* Retour : Instance mise en place ou NULL. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GLoadedBinary *g_binary_loader_get_result(const GBinaryLoader *loader) -{ - GLoadedBinary *result; /* Chargement à faire suivre */ - - result = loader->binary; - - if (result != NULL) - g_object_ref(G_OBJECT(result)); - - return result; - -} |