On 03/05/2014 09:45 AM, Przemyslaw Marczak wrote:
> Changes:
> - randomly generate each partition uuid if undefined
> - print info about generated uuid
> - save environment on gpt write success
> - update doc/README.gpt

> diff --git a/common/cmd_gpt.c b/common/cmd_gpt.c

> -static char extract_env(const char *str, char **env)
> +static int extract_env(const char *str, char **env)
>  {
> +     int ret = -1;
>       char *e, *s;
> +     char uuid_str[37];
>  
>       if (!str || strlen(str) < 4)
>               return -1;
> @@ -43,16 +45,25 @@ static char extract_env(const char *str, char **env)
>               memset(s + strlen(s) - 1, '\0', 1);
>               memmove(s, s + 2, strlen(s) - 1);
>               e = getenv(s);
> -             free(s);
>               if (e == NULL) {
> -                     printf("Environmental '%s' not set\n", str);
> -                     return -1; /* env not set */
> +                     printf("%s unset. ", str);
> +                     gen_rand_uuid_str(uuid_str);
> +                     setenv(s, uuid_str);
> +
> +                     e = getenv(s);
> +                     if (e) {
> +                             puts("Setting to random.\n");

Shouldn't this be printed right after the "if (e == NULL)" check above?
That's where the decision is made to generate a random UUID.

Here, "if (!e)", the code should return an error.

But, I still don't like changing the environment. Why can't the above
few lines be:

+                       gen_rand_uuid_str(uuid_str);
+                       e = uuid_str;

> diff --git a/doc/README.gpt b/doc/README.gpt

>  "uuid" program is recommended to generate UUID string. Moreover it can decode
>  (-d switch) passed in UUID string. It can be used to generate partitions UUID
>  passed to u-boot environment variables.
> +If each partition "uuid" no exists then it will be randomly generated.

"If each" means "if all of them", implying that it's an all-or-nothing
solution, and the random generation only happens of none of the UUIDs
were supplied, not on a UUID-by-UUID basis. So, s/each/a/ or s/each/any/.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to