Add efi_delenv
Add an interface to remove / delete UEFI variables.
This commit is contained in:
@@ -122,6 +122,7 @@ void cpy16to8(const CHAR16 *, char *, size_t);
|
|||||||
* the loader setting / getting FreeBSD specific variables.
|
* the loader setting / getting FreeBSD specific variables.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
EFI_STATUS efi_delenv(EFI_GUID *guid, const char *varname);
|
||||||
EFI_STATUS efi_freebsd_getenv(const char *v, void *data, __size_t *len);
|
EFI_STATUS efi_freebsd_getenv(const char *v, void *data, __size_t *len);
|
||||||
EFI_STATUS efi_getenv(EFI_GUID *g, const char *v, void *data, __size_t *len);
|
EFI_STATUS efi_getenv(EFI_GUID *g, const char *v, void *data, __size_t *len);
|
||||||
EFI_STATUS efi_global_getenv(const char *v, void *data, __size_t *len);
|
EFI_STATUS efi_global_getenv(const char *v, void *data, __size_t *len);
|
||||||
|
|||||||
@@ -103,3 +103,21 @@ efi_setenv_freebsd_wcs(const char *varname, CHAR16 *valstr)
|
|||||||
return (rv);
|
return (rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* efi_delenv -- deletes the specified env variable
|
||||||
|
*/
|
||||||
|
EFI_STATUS
|
||||||
|
efi_delenv(EFI_GUID *guid, const char *name)
|
||||||
|
{
|
||||||
|
CHAR16 *var;
|
||||||
|
size_t len;
|
||||||
|
EFI_STATUS rv;
|
||||||
|
|
||||||
|
var = NULL;
|
||||||
|
if (utf8_to_ucs2(name, &var, &len) != 0)
|
||||||
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
|
|
||||||
|
rv = RS->SetVariable(var, guid, 0, 0, NULL);
|
||||||
|
free(var);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user