X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Fuuid.c;h=7d7a2749b6410650362b6b0fa9c1b618872b893f;hb=f681eacbfeb2598c135ef8e8ba8d5b9298a52a38;hp=1536c027da27c82df8953be81207296c979a1111;hpb=470135be276b2d92c6da464c68839202d4ff0d08;p=platform%2Fkernel%2Fu-boot.git diff --git a/lib/uuid.c b/lib/uuid.c index 1536c02..7d7a274 100644 --- a/lib/uuid.c +++ b/lib/uuid.c @@ -1,7 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2011 Calxeda, Inc. - * - * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -188,9 +187,10 @@ int uuid_str_to_bin(char *uuid_str, unsigned char *uuid_bin, int str_format) /* * uuid_bin_to_str() - convert big endian binary data to string UUID or GUID. * - * @param uuid_bin - pointer to binary data of UUID (big endian) [16B] - * @param uuid_str - pointer to allocated array for output string [37B] - * @str_format - UUID string format: 0 - UUID; 1 - GUID + * @param uuid_bin: pointer to binary data of UUID (big endian) [16B] + * @param uuid_str: pointer to allocated array for output string [37B] + * @str_format: bit 0: 0 - UUID; 1 - GUID + * bit 1: 0 - lower case; 2 - upper case */ void uuid_bin_to_str(unsigned char *uuid_bin, char *uuid_str, int str_format) { @@ -199,6 +199,7 @@ void uuid_bin_to_str(unsigned char *uuid_bin, char *uuid_str, int str_format) const u8 guid_char_order[UUID_BIN_LEN] = {3, 2, 1, 0, 5, 4, 7, 6, 8, 9, 10, 11, 12, 13, 14, 15}; const u8 *char_order; + const char *format; int i; /* @@ -206,13 +207,17 @@ void uuid_bin_to_str(unsigned char *uuid_bin, char *uuid_str, int str_format) * 4B-2B-2B-2B-6B * be be be be be */ - if (str_format == UUID_STR_FORMAT_STD) + if (str_format & UUID_STR_FORMAT_GUID) + char_order = guid_char_order; + else char_order = uuid_char_order; + if (str_format & UUID_STR_UPPER_CASE) + format = "%02X"; else - char_order = guid_char_order; + format = "%02x"; for (i = 0; i < 16; i++) { - sprintf(uuid_str, "%02x", uuid_bin[char_order[i]]); + sprintf(uuid_str, format, uuid_bin[char_order[i]]); uuid_str += 2; switch (i) { case 3: @@ -239,6 +244,8 @@ void gen_rand_uuid(unsigned char *uuid_bin) unsigned int *ptr = (unsigned int *)&uuid; int i; + srand(get_ticks() + rand()); + /* Set all fields randomly */ for (i = 0; i < sizeof(struct uuid) / sizeof(*ptr); i++) *(ptr + i) = cpu_to_be32(rand()); @@ -272,7 +279,7 @@ void gen_rand_uuid_str(char *uuid_str, int str_format) uuid_bin_to_str(uuid_bin, uuid_str, str_format); } -#ifdef CONFIG_CMD_UUID +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_CMD_UUID) int do_uuid(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char uuid[UUID_STR_LEN + 1];