[U-Boot] [PATCH 33/39] env: Drop the ACTION typedef

Joe Hershberger joe.hershberger at ni.com
Tue Jul 30 21:13:15 UTC 2019


On Sun, Jul 28, 2019 at 9:22 AM Simon Glass <sjg at chromium.org> wrote:
>
> Avoid using a typedef here which is unnecessary. Add an 'env_' prefix to
> both the enum and its members to make it clear that these are related to
> the environment.
>
> Add an ENV prefix to these two flags so that it is clear what they relate
> too. Also move them to env.h since they are part of the public API. Use an

too -> to

> enum rather than a #define to tie them together.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>  api/api.c             |  2 +-
>  cmd/nvedit.c          |  8 ++++----
>  drivers/tee/sandbox.c |  6 +++---
>  env/callback.c        |  2 +-
>  env/flags.c           |  2 +-
>  include/search.h      | 16 ++++++++--------
>  lib/hashtable.c       | 18 +++++++++---------
>  test/env/hashtable.c  |  8 ++++----
>  8 files changed, 31 insertions(+), 31 deletions(-)
>
> diff --git a/api/api.c b/api/api.c
> index a0fc62ca9e..5e7c8149bf 100644
> --- a/api/api.c
> +++ b/api/api.c
> @@ -514,7 +514,7 @@ static int API_env_enum(va_list ap)
>                 if (s != NULL)
>                         *s = 0;
>                 search.key = var;
> -               i = hsearch_r(search, FIND, &match, &env_htab, 0);
> +               i = hsearch_r(search, ENVA_FIND, &match, &env_htab, 0);
>                 if (i == 0) {
>                         i = API_EINVAL;
>                         goto done;
> diff --git a/cmd/nvedit.c b/cmd/nvedit.c
> index d6a86abb03..3d244951b0 100644
> --- a/cmd/nvedit.c
> +++ b/cmd/nvedit.c
> @@ -98,7 +98,7 @@ static int env_print(char *name, int flag)
>
>                 e.key = name;
>                 e.data = NULL;
> -               hsearch_r(e, FIND, &ep, &env_htab, flag);
> +               hsearch_r(e, ENVA_FIND, &ep, &env_htab, flag);
>                 if (ep == NULL)
>                         return 0;
>                 len = printf("%s=%s\n", ep->key, ep->data);
> @@ -288,7 +288,7 @@ static int _do_env_set(int flag, int argc, char * const argv[], int env_flag)
>
>         e.key   = name;
>         e.data  = value;
> -       hsearch_r(e, ENTER, &ep, &env_htab, env_flag);
> +       hsearch_r(e, ENVA_ENTER, &ep, &env_htab, env_flag);
>         free(value);
>         if (!ep) {
>                 printf("## Error inserting \"%s\" variable, errno=%d\n",
> @@ -680,7 +680,7 @@ char *env_get(const char *name)
>
>                 e.key   = name;
>                 e.data  = NULL;
> -               hsearch_r(e, FIND, &ep, &env_htab, 0);
> +               hsearch_r(e, ENVA_FIND, &ep, &env_htab, 0);
>
>                 return ep ? ep->data : NULL;
>         }
> @@ -1281,7 +1281,7 @@ static int do_env_exists(cmd_tbl_t *cmdtp, int flag, int argc,
>
>         e.key = argv[1];
>         e.data = NULL;
> -       hsearch_r(e, FIND, &ep, &env_htab, 0);
> +       hsearch_r(e, ENVA_FIND, &ep, &env_htab, 0);
>
>         return (ep == NULL) ? 1 : 0;
>  }
> diff --git a/drivers/tee/sandbox.c b/drivers/tee/sandbox.c
> index 4bbcf74967..0561957067 100644
> --- a/drivers/tee/sandbox.c
> +++ b/drivers/tee/sandbox.c
> @@ -174,7 +174,7 @@ static u32 ta_avb_invoke_func(struct udevice *dev, u32 func, uint num_params,
>
>                 e.key = name;
>                 e.data = NULL;
> -               hsearch_r(e, FIND, &ep, &state->pstorage_htab, 0);
> +               hsearch_r(e, ENVA_FIND, &ep, &state->pstorage_htab, 0);
>                 if (!ep)
>                         return TEE_ERROR_ITEM_NOT_FOUND;
>
> @@ -198,13 +198,13 @@ static u32 ta_avb_invoke_func(struct udevice *dev, u32 func, uint num_params,
>
>                 e.key = name;
>                 e.data = NULL;
> -               hsearch_r(e, FIND, &ep, &state->pstorage_htab, 0);
> +               hsearch_r(e, ENVA_FIND, &ep, &state->pstorage_htab, 0);
>                 if (ep)
>                         hdelete_r(e.key, &state->pstorage_htab, 0);
>
>                 e.key = name;
>                 e.data = value;
> -               hsearch_r(e, ENTER, &ep, &state->pstorage_htab, 0);
> +               hsearch_r(e, ENVA_ENTER, &ep, &state->pstorage_htab, 0);
>                 if (!ep)
>                         return TEE_ERROR_OUT_OF_MEMORY;
>
> diff --git a/env/callback.c b/env/callback.c
> index d539da93aa..9bfa744921 100644
> --- a/env/callback.c
> +++ b/env/callback.c
> @@ -98,7 +98,7 @@ static int set_callback(const char *name, const char *value, void *priv)
>         e.key   = name;
>         e.data  = NULL;
>         e.callback = NULL;
> -       hsearch_r(e, FIND, &ep, &env_htab, 0);
> +       hsearch_r(e, ENVA_FIND, &ep, &env_htab, 0);
>
>         /* does the env variable actually exist? */
>         if (ep != NULL) {
> diff --git a/env/flags.c b/env/flags.c
> index fdbad7bf33..388c2f184b 100644
> --- a/env/flags.c
> +++ b/env/flags.c
> @@ -458,7 +458,7 @@ static int set_flags(const char *name, const char *value, void *priv)
>         e.key   = name;
>         e.data  = NULL;
>         e.callback = NULL;
> -       hsearch_r(e, FIND, &ep, &env_htab, 0);
> +       hsearch_r(e, ENVA_FIND, &ep, &env_htab, 0);
>
>         /* does the env variable actually exist? */
>         if (ep != NULL) {
> diff --git a/include/search.h b/include/search.h
> index c99648f80b..fa7758480b 100644
> --- a/include/search.h
> +++ b/include/search.h
> @@ -19,11 +19,11 @@
>
>  #define __set_errno(val) do { errno = val; } while (0)
>
> -/* Action which shall be performed in the call to hsearch.  */
> -typedef enum {
> -       FIND,
> -       ENTER
> -} ACTION;
> +/* enum env_action: action which shall be performed in the call to hsearch */
> +enum env_action {
> +       ENVA_FIND,
> +       ENVA_ENTER,

It seems like dropping the A here would be more concise and clear.
ENV_FIND and ENV_ENTER shouldn't conflict with anything.

> +};
>
>  /** struct env_entry - An entry in the environment hashtable */
>  struct env_entry {
> @@ -64,11 +64,11 @@ extern void hdestroy_r(struct hsearch_data *__htab);
>
>  /*
>   * Search for entry matching __item.key in internal hash table.  If
> - * ACTION is `FIND' return found entry or signal error by returning
> - * NULL.  If ACTION is `ENTER' replace existing data (if any) with
> + * __action is `ENVA_FIND' return found entry or signal error by returning
> + * NULL.  If __action is `ENVA_ENTER' replace existing data (if any) with
>   * __item.data.
>   * */
> -extern int hsearch_r(struct env_entry __item, ACTION __action,
> +extern int hsearch_r(struct env_entry __item, enum env_action __action,
>                      struct env_entry **__retval, struct hsearch_data *__htab,
>                      int __flag);
>
> diff --git a/lib/hashtable.c b/lib/hashtable.c
> index 1093d8adaa..6ff0de3e79 100644
> --- a/lib/hashtable.c
> +++ b/lib/hashtable.c
> @@ -194,7 +194,7 @@ void hdestroy_r(struct hsearch_data *htab)
>   *   data any more.
>   * - The standard implementation does not provide a way to update an
>   *   existing entry.  This version will create a new entry or update an
> - *   existing one when both "action == ENTER" and "item.data != NULL".
> + *   existing one when both "action == ENVA_ENTER" and "item.data != NULL".
>   * - Instead of returning 1 on success, we return the index into the
>   *   internal hash table, which is also guaranteed to be positive.
>   *   This allows us direct access to the found hash table slot for
> @@ -223,17 +223,17 @@ int hmatch_r(const char *match, int last_idx, struct env_entry **retval,
>
>  /*
>   * Compare an existing entry with the desired key, and overwrite if the action
> - * is ENTER.  This is simply a helper function for hsearch_r().
> + * is ENVA_ENTER.  This is simply a helper function for hsearch_r().
>   */
>  static inline int _compare_and_overwrite_entry(struct env_entry item,
> -               ACTION action, struct env_entry **retval,
> +               enum env_action action, struct env_entry **retval,
>                 struct hsearch_data *htab, int flag, unsigned int hval,
>                 unsigned int idx)
>  {
>         if (htab->table[idx].used == hval
>             && strcmp(item.key, htab->table[idx].entry.key) == 0) {
>                 /* Overwrite existing value? */
> -               if ((action == ENTER) && (item.data != NULL)) {
> +               if (action == ENVA_ENTER && item.data) {
>                         /* check for permission */
>                         if (htab->change_ok != NULL && htab->change_ok(
>                             &htab->table[idx].entry, item.data,
> @@ -272,8 +272,8 @@ static inline int _compare_and_overwrite_entry(struct env_entry item,
>         return -1;
>  }
>
> -int hsearch_r(struct env_entry item, ACTION action, struct env_entry **retval,
> -             struct hsearch_data *htab, int flag)
> +int hsearch_r(struct env_entry item, enum env_action action,
> +             struct env_entry **retval, struct hsearch_data *htab, int flag)
>  {
>         unsigned int hval;
>         unsigned int count;
> @@ -354,7 +354,7 @@ int hsearch_r(struct env_entry item, ACTION action, struct env_entry **retval,
>         }
>
>         /* An empty bucket has been found. */
> -       if (action == ENTER) {
> +       if (action == ENVA_ENTER) {
>                 /*
>                  * If table is full and another entry should be
>                  * entered return with error.
> @@ -456,7 +456,7 @@ int hdelete_r(const char *key, struct hsearch_data *htab, int flag)
>
>         e.key = (char *)key;
>
> -       idx = hsearch_r(e, FIND, &ep, htab, 0);
> +       idx = hsearch_r(e, ENVA_FIND, &ep, htab, 0);
>         if (idx == 0) {
>                 __set_errno(ESRCH);
>                 return 0;       /* not found */
> @@ -931,7 +931,7 @@ int himport_r(struct hsearch_data *htab,
>                 e.key = name;
>                 e.data = value;
>
> -               hsearch_r(e, ENTER, &rv, htab, flag);
> +               hsearch_r(e, ENVA_ENTER, &rv, htab, flag);
>                 if (rv == NULL)
>                         printf("himport_r: can't insert \"%s=%s\" into hash table\n",
>                                 name, value);
> diff --git a/test/env/hashtable.c b/test/env/hashtable.c
> index bad276bd10..f9f3807fca 100644
> --- a/test/env/hashtable.c
> +++ b/test/env/hashtable.c
> @@ -28,7 +28,7 @@ static int htab_fill(struct unit_test_state *uts,
>                 item.data = key;
>                 item.flags = 0;
>                 item.key = key;
> -               ut_asserteq(1, hsearch_r(item, ENTER, &ritem, htab, 0));
> +               ut_asserteq(1, hsearch_r(item, ENVA_ENTER, &ritem, htab, 0));
>         }
>
>         return 0;
> @@ -48,7 +48,7 @@ static int htab_check_fill(struct unit_test_state *uts,
>                 item.flags = 0;
>                 item.data = key;
>                 item.key = key;
> -               hsearch_r(item, FIND, &ritem, htab, 0);
> +               hsearch_r(item, ENVA_FIND, &ritem, htab, 0);
>                 ut_assert(ritem);
>                 ut_asserteq_str(key, ritem->key);
>                 ut_asserteq_str(key, ritem->data);
> @@ -71,10 +71,10 @@ static int htab_create_delete(struct unit_test_state *uts,
>                 item.flags = 0;
>                 item.data = key;
>                 item.key = key;
> -               hsearch_r(item, ENTER, &ritem, htab, 0);
> +               hsearch_r(item, ENVA_ENTER, &ritem, htab, 0);
>                 ritem = NULL;
>
> -               hsearch_r(item, FIND, &ritem, htab, 0);
> +               hsearch_r(item, ENVA_FIND, &ritem, htab, 0);
>                 ut_assert(ritem);
>                 ut_asserteq_str(key, ritem->key);
>                 ut_asserteq_str(key, ritem->data);
> --
> 2.22.0.709.g102302147b-goog
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot


More information about the U-Boot mailing list