
With this patch, an extended interface of hdelete_ext() will return variable's attribute. The feature will be used in a successive patch to determine if the context should be 'autosaved' or not even in case of deletion.
Signed-off-by: AKASHI Takahiro takahiro.akashi@linaro.org --- include/search.h | 2 +- lib/hashtable.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/include/search.h b/include/search.h index ab0d7ccb5f8c..cf145fa79f8b 100644 --- a/include/search.h +++ b/include/search.h @@ -94,7 +94,7 @@ extern int hmatch_ext(const char *__match, int __last_idx, ENTRY ** __retval, extern int hdelete_r(const char *__key, struct hsearch_data *__htab, int __flag); extern int hdelete_ext(const char *__key, struct hsearch_data *__htab, - unsigned int ctx, int __flag); + unsigned int ctx, uint32_t *flags, int __flag);
extern ssize_t hexport_r(struct hsearch_data *__htab, const char __sep, int __flag, char **__resp, size_t __size, diff --git a/lib/hashtable.c b/lib/hashtable.c index 3fe1d38c827e..4a2541ecf59d 100644 --- a/lib/hashtable.c +++ b/lib/hashtable.c @@ -485,7 +485,7 @@ static void _hdelete(const char *key, struct hsearch_data *htab, ENTRY *ep, }
int hdelete_ext(const char *key, struct hsearch_data *htab, unsigned int ctx, - int flag) + uint32_t *flags, int flag) { ENTRY e, *ep; int idx; @@ -519,6 +519,8 @@ int hdelete_ext(const char *key, struct hsearch_data *htab, unsigned int ctx, return 0; }
+ if (flags) + *flags = ep->flags; _hdelete(key, htab, ep, idx);
return 1; @@ -526,7 +528,7 @@ int hdelete_ext(const char *key, struct hsearch_data *htab, unsigned int ctx,
int hdelete_r(const char *key, struct hsearch_data *htab, int flag) { - return hdelete_ext(key, htab, 0, flag); + return hdelete_ext(key, htab, 0, NULL, flag); }
#if !(defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_SAVEENV)) @@ -985,7 +987,7 @@ int himport_ext(struct hsearch_data *htab, unsigned int ctx, if (!drop_var_from_set(name, nvars, localvars)) continue;
- if (hdelete_ext(name, htab, ctx, flag) == 0) + if (hdelete_ext(name, htab, ctx, NULL, flag) == 0) debug("DELETE ERROR ##############################\n");
continue;