diff options
Diffstat (limited to 'src/format/dbg_format.c')
-rw-r--r-- | src/format/dbg_format.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/format/dbg_format.c b/src/format/dbg_format.c new file mode 100644 index 0000000..fac216d --- /dev/null +++ b/src/format/dbg_format.c @@ -0,0 +1,91 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * dbg_format.c - support des formats de débogage + * + * Copyright (C) 2008 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA 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. + * + * OpenIDA 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 "dbg_format.h" + + +#include <malloc.h> + + + +/* liste de tous les formats de débogage enregistrés */ +typedef struct _dbg_formats +{ + dbg_format **list; /* Série d'éléments */ + size_t count; /* Nombre de ces éléments */ + +} dbg_formats; + + +/* Fournit la liste des formats de débogage enregistrés. */ +dbg_formats *get_debug_formats(void); + + + +/****************************************************************************** +* * +* Paramètres : - * +* * +* Description : Fournit la liste des formats de débogage enregistrés. * +* * +* Retour : Liste des formats enregistrés. * +* * +* Remarques : - * +* * +******************************************************************************/ + +dbg_formats *get_debug_formats(void) +{ + static dbg_formats *result = NULL; /* Liste à retourner */ + + if (result == NULL) + result = (dbg_formats *)calloc(1, sizeof(dbg_formats)); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : format = nouvel élément à inscrire dans l'ensemble. * +* * +* Description : Ajoute un nouveau format de débogage à la liste supportée. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void register_debug_format(dbg_format *format) +{ + dbg_formats *formats; /* Liste à compléter */ + + formats = get_debug_formats(); + + formats->list = (dbg_format **)realloc(formats->list, ++formats->count * sizeof(dbg_format *)); + formats->list[formats->count - 1] = format; + +} + |