[U-Boot] [RFC PATCH v2 6/7] env: Introduce setenv_transient() helper function

Simon Glass sjg at chromium.org
Sat Nov 19 14:47:40 CET 2016


Hi Bernhard,

On 16 November 2016 at 03:30, Bernhard Nortmann
<bernhard.nortmann at web.de> wrote:
> Like setenv(), but automatically marks the entry as "don't export".
>
> Signed-off-by: Bernhard Nortmann <bernhard.nortmann at web.de>
> ---
>
> Changes in v2: None
>
>  cmd/nvedit.c     | 21 +++++++++++++++++++++
>  include/common.h |  1 +
>  2 files changed, 22 insertions(+)
>

Reviewed-by: Simon Glass <sjg at chromium.org>

But see below.

> diff --git a/cmd/nvedit.c b/cmd/nvedit.c
> index 9a78e1d..fbed3df 100644
> --- a/cmd/nvedit.c
> +++ b/cmd/nvedit.c
> @@ -300,6 +300,27 @@ int setenv(const char *varname, const char *varvalue)
>  }
>
>  /**
> + * Set a "transient" environment variable
> + *
> + * Like setenv(), but this automatically marks the
> + * resulting entry as transient (= "do not export").
> + */
> +int setenv_transient(const char *varname, const char *varvalue)
> +{
> +       int rc = setenv(varname, varvalue);
> +       if (rc == 0) {

I think returning the error right away is better here.

  if (rc)
       return rc;

> +               ENTRY e, *ep;
> +
> +               e.key = varname;
> +               e.data = NULL;
> +               hsearch_r(e, FIND, &ep, &env_htab, 0);
> +               if (ep)
> +                       ep->flags |= ENV_FLAGS_VARACCESS_PREVENT_EXPORT;
> +       }
> +       return rc;

return 0;

> +}
> +
> +/**
>   * Set an environment variable to an integer value
>   *
>   * @param varname      Environment variable to set
> diff --git a/include/common.h b/include/common.h
> index a8d833b..c0fd319 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -392,6 +392,7 @@ ulong getenv_hex(const char *varname, ulong default_val);
>  int getenv_yesno(const char *var);
>  int    saveenv      (void);
>  int    setenv       (const char *, const char *);
> +int    setenv_transient(const char *, const char *);

Please add a function comment and parameter names.

>  int setenv_ulong(const char *varname, ulong value);
>  int setenv_hex(const char *varname, ulong value);
>  /**
> --
> 2.7.3
>
Regards,
SImon


More information about the U-Boot mailing list