
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);
if (e == NULL) {free(s);
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/.