[PATCH 1/6] env: allow to copy value from default environment into a buffer
Kever Yang
kever.yang at rock-chips.com
Thu Nov 9 04:33:30 CET 2023
On 2023/11/8 22:20, Quentin Schulz wrote:
> From: Quentin Schulz <quentin.schulz at theobroma-systems.com>
>
> env_get_default suffers from a particular issue int that it can only
> return a value truncated to gd->env_buf (32) characters. This may be
> enough for most variables but it isn't for others, so let's allow users
> to provide a preallocated buffer to copy the value into instead,
> allowing for more control, though it'll still be truncated if the value
> size is bigger than the preallocated buffer.
>
> Cc: Quentin Schulz <foss+uboot at 0leil.net>
> Signed-off-by: Quentin Schulz <quentin.schulz at theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
> ---
> env/common.c | 8 ++++++++
> include/env.h | 10 ++++++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/env/common.c b/env/common.c
> index eb1a9137953..307003099dd 100644
> --- a/env/common.c
> +++ b/env/common.c
> @@ -254,6 +254,14 @@ char *env_get_default(const char *name)
> return NULL;
> }
>
> +/*
> + * Look up the variable from the default environment and store its value in buf
> + */
> +int env_get_default_into(const char *name, char *buf, unsigned int len)
> +{
> + return env_get_from_linear(default_environment, name, buf, len);
> +}
> +
> void env_set_default(const char *s, int flags)
> {
> if (s) {
> diff --git a/include/env.h b/include/env.h
> index 430c4fa94a4..9a406de3781 100644
> --- a/include/env.h
> +++ b/include/env.h
> @@ -348,6 +348,16 @@ int env_import_redund(const char *buf1, int buf1_read_fail,
> */
> char *env_get_default(const char *name);
>
> +/**
> + * env_get_default_into() - Look up a variable from the default environment and
> + * copy its value in buf.
> + *
> + * @name: Variable to look up
> + * Return: actual length of the variable value excluding the terminating
> + * NULL-byte, or -1 if the variable is not found
> + */
> +int env_get_default_into(const char *name, char *buf, unsigned int len);
> +
> /* [re]set to the default environment */
> void env_set_default(const char *s, int flags);
>
>
More information about the U-Boot
mailing list