|
@@ -169,6 +169,24 @@ utf16_strsize(efi_char16_t *data, unsigned long maxlength)
|
|
|
return utf16_strnlen(data, maxlength/sizeof(efi_char16_t)) * sizeof(efi_char16_t);
|
|
|
}
|
|
|
|
|
|
+static inline int
|
|
|
+utf16_strncmp(const efi_char16_t *a, const efi_char16_t *b, size_t len)
|
|
|
+{
|
|
|
+ while (1) {
|
|
|
+ if (len == 0)
|
|
|
+ return 0;
|
|
|
+ if (*a < *b)
|
|
|
+ return -1;
|
|
|
+ if (*a > *b)
|
|
|
+ return 1;
|
|
|
+ if (*a == 0) /* implies *b == 0 */
|
|
|
+ return 0;
|
|
|
+ a++;
|
|
|
+ b++;
|
|
|
+ len--;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static efi_status_t
|
|
|
get_var_data_locked(struct efivars *efivars, struct efi_variable *var)
|
|
|
{
|