From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0725.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe44::725]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 2B01081ED5 for ; Tue, 15 Nov 2016 08:50:51 -0800 (PST) Received: from CS1PR84MB0229.NAMPRD84.PROD.OUTLOOK.COM (10.162.190.151) by CS1PR84MB0230.NAMPRD84.PROD.OUTLOOK.COM (10.162.190.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10; Tue, 15 Nov 2016 16:50:53 +0000 Received: from CS1PR84MB0229.NAMPRD84.PROD.OUTLOOK.COM ([10.162.190.151]) by CS1PR84MB0229.NAMPRD84.PROD.OUTLOOK.COM ([10.162.190.151]) with mapi id 15.01.0721.015; Tue, 15 Nov 2016 16:50:53 +0000 From: "Shah, Tapan" To: Ruiyu Ni , "edk2-devel@lists.01.org" CC: Chen A Chen , Jaben Carsey Thread-Topic: [PATCH v2] ShellPkg/dmpstore: Support "-sfo" Thread-Index: AQHSPh2OLsDubq3u9ki243ykzFrpOKDaRIVg Date: Tue, 15 Nov 2016 16:50:53 +0000 Message-ID: References: <20161114021918.128680-1-ruiyu.ni@intel.com> In-Reply-To: <20161114021918.128680-1-ruiyu.ni@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=tapandshah@hpe.com; x-originating-ip: [15.203.227.10] x-microsoft-exchange-diagnostics: 1; CS1PR84MB0230; 7:RgVf5sQa+C9LjFVOA1odVqbFnxfF7OvyYXu/8sYXkUmvUv/ebDVucgzMf6WXxjmb+3LO1tPuwYHB5xm0M/LTmB4x89Nsgliqq1da+WJLgUvSw7CsUXKswr8365ptFZcgArhWXmEaLxHnT1qWuZSHmwZjRe54MGvnkcNEx3nRkRVGrkLj047DlteCeKP4zhpPGq8tzGGFANZAEF/iA6FmqgredNCdIGTTUEB6D2W1VJecslxdWTCSo4Qqx7dHkYY7qFMTfYBbGyPdHXYZlVvhsIMezZaJd1hXGHm7/urDA1A/NdLun/Lf0CdlkxeA+hMoSSYwY1nUu67L6kBO+CNIN5hjoxPcu3gElnpSLhd+Wek= x-ms-office365-filtering-correlation-id: d4da4b59-88ac-413e-9c5e-08d40d779027 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CS1PR84MB0230; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(227479698468861)(162533806227266)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6060326)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6061324); SRVR:CS1PR84MB0230; BCL:0; PCL:0; RULEID:; SRVR:CS1PR84MB0230; x-forefront-prvs: 012792EC17 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(7916002)(13464003)(377454003)(199003)(189002)(3660700001)(5001770100001)(74316002)(92566002)(106356001)(7846002)(305945005)(97736004)(3846002)(86362001)(7736002)(9686002)(87936001)(99286002)(3280700002)(106116001)(81166006)(8676002)(81156014)(7696004)(33656002)(2950100002)(8936002)(66066001)(54356999)(77096005)(101416001)(122556002)(6116002)(102836003)(189998001)(2900100001)(76176999)(50986999)(2906002)(229853002)(68736007)(105586002)(4326007)(2501003)(5660300001)(19627235001); DIR:OUT; SFP:1102; SCL:1; SRVR:CS1PR84MB0230; H:CS1PR84MB0229.NAMPRD84.PROD.OUTLOOK.COM; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: hpe.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2016 16:50:53.5005 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR84MB0230 Subject: Re: [PATCH v2] ShellPkg/dmpstore: Support "-sfo" X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Nov 2016 16:50:51 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Tapan Shah -----Original Message----- From: Ruiyu Ni [mailto:ruiyu.ni@intel.com]=20 Sent: Sunday, November 13, 2016 8:19 PM To: edk2-devel@lists.01.org Cc: Chen A Chen ; Jaben Carsey ; Shah, Tapan Subject: [PATCH v2] ShellPkg/dmpstore: Support "-sfo" The patch adds the "-sfo" support to "dmpstore" command. When -l or -d is specified, -sfo is not supported. When the variable specified by name and GUID cannot be found, an error message is displayed; Otherwise, the SFO is displayed. E.g.: "dmpstore -guid GuidThatDoesntExist -sfo" produces output as: ShellCommand,"dmpstore" VariableInfo,"","GuidThatDoesntExist","","","" "dmpstore NameThatDoesntExist -guid GuidThatDoesntExist -sfo" produces output as: ShellCommand,"dmpstore" dmpstore: No matching variables found. Guid GuidThatDoesntExist, Name NameThatDoesntExist The difference between the above 2 cases is that former one only specifies the GUID, but the latter one specifies both name and GUID. Since not specifying GUID means to use GlobalVariableGuid, "dmpstore NameThatDoesntExist -sfo" produces the similar output as latter one. I personally prefer to always produce SFO output for both cases. But the above behavior is the discussion result between HPE engineers. Signed-off-by: Ruiyu Ni Signed-off-by: Chen A Chen Cc: Jaben Carsey Cc: Tapan Shah --- .../Library/UefiShellDebug1CommandsLib/DmpStore.c | 207 +++++++++++++++--= ---- .../UefiShellDebug1CommandsLib.uni | 8 +- 2 files changed, 154 insertions(+), 61 deletions(-) diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c b/Shell= Pkg/Library/UefiShellDebug1CommandsLib/DmpStore.c index 3427c99..7133881 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c @@ -2,7 +2,7 @@ Main file for DmpStore shell Debug1 function. =20 (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.
- Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.
+ Copyright (c) 2005 - 2016, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License which accompanies this distribution. The full text of the license may b= e found at @@ -82,6 +82,42 @@ GetAttrType ( } =20 /** + Convert binary to hex format string. + + @param[in] BufferSize The size in bytes of the binary data. + @param[in] Buffer The binary data. + @param[in, out] HexString Hex format string. + @param[in] HexStringSize The size in bytes of the string. + + @return The hex format string. +**/ +CHAR16* +BinaryToHexString ( + IN VOID *Buffer, + IN UINTN BufferSize, + IN OUT CHAR16 *HexString, + IN UINTN HexStringSize + ) +{ + UINTN Index; + UINTN StringIndex; + + ASSERT (Buffer !=3D NULL); + ASSERT ((BufferSize * 2 + 1) * sizeof (CHAR16) <=3D HexStringSize); + + for (Index =3D 0, StringIndex =3D 0; Index < BufferSize; Index +=3D 1) { + StringIndex +=3D + UnicodeSPrint ( + &HexString[StringIndex], + HexStringSize - StringIndex * sizeof (CHAR16), + L"%02x", + ((UINT8 *) Buffer)[Index] + ); + } + return HexString; +} + +/** Load the variable data from file and set to variable data base. =20 @param[in] FileHandle The file to be read. @@ -350,14 +386,15 @@ AppendSingleVariableToFile ( =20 This is necessary since once a delete happens GetNextVariableName() will= work. =20 - @param[in] Name The variable name of the EFI variable (or NULL= ). - @param[in] Guid The GUID of the variable set (or NULL). - @param[in] Type The operation type. - @param[in] FileHandle The file to operate on (or NULL). - @param[in] PrevName The previous variable name from GetNextVariabl= eName. L"" to start. - @param[in] FoundVarGuid The previous GUID from GetNextVariableName. ig= nored at start. - @param[in] FoundOne If a VariableName or Guid was specified and on= e was printed or - deleted, then set this to TRUE, otherwise igno= red. + @param[in] Name The variable name of the EFI variable (o= r NULL). + @param[in] Guid The GUID of the variable set (or NULL). + @param[in] Type The operation type. + @param[in] FileHandle The file to operate on (or NULL). + @param[in] PrevName The previous variable name from GetNextV= ariableName. L"" to start. + @param[in] FoundVarGuid The previous GUID from GetNextVariableNa= me. ignored at start. + @param[in] FoundOne If a VariableName or Guid was specified = and one was printed or + deleted, then set this to TRUE, otherwis= e ignored. + @param[in] StandardFormatOutput TRUE indicates Standard-Format Output. =20 @retval SHELL_SUCCESS The operation was successful. @retval SHELL_OUT_OF_RESOURCES A memorty allocation failed. @@ -373,7 +410,8 @@ CascadeProcessVariables ( IN EFI_FILE_PROTOCOL *FileHandle OPTIONAL, IN CONST CHAR16 * CONST PrevName, IN EFI_GUID FoundVarGuid, - IN BOOLEAN *FoundOne + IN BOOLEAN *FoundOne, + IN BOOLEAN StandardFormatOutput ) { EFI_STATUS Status; @@ -383,7 +421,8 @@ CascadeProcessVariables ( UINT32 Atts; SHELL_STATUS ShellStatus; UINTN NameSize; - CHAR16 *RetString; + CHAR16 *AttrString; + CHAR16 *HexString; =20 if (ShellGetExecutionBreakFlag()) { return (SHELL_ABORTED); @@ -427,7 +466,7 @@ CascadeProcessVariables ( // // Recurse to the next iteration. We know "our" variable's name. // - ShellStatus =3D CascadeProcessVariables(Name, Guid, Type, FileHandle, Fo= undVarName, FoundVarGuid, FoundOne); + ShellStatus =3D CascadeProcessVariables (Name, Guid, Type, FileHandle, F= oundVarName, FoundVarGuid, FoundOne, StandardFormatOutput); =20 if (ShellGetExecutionBreakFlag() || (ShellStatus =3D=3D SHELL_ABORTED)) = { SHELL_FREE_NON_NULL(FoundVarName); @@ -459,50 +498,70 @@ CascadeProcessVariables ( Status =3D gRT->GetVariable (FoundVarName, &FoundVarGuid, &Atts, &= DataSize, DataBuffer); } } - if ((Type =3D=3D DmpStoreDisplay) || (Type =3D=3D DmpStoreSave)) { // // Last error check then print this variable out. // + if (Type =3D=3D DmpStoreDisplay) { if (!EFI_ERROR(Status) && (DataBuffer !=3D NULL) && (FoundVarName != =3D NULL)) { - RetString =3D GetAttrType(Atts); - ShellPrintHiiEx( - -1, - -1, - NULL, - STRING_TOKEN(STR_DMPSTORE_HEADER_LINE), - gShellDebug1HiiHandle, - RetString, - &FoundVarGuid, - FoundVarName, - DataSize); - if (Type =3D=3D DmpStoreDisplay) { - DumpHex(2, 0, DataSize, DataBuffer); + AttrString =3D GetAttrType(Atts); + if (StandardFormatOutput) { + HexString =3D AllocatePool ((DataSize * 2 + 1) * sizeof (CHAR16)= ); + if (HexString !=3D NULL) { + ShellPrintHiiEx ( + -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_VAR_SFO), gShellDeb= ug1HiiHandle, + FoundVarName, &FoundVarGuid, Atts, DataSize, + BinaryToHexString ( + DataBuffer, DataSize, HexString, (DataSize * 2 + 1) * size= of (CHAR16) + ) + ); + FreePool (HexString); + } else { + Status =3D EFI_OUT_OF_RESOURCES; + } } else { - Status =3D AppendSingleVariableToFile ( - FileHandle, - FoundVarName, - &FoundVarGuid, - Atts, - (UINT32) DataSize, - DataBuffer - ); + ShellPrintHiiEx ( + -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE), gShellD= ebug1HiiHandle, + AttrString, &FoundVarGuid, FoundVarName, DataSize + ); + DumpHex (2, 0, DataSize, DataBuffer); } - SHELL_FREE_NON_NULL(RetString); + SHELL_FREE_NON_NULL (AttrString); + } + } else if (Type =3D=3D DmpStoreSave) { + if (!EFI_ERROR(Status) && (DataBuffer !=3D NULL) && (FoundVarName != =3D NULL)) { + AttrString =3D GetAttrType (Atts); + ShellPrintHiiEx ( + -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE), gShellDeb= ug1HiiHandle, + AttrString, &FoundVarGuid, FoundVarName, DataSize + ); + Status =3D AppendSingleVariableToFile ( + FileHandle, + FoundVarName, + &FoundVarGuid, + Atts, + (UINT32) DataSize, + DataBuffer + ); + SHELL_FREE_NON_NULL (AttrString); } } else if (Type =3D=3D DmpStoreDelete) { // // We only need name to delete it... // - ShellPrintHiiEx ( - -1, - -1, - NULL, - STRING_TOKEN(STR_DMPSTORE_DELETE_LINE), - gShellDebug1HiiHandle, - &FoundVarGuid, - FoundVarName, - gRT->SetVariable (FoundVarName, &FoundVarGuid, Atts, 0, NULL) - ); + EFI_STATUS SetStatus =3D gRT->SetVariable (FoundVarName, &FoundVarGu= id, Atts, 0, NULL); + if (StandardFormatOutput) { + if (SetStatus =3D=3D EFI_SUCCESS) { + ShellPrintHiiEx ( + -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_NG_SFO),= gShellDebug1HiiHandle, + FoundVarName, &FoundVarGuid + ); + } + } else { + ShellPrintHiiEx ( + -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_DELETE_LINE), gShellDeb= ug1HiiHandle, + &FoundVarGuid, FoundVarName, SetStatus + ); + } } SHELL_FREE_NON_NULL(DataBuffer); } @@ -523,10 +582,11 @@ CascadeProcessVariables ( /** Function to display or delete variables. This will set up and call into= the recursive function. =20 - @param[in] Name The variable name of the EFI variable (or NULL). - @param[in] Guid The GUID of the variable set (or NULL). - @param[in] Type The operation type. - @param[in] FileHandle The file to save or load variables. + @param[in] Name The variable name of the EFI variable (o= r NULL). + @param[in] Guid The GUID of the variable set (or NULL). + @param[in] Type The operation type. + @param[in] FileHandle The file to save or load variables. + @param[in] StandardFormatOutput TRUE indicates Standard-Format Output. =20 @retval SHELL_SUCCESS The operation was successful. @retval SHELL_OUT_OF_RESOURCES A memorty allocation failed. @@ -539,7 +599,8 @@ ProcessVariables ( IN CONST CHAR16 *Name OPTIONAL, IN CONST EFI_GUID *Guid OPTIONAL, IN DMP_STORE_TYPE Type, - IN SHELL_FILE_HANDLE FileHandle OPTIONAL + IN SHELL_FILE_HANDLE FileHandle OPTIONAL, + IN BOOLEAN StandardFormatOutput ) { SHELL_STATUS ShellStatus; @@ -550,10 +611,14 @@ ProcessVariables ( ShellStatus =3D SHELL_SUCCESS; ZeroMem (&FoundVarGuid, sizeof(EFI_GUID)); =20 + if (StandardFormatOutput) { + ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_GEN_SFO_HEADER), gShell= Debug1HiiHandle, L"dmpstore"); + } + if (Type =3D=3D DmpStoreLoad) { ShellStatus =3D LoadVariablesFromFile (FileHandle, Name, Guid, &Found)= ; } else { - ShellStatus =3D CascadeProcessVariables(Name, Guid, Type, FileHandle, = NULL, FoundVarGuid, &Found); + ShellStatus =3D CascadeProcessVariables (Name, Guid, Type, FileHandle,= NULL, FoundVarGuid, &Found, StandardFormatOutput); } =20 if (!Found) { @@ -561,13 +626,25 @@ ProcessVariables ( ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShell= Debug1HiiHandle, L"dmpstore"); =20 return (ShellStatus); } else if (Name !=3D NULL && Guid =3D=3D NULL) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUN= D_N), gShellDebug1HiiHandle, L"dmpstore", Name); =20 + if (StandardFormatOutput) { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_F= OUND_N_SFO), gShellDebug1HiiHandle, Name); + } else { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_F= OUND_N), gShellDebug1HiiHandle, L"dmpstore", Name); =20 + } } else if (Name !=3D NULL && Guid !=3D NULL) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUN= D_GN), gShellDebug1HiiHandle, L"dmpstore", Guid, Name); =20 } else if (Name =3D=3D NULL && Guid =3D=3D NULL) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUN= D), gShellDebug1HiiHandle, L"dmpstore"); =20 + if (StandardFormatOutput) { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_F= OUND_SFO), gShellDebug1HiiHandle); + } else { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_F= OUND), gShellDebug1HiiHandle, L"dmpstore"); + } } else if (Name =3D=3D NULL && Guid !=3D NULL) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUN= D_G), gShellDebug1HiiHandle, L"dmpstore", Guid); =20 + if (StandardFormatOutput) { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_F= OUND_G_SFO), gShellDebug1HiiHandle, Guid); + } else { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_F= OUND_G), gShellDebug1HiiHandle, L"dmpstore", Guid); + } }=20 return (SHELL_NOT_FOUND); } @@ -580,6 +657,7 @@ STATIC CONST SHELL_PARAM_ITEM ParamList[] =3D { {L"-s", TypeValue}, {L"-all", TypeFlag}, {L"-guid", TypeValue}, + {L"-sfo", TypeFlag}, {NULL, TypeMax} }; =20 @@ -608,12 +686,14 @@ ShellCommandRunDmpStore ( DMP_STORE_TYPE Type; SHELL_FILE_HANDLE FileHandle; EFI_FILE_INFO *FileInfo; + BOOLEAN StandardFormatOutput; =20 - ShellStatus =3D SHELL_SUCCESS; - Package =3D NULL; - FileHandle =3D NULL; - File =3D NULL; - Type =3D DmpStoreDisplay; + ShellStatus =3D SHELL_SUCCESS; + Package =3D NULL; + FileHandle =3D NULL; + File =3D NULL; + Type =3D DmpStoreDisplay; + StandardFormatOutput =3D FALSE; =20 Status =3D ShellCommandLineParse (ParamList, &Package, &ProblemParam, TR= UE); if (EFI_ERROR(Status)) { @@ -637,6 +717,9 @@ ShellCommandRunDmpStore ( } else if ((ShellCommandLineGetFlag(Package, L"-s") || ShellCommandLin= eGetFlag(Package, L"-l")) && ShellCommandLineGetFlag(Package, L"-d")) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT),= gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-d"); =20 ShellStatus =3D SHELL_INVALID_PARAMETER; + } else if ((ShellCommandLineGetFlag(Package, L"-s") || ShellCommandLin= eGetFlag(Package, L"-l")) && ShellCommandLineGetFlag(Package, L"-sfo")) { + ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT),= gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-sfo"); =20 + ShellStatus =3D SHELL_INVALID_PARAMETER; } else { // // Determine the GUID to search for based on -all and -guid paramete= rs @@ -742,6 +825,10 @@ ShellCommandRunDmpStore ( } else if (ShellCommandLineGetFlag(Package, L"-d")) { Type =3D DmpStoreDelete; } + + if (ShellCommandLineGetFlag (Package,L"-sfo")) { + StandardFormatOutput =3D TRUE; + } } =20 if (ShellStatus =3D=3D SHELL_SUCCESS) { @@ -750,7 +837,7 @@ ShellCommandRunDmpStore ( } else if (Type =3D=3D DmpStoreLoad) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD),= gShellDebug1HiiHandle, File); } - ShellStatus =3D ProcessVariables (Name, Guid, Type, FileHandle); + ShellStatus =3D ProcessVariables (Name, Guid, Type, FileHandle, St= andardFormatOutput); if ((Type =3D=3D DmpStoreLoad) || (Type =3D=3D DmpStoreSave)) { ShellCloseFile (&FileHandle); } diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Com= mandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1C= ommandsLib.uni index 52c2af0..bd1726b 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLi= b.uni +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLi= b.uni @@ -407,9 +407,14 @@ #string STR_DMPSTORE_HEADER_LINE #language en-US "Variable %H%s%N '%= H%g%N:%H%s%N' DataSize =3D 0x%02x\r\n" #string STR_DMPSTORE_DELETE_LINE #language en-US "Delete variable '%= H%g%N:%H%s%N': %r\r\n" #string STR_DMPSTORE_NO_VAR_FOUND #language en-US "%H%s%N: No matchin= g variables found.\r\n" +#string STR_DMPSTORE_NO_VAR_FOUND_SFO #language en-US "VariableInfo,\"\",= \"\",\"\",\"\",\"\"\r\n" #string STR_DMPSTORE_NO_VAR_FOUND_GN #language en-US "%H%s%N: No matchin= g variables found. Guid %g, Name %s\r\n" +#string STR_DMPSTORE_NO_VAR_FOUND_NG_SFO #language en-US "VariableInfo,\"%= s\",\"%g\",\"\",\"\",\"\"\r\n" #string STR_DMPSTORE_NO_VAR_FOUND_N #language en-US "%H%s%N: No matchin= g variables found. Name %s\r\n" +#string STR_DMPSTORE_NO_VAR_FOUND_N_SFO #language en-US #language en-US "V= ariableInfo,\"%s\",\"\",\"\",\"\",\"\"\r\n" #string STR_DMPSTORE_NO_VAR_FOUND_G #language en-US "%H%s%N: No matchin= g variables found. Guid %g\r\n" +#string STR_DMPSTORE_NO_VAR_FOUND_G_SFO #language en-US "VariableInfo,\"\"= ,\"%g\",\"\",\"\",\"\"\r\n" +#string STR_DMPSTORE_VAR_SFO #language en-US "VariableInfo,\"%s\= ",\"%g\",\"0x%x\",\"0x%x\",\"%s\"\r\n" =20 #string STR_GET_HELP_COMP #language en-US "" ".TH comp 0 "Compare 2 files"\r\n" @@ -1015,7 +1020,7 @@ "Manages all UEFI variables.\r\n" ".SH SYNOPSIS\r\n" " \r\n" -"DMPSTORE [-b] [-d] [-all | ([variable] [-guid guid])]\r\n" +"DMPSTORE [-b] [-d] [-all | ([variable] [-guid guid])] [-sfo]\r\n" "DMPSTORE [-all | ([variable] [-guid guid])] [-s file]\r\n" "DMPSTORE [-all | ([variable] [-guid guid])] [-l file]\r\n" ".SH OPTIONS\r\n" @@ -1024,6 +1029,7 @@ " -guid - Specifies the GUID of the variables to be displayed in\r\n" " standard text format. If not specified and -all is not\r\n" " specified, the EFI_GLOBAL_VARIABLE GUID is assumed.\r\n" +" -sfo - Displays information as described in Standard-Format Output.= \r\n" " -all - Dumps all variables, including those\r\n" " with a different GUID than EFI_GLOBAL_VARIABLE.\r\n" " -d - Delete variables.\r\n" --=20 2.9.0.windows.1