123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- /** @file
- function definitions for shell environment functions.
- the following includes are required:
- //#include <Guid/ShellVariableGuid.h>
- //#include <Library/UefiRuntimeServicesTableLib.h>
- Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _SHELL_ENVIRONMENT_VARIABLE_HEADER_
- #define _SHELL_ENVIRONMENT_VARIABLE_HEADER_
- typedef struct {
- LIST_ENTRY Link;
- CHAR16 *Key;
- CHAR16 *Val;
- UINT32 Atts;
- } ENV_VAR_LIST;
- //
- // The list is used to cache the environment variables.
- //
- extern ENV_VAR_LIST gShellEnvVarList;
- /**
- Reports whether an environment variable is Volatile or Non-Volatile.
- @param EnvVarName The name of the environment variable in question
- @param Volatile Return TRUE if the environment variable is volatile
- @retval EFI_SUCCESS The volatile attribute is returned successfully
- @retval others Some errors happened.
- **/
- EFI_STATUS
- IsVolatileEnv (
- IN CONST CHAR16 *EnvVarName,
- OUT BOOLEAN *Volatile
- );
- /**
- Delete a Non-Volatile environment variable.
- This will use the Runtime Services call SetVariable to remove a non-volatile variable.
- @param EnvVarName The name of the environment variable in question
- @retval EFI_SUCCESS The variable was deleted successfully
- @retval other An error occurred
- @sa SetVariable
- **/
- #define SHELL_DELETE_ENVIRONMENT_VARIABLE(EnvVarName) \
- (gRT->SetVariable((CHAR16*)EnvVarName, \
- &gShellVariableGuid, \
- 0, \
- 0, \
- NULL))
- /**
- Set a Non-Volatile environment variable.
- This will use the Runtime Services call SetVariable to set a non-volatile variable.
- @param EnvVarName The name of the environment variable in question
- @param BufferSize UINTN size of Buffer
- @param Buffer Pointer to value to set variable to
- @retval EFI_SUCCESS The variable was changed successfully
- @retval other An error occurred
- @sa SetVariable
- **/
- #define SHELL_SET_ENVIRONMENT_VARIABLE_NV(EnvVarName, BufferSize, Buffer) \
- (gRT->SetVariable((CHAR16*)EnvVarName, \
- &gShellVariableGuid, \
- EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS, \
- BufferSize, \
- (VOID*)Buffer))
- /**
- Get an environment variable.
- This will use the Runtime Services call GetVariable to get a variable.
- @param EnvVarName The name of the environment variable in question
- @param BufferSize Pointer to the UINTN size of Buffer
- @param Buffer Pointer buffer to get variable value into
- @retval EFI_SUCCESS The variable's value was retrieved successfully
- @retval other An error occurred
- @sa SetVariable
- **/
- #define SHELL_GET_ENVIRONMENT_VARIABLE(EnvVarName, BufferSize, Buffer) \
- (gRT->GetVariable((CHAR16*)EnvVarName, \
- &gShellVariableGuid, \
- 0, \
- BufferSize, \
- Buffer))
- /**
- Get an environment variable.
- This will use the Runtime Services call GetVariable to get a variable.
- @param EnvVarName The name of the environment variable in question
- @param Atts Pointer to the UINT32 for attributes (or NULL)
- @param BufferSize Pointer to the UINTN size of Buffer
- @param Buffer Pointer buffer to get variable value into
- @retval EFI_SUCCESS The variable's value was retrieved successfully
- @retval other An error occurred
- @sa SetVariable
- **/
- #define SHELL_GET_ENVIRONMENT_VARIABLE_AND_ATTRIBUTES(EnvVarName, Atts, BufferSize, Buffer) \
- (gRT->GetVariable((CHAR16*)EnvVarName, \
- &gShellVariableGuid, \
- Atts, \
- BufferSize, \
- Buffer))
- /**
- Set a Volatile environment variable.
- This will use the Runtime Services call SetVariable to set a volatile variable.
- @param EnvVarName The name of the environment variable in question
- @param BufferSize UINTN size of Buffer
- @param Buffer Pointer to value to set variable to
- @retval EFI_SUCCESS The variable was changed successfully
- @retval other An error occurred
- @sa SetVariable
- **/
- #define SHELL_SET_ENVIRONMENT_VARIABLE_V(EnvVarName, BufferSize, Buffer) \
- (gRT->SetVariable((CHAR16*)EnvVarName, \
- &gShellVariableGuid, \
- EFI_VARIABLE_BOOTSERVICE_ACCESS, \
- BufferSize, \
- (VOID*)Buffer))
- /**
- Creates a list of all Shell-Guid-based environment variables.
- @param[in, out] List The pointer to pointer to LIST_ENTRY object for
- storing this list.
- @retval EFI_SUCCESS the list was created successfully.
- **/
- EFI_STATUS
- GetEnvironmentVariableList (
- IN OUT LIST_ENTRY *List
- );
- /**
- Sets a list of all Shell-Guid-based environment variables. this will
- also eliminate all pre-existing shell environment variables (even if they
- are not on the list).
- This function will also deallocate the memory from List.
- @param[in] List The pointer to LIST_ENTRY from
- GetShellEnvVarList().
- @retval EFI_SUCCESS The list was Set successfully.
- **/
- EFI_STATUS
- SetEnvironmentVariableList (
- IN LIST_ENTRY *List
- );
- /**
- sets all Shell-Guid-based environment variables. this will
- also eliminate all pre-existing shell environment variables (even if they
- are not on the list).
- @param[in] Environment Points to a NULL-terminated array of environment
- variables with the format 'x=y', where x is the
- environment variable name and y is the value.
- @retval EFI_SUCCESS The command executed successfully.
- @retval EFI_INVALID_PARAMETER The parameter is invalid.
- @retval EFI_OUT_OF_RESOURCES Out of resources.
- @sa SetEnvironmentVariableList
- **/
- EFI_STATUS
- SetEnvironmentVariables (
- IN CONST CHAR16 **Environment
- );
- /**
- free function for ENV_VAR_LIST objects.
- @param[in] List The pointer to pointer to list.
- **/
- VOID
- FreeEnvironmentVariableList (
- IN LIST_ENTRY *List
- );
- /**
- Find an environment variable in the gShellEnvVarList.
- @param Key The name of the environment variable.
- @param Value The value of the environment variable, the buffer
- shoule be freed by the caller.
- @param ValueSize The size in bytes of the environment variable
- including the tailing CHAR_NULL.
- @param Atts The attributes of the variable.
- @retval EFI_SUCCESS The command executed successfully.
- @retval EFI_NOT_FOUND The environment variable is not found in
- gShellEnvVarList.
- **/
- EFI_STATUS
- ShellFindEnvVarInList (
- IN CONST CHAR16 *Key,
- OUT CHAR16 **Value,
- OUT UINTN *ValueSize,
- OUT UINT32 *Atts OPTIONAL
- );
- /**
- Add an environment variable into gShellEnvVarList.
- @param Key The name of the environment variable.
- @param Value The value of environment variable.
- @param ValueSize The size in bytes of the environment variable
- including the tailing CHAR_NULL
- @param Atts The attributes of the variable.
- @retval EFI_SUCCESS The environment variable was added to list successfully.
- @retval others Some errors happened.
- **/
- EFI_STATUS
- ShellAddEnvVarToList (
- IN CONST CHAR16 *Key,
- IN CONST CHAR16 *Value,
- IN UINTN ValueSize,
- IN UINT32 Atts
- );
- /**
- Remove a specified environment variable in gShellEnvVarList.
- @param Key The name of the environment variable.
- @retval EFI_SUCCESS The command executed successfully.
- @retval EFI_NOT_FOUND The environment variable is not found in
- gShellEnvVarList.
- **/
- EFI_STATUS
- ShellRemvoeEnvVarFromList (
- IN CONST CHAR16 *Key
- );
- /**
- Initialize the gShellEnvVarList and cache all Shell-Guid-based environment
- variables.
- **/
- EFI_STATUS
- ShellInitEnvVarList (
- VOID
- );
- /**
- Destructe the gShellEnvVarList.
- **/
- VOID
- ShellFreeEnvVarList (
- VOID
- );
- #endif //_SHELL_ENVIRONMENT_VARIABLE_HEADER_
|