2 * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
4 * SPDX-License-Identifier: BSD-3-Clause
14 static int unicode_to_ascii(unsigned short *str_in
, unsigned char *str_out
)
19 assert((str_in
!= NULL
) && (str_out
!= NULL
));
21 name
= (uint8_t *)str_in
;
23 assert(name
[0] != '\0');
25 /* check whether the unicode string is valid */
26 for (i
= 1; i
< (EFI_NAMELEN
<< 1); i
+= 2) {
30 /* convert the unicode string to ascii string */
31 for (i
= 0; i
< (EFI_NAMELEN
<< 1); i
+= 2) {
32 str_out
[i
>> 1] = name
[i
];
39 int parse_gpt_entry(gpt_entry_t
*gpt_entry
, partition_entry_t
*entry
)
43 assert((gpt_entry
!= NULL
) && (entry
!= NULL
));
45 if ((gpt_entry
->first_lba
== 0) && (gpt_entry
->last_lba
== 0)) {
49 zeromem(entry
, sizeof(partition_entry_t
));
50 result
= unicode_to_ascii(gpt_entry
->name
, (uint8_t *)entry
->name
);
54 entry
->start
= (uint64_t)gpt_entry
->first_lba
* PARTITION_BLOCK_SIZE
;
55 entry
->length
= (uint64_t)(gpt_entry
->last_lba
-
56 gpt_entry
->first_lba
+ 1) *