From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 4/6] env: check and apply changes on delete/destroy
Date: Mon, 2 Apr 2012 21:01:54 +0200 [thread overview]
Message-ID: <201204022101.54726.marex@denx.de> (raw)
In-Reply-To: <1333391204-16318-5-git-send-email-gerlando.falauto@keymile.com>
Dear Gerlando Falauto,
> Signed-off-by: Gerlando Falauto <gerlando.falauto@keymile.com>
Looks ok
> ---
> common/cmd_nvedit.c | 2 +-
> include/search.h | 5 +++--
> lib/hashtable.c | 16 ++++++++++------
> 3 files changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
> index fc6165f..091cd46 100644
> --- a/common/cmd_nvedit.c
> +++ b/common/cmd_nvedit.c
> @@ -375,7 +375,7 @@ int _do_env_set(int flag, int argc, char * const
> argv[])
>
> /* Delete only ? */
> if (argc < 3 || argv[2] == NULL) {
> - int rc = hdelete_r(name, &env_htab);
> + int rc = hdelete_r(name, &env_htab, 0);
> return !rc;
> }
>
> diff --git a/include/search.h b/include/search.h
> index 721c8ac..93e1cbc 100644
> --- a/include/search.h
> +++ b/include/search.h
> @@ -73,7 +73,7 @@ struct hsearch_data {
> extern int hcreate_r(size_t __nel, struct hsearch_data *__htab);
>
> /* Destroy current internal hashing table. */
> -extern void hdestroy_r(struct hsearch_data *__htab);
> +extern void hdestroy_r(struct hsearch_data *__htab, int do_apply);
>
> /*
> * Search for entry matching ITEM.key in internal hash table. If
> @@ -98,7 +98,8 @@ extern int hstrstr_r(const char *__match, int __last_idx,
> ENTRY ** __retval, struct hsearch_data *__htab);
>
> /* Search and delete entry matching ITEM.key in internal hash table. */
> -extern int hdelete_r(const char *__key, struct hsearch_data *__htab);
> +extern int hdelete_r(const char *__key, struct hsearch_data *__htab,
> + int do_apply);
>
> extern ssize_t hexport_r(struct hsearch_data *__htab,
> const char __sep, char **__resp, size_t __size,
> diff --git a/lib/hashtable.c b/lib/hashtable.c
> index 6cfba56..f3f47de 100644
> --- a/lib/hashtable.c
> +++ b/lib/hashtable.c
> @@ -142,7 +142,7 @@ int hcreate_r(size_t nel, struct hsearch_data *htab)
> * be freed and the local static variable can be marked as not used.
> */
>
> -void hdestroy_r(struct hsearch_data *htab)
> +void hdestroy_r(struct hsearch_data *htab, int do_apply)
> {
> int i;
>
> @@ -156,7 +156,10 @@ void hdestroy_r(struct hsearch_data *htab)
> for (i = 1; i <= htab->size; ++i) {
> if (htab->table[i].used > 0) {
> ENTRY *ep = &htab->table[i].entry;
> -
> + if (do_apply && htab->apply != NULL) {
> + /* deletion is always forced */
> + htab->apply(ep->key, ep->data, NULL, H_FORCE);
> + }
> free((void *)ep->key);
> free(ep->data);
> }
> @@ -401,7 +404,7 @@ int hsearch_r(ENTRY item, ACTION action, ENTRY **
> retval, * do that.
> */
>
> -int hdelete_r(const char *key, struct hsearch_data *htab)
> +int hdelete_r(const char *key, struct hsearch_data *htab, int do_apply)
> {
> ENTRY e, *ep;
> int idx;
> @@ -417,7 +420,8 @@ int hdelete_r(const char *key, struct hsearch_data
> *htab)
>
> /* free used ENTRY */
> debug("hdelete: DELETING key \"%s\"\n", key);
> -
> + if (do_apply && htab->apply != NULL)
> + htab->apply(ep->key, ep->data, NULL, H_FORCE);
> free((void *)ep->key);
> free(ep->data);
> htab->table[idx].used = -1;
> @@ -682,7 +686,7 @@ int himport_r(struct hsearch_data *htab,
> debug("Destroy Hash Table: %p table = %p\n", htab,
> htab->table);
> if (htab->table)
> - hdestroy_r(htab);
> + hdestroy_r(htab, do_apply);
> }
>
> /*
> @@ -748,7 +752,7 @@ int himport_r(struct hsearch_data *htab,
> if (!is_var_in_set(name, nvars, vars))
> continue;
>
> - if (hdelete_r(name, htab) == 0)
> + if (hdelete_r(name, htab, do_apply) == 0)
> debug("DELETE ERROR
##############################\n");
>
> continue;
next prev parent reply other threads:[~2012-04-02 19:01 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-18 16:49 [U-Boot] [PATCH v1 0/5] env: handle special variables and selective env default Gerlando Falauto
2011-11-18 16:49 ` [U-Boot] [PATCH v1 1/5] serial: cosmetic checkpatch compliance Gerlando Falauto
2011-11-18 20:04 ` Mike Frysinger
2011-12-05 21:47 ` Wolfgang Denk
2011-11-18 16:49 ` [U-Boot] [PATCH v1 2/5] serial: constify serial_assign() Gerlando Falauto
2011-11-18 20:03 ` Mike Frysinger
2011-12-05 21:48 ` Wolfgang Denk
2011-11-18 16:49 ` [U-Boot] [PATCH v1 3/5] env: unify logic to check and apply changes Gerlando Falauto
2011-12-07 1:50 ` Simon Glass
2011-11-18 16:49 ` [U-Boot] [PATCH v1 4/5] env: check and apply changes on delete/destroy Gerlando Falauto
2011-11-18 16:49 ` [U-Boot] [PATCH v1 5/5] env: make "env default" selective, check and apply Gerlando Falauto
2011-12-07 13:30 ` [U-Boot] [PATCH v2 0/3] env: handle special variables and selective env default Gerlando Falauto
2011-12-07 13:30 ` [U-Boot] [PATCH v2 1/3] env: unify logic to check and apply changes Gerlando Falauto
2011-12-07 22:02 ` Simon Glass
2011-12-08 5:45 ` Mike Frysinger
2011-12-12 9:32 ` Gerlando Falauto
2011-12-12 12:18 ` Wolfgang Denk
2011-12-12 13:38 ` Gerlando Falauto
2011-12-12 13:50 ` Wolfgang Denk
2011-12-12 16:24 ` Simon Glass
2012-03-29 20:19 ` Marek Vasut
2012-03-30 13:00 ` Gerlando Falauto
2012-03-30 13:08 ` Marek Vasut
2012-03-30 13:22 ` Gerlando Falauto
2012-03-30 13:55 ` Marek Vasut
2012-03-30 14:03 ` Gerlando Falauto
2012-03-30 14:28 ` Marek Vasut
2012-03-30 17:00 ` Gerlando Falauto
2011-12-07 13:30 ` [U-Boot] [PATCH v2 2/3] env: check and apply changes on delete/destroy Gerlando Falauto
2011-12-07 22:02 ` Simon Glass
2011-12-12 9:32 ` Gerlando Falauto
2011-12-12 13:08 ` Wolfgang Denk
2011-12-12 13:52 ` Gerlando Falauto
2011-12-12 19:19 ` Wolfgang Denk
2011-12-07 13:30 ` [U-Boot] [PATCH v2 3/3] env: make "env default" selective, check and apply Gerlando Falauto
2011-12-07 22:02 ` Simon Glass
2011-12-12 9:33 ` Gerlando Falauto
2011-12-12 13:10 ` Wolfgang Denk
2012-03-29 20:25 ` Marek Vasut
2012-03-30 13:00 ` Gerlando Falauto
2012-03-30 13:09 ` Marek Vasut
2012-03-30 13:25 ` Gerlando Falauto
2012-04-02 18:26 ` [U-Boot] [PATCH v3 0/6] env: handle special variables and selective env default Gerlando Falauto
2012-08-09 20:17 ` Wolfgang Denk
2012-08-09 22:19 ` Gerlando Falauto
2012-08-09 22:26 ` Wolfgang Denk
2012-08-10 8:53 ` Holger Brunck
2012-08-10 18:08 ` Wolfgang Denk
2012-08-13 7:23 ` Holger Brunck
2012-08-13 10:11 ` Wolfgang Denk
2012-08-24 10:18 ` Gerlando Falauto
2012-08-24 15:11 ` Marek Vasut
2012-04-02 18:26 ` [U-Boot] [PATCH v3 1/6] env: unify logic to check and apply changes Gerlando Falauto
2012-04-02 18:56 ` Marek Vasut
2012-04-02 20:39 ` Gerlando Falauto
2012-04-02 20:50 ` Marek Vasut
2012-04-02 18:26 ` [U-Boot] [PATCH v3 2/6] env: make himport_r() selective on variables Gerlando Falauto
2012-04-02 18:57 ` Marek Vasut
2012-04-02 20:43 ` Gerlando Falauto
2012-04-04 7:41 ` Simon Glass
2012-04-02 18:26 ` [U-Boot] [PATCH v3 3/6] env: add check/apply logic to himport_r() Gerlando Falauto
2012-04-02 19:00 ` Marek Vasut
2012-04-02 19:01 ` Marek Vasut
2012-04-02 20:44 ` Gerlando Falauto
2012-04-02 20:51 ` Marek Vasut
2012-04-02 18:26 ` [U-Boot] [PATCH v3 4/6] env: check and apply changes on delete/destroy Gerlando Falauto
2012-04-02 19:01 ` Marek Vasut [this message]
2012-04-02 18:26 ` [U-Boot] [PATCH v3 5/6] env: make "env default" selective, check and apply Gerlando Falauto
2012-04-02 19:04 ` Marek Vasut
2012-04-02 18:26 ` [U-Boot] [PATCH v3 6/6] env: delete selected vars not present in imported env Gerlando Falauto
2012-04-02 19:06 ` Marek Vasut
2012-04-02 20:45 ` Gerlando Falauto
2012-04-02 21:00 ` Marek Vasut
2012-08-24 10:11 ` [U-Boot] [PATCH v4 0/7] env: handle special variables and selective env default Gerlando Falauto
2012-08-24 10:11 ` [U-Boot] [PATCH v4 1/7] env: cosmetic: drop assignment i = iomux_doenv() Gerlando Falauto
2012-08-24 14:44 ` Marek Vasut
2012-09-18 19:05 ` [U-Boot] [U-Boot, v4, " Tom Rini
2012-08-24 10:11 ` [U-Boot] [PATCH v4 2/7] env: unify logic to check and apply changes Gerlando Falauto
2012-08-24 14:48 ` Marek Vasut
2012-08-24 10:11 ` [U-Boot] [PATCH v4 3/7] env: make himport_r() selective on variables Gerlando Falauto
2012-08-24 14:50 ` Marek Vasut
2012-08-24 10:11 ` [U-Boot] [PATCH v4 4/7] env: add check/apply logic to himport_r() Gerlando Falauto
2012-08-24 14:52 ` Marek Vasut
2012-08-24 10:11 ` [U-Boot] [PATCH v4 5/7] env: check and apply changes on delete/destroy Gerlando Falauto
2012-08-24 14:53 ` Marek Vasut
2012-08-24 10:11 ` [U-Boot] [PATCH v4 6/7] env: make "env default" selective, check and apply Gerlando Falauto
2012-08-24 14:56 ` Marek Vasut
2012-08-24 15:10 ` Gerlando Falauto
2012-08-24 21:10 ` Marek Vasut
2012-08-27 7:36 ` Gerlando Falauto
2012-08-27 9:57 ` Marek Vasut
2012-09-02 11:58 ` Wolfgang Denk
2012-08-24 10:11 ` [U-Boot] [PATCH v4 7/7] env: delete selected vars not present in imported env Gerlando Falauto
2012-08-24 14:58 ` Marek Vasut
2012-08-24 15:16 ` Gerlando Falauto
2012-08-24 21:12 ` Marek Vasut
2012-08-27 7:45 ` Gerlando Falauto
2012-09-02 12:01 ` Wolfgang Denk
2012-09-03 7:34 ` Gerlando Falauto
2012-08-27 7:53 ` [U-Boot] [PATCH v5 " Gerlando Falauto
2012-08-27 10:02 ` Marek Vasut
2012-09-02 11:59 ` [U-Boot] [PATCH v4 0/7] env: handle special variables and selective env default Wolfgang Denk
2012-09-02 16:13 ` Marek Vasut
2012-09-03 7:33 ` Gerlando Falauto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201204022101.54726.marex@denx.de \
--to=marex@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.