diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/binary.c | 4 | ||||
-rw-r--r-- | src/analysis/db/item-int.h | 4 | ||||
-rw-r--r-- | src/analysis/db/item.c | 44 | ||||
-rw-r--r-- | src/analysis/db/item.h | 12 |
4 files changed, 10 insertions, 54 deletions
diff --git a/src/analysis/binary.c b/src/analysis/binary.c index 070e175..ac7556c 100644 --- a/src/analysis/binary.c +++ b/src/analysis/binary.c @@ -1077,7 +1077,7 @@ bool _g_loaded_binary_add_to_collection(GLoadedBinary *binary, GDbItem *item, bo if (collec == NULL) return false; /* S'il n'y a pas besoin de sauvegarde... */ - if (g_db_item_is_volatile(item)) + if (g_db_item_get_flags(item) & DIF_VOLATILE) result = _g_db_collection_add_item(collec, item, lock); /* Sinon on envoie par le réseau ! */ @@ -1158,7 +1158,7 @@ bool _g_loaded_binary_remove_from_collection(GLoadedBinary *binary, DBFeatures f if (collec == NULL) return false; /* S'il n'y a pas besoin de sauvegarde... */ - if (g_db_item_is_volatile(item)) + if (g_db_item_get_flags(item) & DIF_VOLATILE) result = _g_db_collection_remove_item(collec, item, lock, true); /* Sinon on envoie par le réseau ! */ diff --git a/src/analysis/db/item-int.h b/src/analysis/db/item-int.h index e530442..bdaf38e 100644 --- a/src/analysis/db/item-int.h +++ b/src/analysis/db/item-int.h @@ -76,10 +76,6 @@ struct _GDbItem }; - bool is_volatile; /* Pas besoin de sauvegarde ? */ - - bool broken; /* Changement applicable ? */ - }; /* Base d'un élément pour collection générique (classe) */ diff --git a/src/analysis/db/item.c b/src/analysis/db/item.c index 227d99f..a403537 100644 --- a/src/analysis/db/item.c +++ b/src/analysis/db/item.c @@ -118,7 +118,7 @@ static void g_db_item_init(GDbItem *item) { set_static_rle_string(&item->author, ""); - item->is_volatile = false; + g_atomic_int_set(&item->atomic_flags, DIF_NONE); } @@ -420,6 +420,9 @@ bool g_db_item_apply(GDbItem *item, GLoadedBinary *binary) result = G_DB_ITEM_GET_CLASS(item)->apply(item, binary); + if (!result) + g_db_item_add_flag(item, DIF_BROKEN); + return result; } @@ -569,45 +572,6 @@ bool g_db_item_is_active(const GDbItem *item) /****************************************************************************** * * -* Paramètres : item = base d'éléments à modifier. * -* is_volatile = état du besoin en sauvegarde. * -* * -* Description : Définit si l'élément contient des données à oublier ou non. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_db_item_set_volatile(GDbItem *item, bool is_volatile) -{ - item->is_volatile = is_volatile; - -} - - -/****************************************************************************** -* * -* Paramètres : item = base d'éléments à consulter. * -* * -* Description : Indique si l'élément contient des données à oublier ou non. * -* * -* Retour : Etat du besoin en sauvegarde. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool g_db_item_is_volatile(const GDbItem *item) -{ - return item->is_volatile; - -} - - -/****************************************************************************** -* * * Paramètres : item = base d'éléments à mettre à jour. * * flag = type de propriété à traiter. * * * diff --git a/src/analysis/db/item.h b/src/analysis/db/item.h index 383f9ed..fc6475e 100644 --- a/src/analysis/db/item.h +++ b/src/analysis/db/item.h @@ -43,8 +43,10 @@ typedef struct _GLoadedBinary GLoadedBinary; /* Propriétés particulières pour un élément */ typedef enum _DbItemFlags { - DIF_NONE = (0 << 0), /* Propriétés par défaut */ - DIF_ERASER = (1 << 0), /* Suppression de l'effet */ + DIF_NONE = (0 << 0), /* Propriétés par défaut */ + DIF_ERASER = (1 << 0), /* Suppression de l'effet */ + DIF_VOLATILE = (1 << 1), /* Abscence de sauvegarde */ + DIF_BROKEN = (1 << 2), /* Application impossible */ } DbItemFlags; @@ -106,12 +108,6 @@ bool g_db_item_set_activity(GDbItem *, GLoadedBinary *, timestamp_t *); /* Indique si l'élément est activé ou désactivé. */ bool g_db_item_is_active(const GDbItem *); -/* Définit si l'élément contient des données à oublier ou non. */ -void g_db_item_set_volatile(GDbItem *, bool); - -/* Indique si l'élément contient des données à oublier ou non. */ -bool g_db_item_is_volatile(const GDbItem *); - /* Ajoute une propriété à un élément de base de données. */ void g_db_item_add_flag(GDbItem *, DbItemFlags); |