diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2019-11-28 22:41:37 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2019-11-28 22:41:37 (GMT) |
commit | 48395d4471d87c20bdbd06bbab1ae3af938ff823 (patch) | |
tree | 00aaaabb7370d6163ed9a2a4f77f9a177f8126f7 /src/analysis/contents | |
parent | 472d566943f527e18eb95f31dbe70c50043396aa (diff) |
Improved the API for binary contents a little bit.
Diffstat (limited to 'src/analysis/contents')
-rw-r--r-- | src/analysis/contents/encapsulated.c | 75 | ||||
-rw-r--r-- | src/analysis/contents/encapsulated.h | 9 | ||||
-rw-r--r-- | src/analysis/contents/file.c | 30 | ||||
-rw-r--r-- | src/analysis/contents/file.h | 3 | ||||
-rw-r--r-- | src/analysis/contents/restricted.c | 26 | ||||
-rw-r--r-- | src/analysis/contents/restricted.h | 3 |
6 files changed, 146 insertions, 0 deletions
diff --git a/src/analysis/contents/encapsulated.c b/src/analysis/contents/encapsulated.c index 8a6ecae..69d4a75 100644 --- a/src/analysis/contents/encapsulated.c +++ b/src/analysis/contents/encapsulated.c @@ -824,3 +824,78 @@ static bool g_encaps_content_read_leb128(const GEncapsContent *content, vmpa2t * return result; } + + +/****************************************************************************** +* * +* Paramètres : content = contenu binaire à venir consulter. * +* * +* Description : Indique la base d'un contenu binaire encapsulé. * +* * +* Retour : Instance de contenu binaire ou NULL si aucune. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GBinContent *g_encaps_content_get_base(const GEncapsContent *content) +{ + GBinContent *result; /* Contenu binaire à renvoyer */ + + result = content->base; + + if (result != NULL) + g_object_ref(G_OBJECT(result)); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : content = contenu binaire à venir consulter. * +* * +* Description : Fournit le chemin vers le contenu interne représenté. * +* * +* Retour : Chemin d'accès au contenu binaire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +const char *g_encaps_content_get_path(const GEncapsContent *content) +{ + char *result; /* Chemin d'accès à retourner */ + + result = content->path; + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : content = contenu binaire à venir consulter. * +* * +* Description : Indique le contenu binaire embarqué dans une encapsulation. * +* * +* Retour : Instance de contenu binaire ou NULL si aucune. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GBinContent *g_encaps_content_get_endpoint(const GEncapsContent *content) +{ + GBinContent *result; /* Contenu binaire à renvoyer */ + + result = content->endpoint; + + if (result != NULL) + g_object_ref(G_OBJECT(result)); + + return result; + +} diff --git a/src/analysis/contents/encapsulated.h b/src/analysis/contents/encapsulated.h index 5d21a18..3efa733 100644 --- a/src/analysis/contents/encapsulated.h +++ b/src/analysis/contents/encapsulated.h @@ -56,6 +56,15 @@ GBinContent *g_encaps_content_new(GBinContent *, const char *, GBinContent *); /* Charge en mémoire un contenu encapsulé à partir d'XML. */ GBinContent *g_encaps_content_new_from_xml(xmlXPathContextPtr, const char *, const char *); +/* Indique la base d'un contenu binaire encapsulé. */ +GBinContent *g_encaps_content_get_base(const GEncapsContent *); + +/* Fournit le chemin vers le contenu interne représenté. */ +const char *g_encaps_content_get_path(const GEncapsContent *); + +/* Indique le contenu binaire embarqué dans une encapsulation. */ +GBinContent *g_encaps_content_get_endpoint(const GEncapsContent *); + #endif /* _ANALYSIS_CONTENTS_ENCAPSULATED_H */ diff --git a/src/analysis/contents/file.c b/src/analysis/contents/file.c index 5509455..11d5802 100644 --- a/src/analysis/contents/file.c +++ b/src/analysis/contents/file.c @@ -179,6 +179,7 @@ static void g_file_content_class_init(GFileContentClass *klass) static void g_file_content_init(GFileContent *content) { GContentAttributes *empty; /* Jeu d'attributs vide */ + vmpa2t dummy; /* Localisation nulle */ content->attribs = NULL; @@ -186,6 +187,12 @@ static void g_file_content_init(GFileContent *content) g_binary_content_set_attributes(G_BIN_CONTENT(content), empty); + content->filename = NULL; + content->data = NULL; + + init_vmpa(&dummy, VMPA_NO_PHYSICAL, VMPA_NO_VIRTUAL); + init_mrange(&content->range, &dummy, 0); + } @@ -1003,3 +1010,26 @@ static bool g_file_content_read_leb128(const GFileContent *content, vmpa2t *addr return result; } + + +/****************************************************************************** +* * +* Paramètres : content = contenu binaire à venir consulter. * +* * +* Description : Fournit le nom de fichier associé au contenu binaire. * +* * +* Retour : Chemin d'accès au contenu binaire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +const char *g_file_content_get_filename(const GFileContent *content) +{ + char *result; /* Chemin d'accès à retourner */ + + result = content->filename; + + return result; + +} diff --git a/src/analysis/contents/file.h b/src/analysis/contents/file.h index b68d466..a3856df 100644 --- a/src/analysis/contents/file.h +++ b/src/analysis/contents/file.h @@ -56,6 +56,9 @@ GBinContent *g_file_content_new(const char *); /* Charge en mémoire le contenu d'un fichier à partir d'XML. */ GBinContent *g_file_content_new_from_xml(xmlXPathContextPtr, const char *, const char *); +/* Fournit le nom de fichier associé au contenu binaire. */ +const char *g_file_content_get_filename(const GFileContent *); + #endif /* _ANALYSIS_CONTENTS_FILE_H */ diff --git a/src/analysis/contents/restricted.c b/src/analysis/contents/restricted.c index 8e5242e..5c781e7 100644 --- a/src/analysis/contents/restricted.c +++ b/src/analysis/contents/restricted.c @@ -156,6 +156,12 @@ static void g_restricted_content_class_init(GRestrictedContentClass *klass) static void g_restricted_content_init(GRestrictedContent *content) { + vmpa2t dummy; /* Localisation nulle */ + + content->internal = NULL; + + init_vmpa(&dummy, VMPA_NO_PHYSICAL, VMPA_NO_VIRTUAL); + init_mrange(&content->range, &dummy, 0); } @@ -833,3 +839,23 @@ static bool g_restricted_content_read_leb128(const GRestrictedContent *content, return result; } + + +/****************************************************************************** +* * +* Paramètres : content = contenu binaire à venir lire. * +* range = espace de restrictions pour les accès. [OUT] * +* * +* Description : Indique l'espace de restriction appliqué à un contenu. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void g_restricted_content_get_range(const GRestrictedContent *content, mrange_t *range) +{ + copy_mrange(range, &content->range); + +} diff --git a/src/analysis/contents/restricted.h b/src/analysis/contents/restricted.h index 8b87453..7f264c4 100644 --- a/src/analysis/contents/restricted.h +++ b/src/analysis/contents/restricted.h @@ -56,6 +56,9 @@ GBinContent *g_restricted_content_new(GBinContent *, const mrange_t *); /* Charge en mémoire le contenu d'un contenu restreint. */ GBinContent *g_restricted_content_new_ro(const GBinContent *, const mrange_t *); +/* Indique l'espace de restriction appliqué à un contenu. */ +void g_restricted_content_get_range(const GRestrictedContent *, mrange_t *); + #endif /* _ANALYSIS_CONTENTS_RESTRICTED_H */ |