-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAssign.c
More file actions
46 lines (40 loc) · 1.28 KB
/
Assign.c
File metadata and controls
46 lines (40 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* Assign.c by Wei-Lun Chao <bluebat@member.fsf.org>, 2017. GPL. */
#include <efi.h>
#include <efilib.h>
#define SHELL_VARIABLE_GUID \
(EFI_GUID) {0x158def5a, 0xf656, 0x419c, {0xb0,0x27,0x7a,0x31,0x92,0xc0,0x79,0xd2}}
#define BUFSIZE 64
EFI_STATUS
efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
{
INTN Argc;
CHAR16 **Argv;
InitializeLib(ImageHandle, SystemTable);
Argc = GetShellArgcArgv(ImageHandle, &Argv);
if (Argc == 3) {
EFI_GUID gEfiGlobalVariableGuid = SHELL_VARIABLE_GUID;
// EFI_GUID vendorGuid = NullGuid;
CHAR16 buffer[BUFSIZE];
CHAR16 *bufptr = buffer;
// CHAR16 *value;
UINTN bufsize = 0;
ZeroMem(bufptr, BUFSIZE);
StrCat(buffer, Argv[1]);
bufsize = StrLen(buffer) * 2;
// LibDeleteVariable(Argv[2], &gEfiGlobalVariableGuid);
LibSetVariable(Argv[2], &gEfiGlobalVariableGuid, bufsize, bufptr);
// value = LibGetVariable(Argv[2], &vendorGuid);
// Print(L"%s\n", Argv[1]);
// Print(L"%s\n", value);
// FreePool(value);
return EFI_SUCCESS;
} else {
Print(L"Usage:\n");
Print(L" > set -d var\n");
Print(L" > Assign value var\n");
Print(L" > set var\n");
Print(L" > echo %%var%%\n");
Print(L" value\n");
return EFI_INVALID_PARAMETER;
}
}