From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x233.google.com (mail-it0-x233.google.com [IPv6:2607:f8b0:4001:c0b::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0289C81F1A for ; Mon, 27 Feb 2017 23:39:21 -0800 (PST) Received: by mail-it0-x233.google.com with SMTP id 203so4200732ith.0 for ; Mon, 27 Feb 2017 23:39:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Y+gbavckaI5Tl9Wr+cyIhsW0MvGNmi2KnOoRG2UkdmY=; b=Xo4b38N5UhCNhcqcDTAxpKbbwFWk507raY4G2YtFcRHSLxqC7q24yL3vqmJdEf+LuX 52wR3KHfTUD3KOl7mAidqWDPYcqGZMUKQY4KJusSWsRapssRnTW6CUsuAKkwEGGtEVmY LCKc7dGdh1J1306EFDdcre94C5vQuQMJ9PExo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Y+gbavckaI5Tl9Wr+cyIhsW0MvGNmi2KnOoRG2UkdmY=; b=uGTuephu9MCD4gnocFXWfXgFqx1yYECJgC90F0Zeie9AeR2pUcnP6j6JbkjmUkyFQm iBx3Q4KkMN3QLDG1ljtcNeFrVvi6Vsi19Ezv1dBrx1Na9VUFX+u28YFImBHug7jMXWsn WDAEleJQzTSocIiDKGzTK3dyfQGkr/rd0zaAM2RZvcqDvci4TbOvcufPL+e/blnl3sbM zouUDlxqTDJeUrnvUiVfXnbZ7Yfy73M1jAg1n4/Q218ohLTlckff/0256bjdRrjpnNgl TrDn1C9hCszONBj7hGuDSbHiOCJhy0D5JnoWJ2rzNgKGYCdJgKqbNU68wFCe4UQnZZSN TRzg== X-Gm-Message-State: AMke39ns7Rioe61KgO4bhd59BH24Rj0cbToZunAPBsot4IQSFJP5eKqm/bGGSfmJHiHW2ncsAWpWk0QwcfNCp971 X-Received: by 10.36.118.68 with SMTP id z65mr346389itb.59.1488267560048; Mon, 27 Feb 2017 23:39:20 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.10.27 with HTTP; Mon, 27 Feb 2017 23:39:19 -0800 (PST) In-Reply-To: References: <20170222074630.545800-1-ruiyu.ni@intel.com> <20170222074630.545800-3-ruiyu.ni@intel.com> From: Ard Biesheuvel Date: Tue, 28 Feb 2017 07:39:19 +0000 Message-ID: To: "Carsey, Jaben" Cc: "Ni, Ruiyu" , "edk2-devel@lists.01.org" , "Chen, Chen A" Subject: Re: [PATCH 2/2] ShellPkg/comp: Add "-n "/"-s " support 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, 28 Feb 2017 07:39:21 -0000 Content-Type: text/plain; charset=UTF-8 On 27 February 2017 at 16:36, Carsey, Jaben wrote: > Reviewed-by: Jaben Carsey > This patch breaks the build on GCC: : In function 'ShellCommandRunComp': :328:36: error: 'DiffPointAddress' may be used uninitialized in this function [-Werror=maybe-uninitialized] DiffPointAddress += Index; >> -----Original Message----- >> From: Ni, Ruiyu >> Sent: Tuesday, February 21, 2017 11:47 PM >> To: edk2-devel@lists.01.org >> Cc: Chen, Chen A ; Carsey, Jaben >> >> Subject: [PATCH 2/2] ShellPkg/comp: Add "-n "/"-s " >> support >> Importance: High >> >> From: Chen A Chen >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Chen A Chen >> Signed-off-by: Ruiyu Ni >> Cc: Jaben Carsey >> --- >> ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c | 357 >> +++++++++++++-------- >> .../UefiShellDebug1CommandsLib.uni | 27 +- >> 2 files changed, 229 insertions(+), 155 deletions(-) >> >> diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c >> b/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c >> index 829c49a..62b59d7 100644 >> --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c >> +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c >> @@ -15,6 +15,71 @@ >> >> #include "UefiShellDebug1CommandsLib.h" >> >> +STATIC CONST SHELL_PARAM_ITEM ParamList[] = { >> + {L"-n", TypeValue}, >> + {L"-s", TypeValue}, >> + {NULL, TypeMax} >> + }; >> + >> +typedef enum { >> + OutOfDiffPoint, >> + InDiffPoint, >> + InPrevDiffPoint >> +} READ_STATUS; >> + >> +/** >> + Function to print differnt point data. >> + >> + @param[in] FileName File name >> + @param[in] Buffer Data buffer to be printed. >> + @param[in] BufferSize Size of the data to be printed. >> + @param[in] Address Address of the differnt point. >> + @param[in] DifferentBytes Total size of the buffer. >> + >> +**/ >> +VOID >> +PrintDifferentPoint( >> + CONST CHAR16 *FileName, >> + UINT8 *Buffer, >> + UINT64 DataSize, >> + UINTN Address, >> + UINT64 BufferSize >> + ) >> +{ >> + UINTN Index; >> + >> + ShellPrintEx (-1, -1, L"%s: %s\r\n %08x:", L"File1", FileName, Address); >> + >> + // >> + // Print data in hex-format. >> + // >> + for (Index = 0; Index < DataSize; Index++) { >> + ShellPrintEx (-1, -1, L" %02x", Buffer[Index]); >> + } >> + >> + if (DataSize < BufferSize) { >> + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_END_OF_FILE), >> gShellDebug1HiiHandle); >> + } >> + >> + ShellPrintEx (-1, -1, L" *"); >> + >> + // >> + // Print data in char-format. >> + // >> + for (Index = 0; Index < DataSize; Index++) { >> + if (Buffer[Index] >= 0x20 && Buffer[Index] <= 0x7E) { >> + ShellPrintEx (-1, -1, L"%c", Buffer[Index]); >> + } else { >> + // >> + // Print dots for control characters >> + // >> + ShellPrintEx (-1, -1, L"."); >> + } >> + } >> + >> + ShellPrintEx (-1, -1, L"*\r\n"); >> +} >> + >> /** >> Function for 'comp' command. >> >> @@ -35,32 +100,41 @@ ShellCommandRunComp ( >> CHAR16 *FileName2; >> CONST CHAR16 *TempParam; >> SHELL_STATUS ShellStatus; >> - UINTN LoopVar; >> SHELL_FILE_HANDLE FileHandle1; >> SHELL_FILE_HANDLE FileHandle2; >> - UINT8 DifferentCount; >> UINT64 Size1; >> UINT64 Size2; >> - UINT8 DataFromFile1; >> - UINT8 DataFromFile2; >> - UINT8 ADF_File11; >> - UINT8 ADF_File12; >> - UINT8 ADF_File13; >> - UINT8 ADF_File21; >> - UINT8 ADF_File22; >> - UINT8 ADF_File23; >> + UINT64 DifferentBytes; >> + UINT64 DifferentCount; >> + UINT8 DiffPointNumber; >> + UINT8 OneByteFromFile1; >> + UINT8 OneByteFromFile2; >> + UINT8 *DataFromFile1; >> + UINT8 *DataFromFile2; >> + UINTN InsertPosition1; >> + UINTN InsertPosition2; >> UINTN DataSizeFromFile1; >> UINTN DataSizeFromFile2; >> + UINTN TempAddress; >> + UINTN Index; >> UINTN DiffPointAddress; >> + READ_STATUS ReadStatus; >> >> - DifferentCount = 0; >> ShellStatus = SHELL_SUCCESS; >> Status = EFI_SUCCESS; >> FileName1 = NULL; >> FileName2 = NULL; >> FileHandle1 = NULL; >> FileHandle2 = NULL; >> - Size1 = 0; >> + DataFromFile1 = NULL; >> + DataFromFile2 = NULL; >> + ReadStatus = OutOfDiffPoint; >> + DifferentCount = 10; >> + DifferentBytes = 4; >> + DiffPointNumber = 0; >> + InsertPosition1 = 0; >> + InsertPosition2 = 0; >> + TempAddress = 0; >> >> // >> // initialize the shell lib (we must be in non-auto-init...) >> @@ -74,7 +148,7 @@ ShellCommandRunComp ( >> // >> // parse the command line >> // >> - Status = ShellCommandLineParse (EmptyParamList, &Package, >> &ProblemParam, TRUE); >> + Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, >> TRUE); >> if (EFI_ERROR(Status)) { >> if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) { >> ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), >> gShellDebug1HiiHandle, L"comp", ProblemParam); >> @@ -118,142 +192,165 @@ ShellCommandRunComp ( >> } >> } >> if (ShellStatus == SHELL_SUCCESS) { >> - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_COMP_HEADER), >> gShellDebug1HiiHandle, FileName1, FileName2); >> Status = gEfiShellProtocol->GetFileSize(FileHandle1, &Size1); >> ASSERT_EFI_ERROR(Status); >> Status = gEfiShellProtocol->GetFileSize(FileHandle2, &Size2); >> ASSERT_EFI_ERROR(Status); >> - if (Size1 != Size2) { >> - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_COMP_SIZE_FAIL), >> gShellDebug1HiiHandle); >> - DifferentCount++; >> - ShellStatus = SHELL_NOT_EQUAL; >> + >> + if (ShellCommandLineGetFlag (Package, L"-n")) { >> + TempParam = ShellCommandLineGetValue (Package, L"-n"); >> + if (TempParam == NULL) { >> + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), >> gShellDebug1HiiHandle, L"comp", L"-n"); >> + ShellStatus = SHELL_INVALID_PARAMETER; >> + } else { >> + if (gUnicodeCollation->StriColl (gUnicodeCollation, (CHAR16 >> *)TempParam, L"all") == 0) { >> + DifferentCount = MAX_UINTN; >> + } else { >> + Status = ShellConvertStringToUint64 (TempParam, &DifferentCount, >> FALSE, TRUE); >> + if (EFI_ERROR(Status) || DifferentCount == 0) { >> + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN >> (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, >> L"-n"); >> + ShellStatus = SHELL_INVALID_PARAMETER; >> + } >> + } >> + } >> + } >> + >> + if (ShellCommandLineGetFlag (Package, L"-s")) { >> + TempParam = ShellCommandLineGetValue (Package, L"-s"); >> + if (TempParam == NULL) { >> + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), >> gShellDebug1HiiHandle, L"comp", L"-s"); >> + ShellStatus = SHELL_INVALID_PARAMETER; >> + } else { >> + Status = ShellConvertStringToUint64 (TempParam, &DifferentBytes, >> FALSE, TRUE); >> + if (EFI_ERROR(Status) || DifferentBytes == 0) { >> + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN >> (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, >> L"-s"); >> + ShellStatus = SHELL_INVALID_PARAMETER; >> + } else { >> + if (DifferentBytes > MAX (Size1, Size2)) { >> + DifferentBytes = MAX (Size1, Size2); >> + } >> + } >> + } >> } >> } >> + >> if (ShellStatus == SHELL_SUCCESS) { >> - for (LoopVar = 0 ; LoopVar < Size1 && DifferentCount <= 10 ; LoopVar++) >> { >> + DataFromFile1 = AllocateZeroPool ((UINTN)DifferentBytes); >> + DataFromFile2 = AllocateZeroPool ((UINTN)DifferentBytes); >> + if (DataFromFile1 == NULL || DataFromFile2 == NULL) { >> + ShellStatus = SHELL_OUT_OF_RESOURCES; >> + SHELL_FREE_NON_NULL (DataFromFile1); >> + SHELL_FREE_NON_NULL (DataFromFile2); >> + } >> + } >> + >> + if (ShellStatus == SHELL_SUCCESS) { >> + while (DiffPointNumber < DifferentCount) { >> DataSizeFromFile1 = 1; >> DataSizeFromFile2 = 1; >> - Status = gEfiShellProtocol->ReadFile(FileHandle1, &DataSizeFromFile1, >> &DataFromFile1); >> - ASSERT_EFI_ERROR(Status); >> - Status = gEfiShellProtocol->ReadFile(FileHandle2, &DataSizeFromFile2, >> &DataFromFile2); >> - ASSERT_EFI_ERROR(Status); >> - if (DataFromFile1 != DataFromFile2) { >> - DiffPointAddress = LoopVar; >> - ADF_File11 = 0; >> - ADF_File12 = 0; >> - ADF_File13 = 0; >> - ADF_File21 = 0; >> - ADF_File22 = 0; >> - ADF_File23 = 0; >> + OneByteFromFile1 = 0; >> + OneByteFromFile2 = 0; >> + Status = gEfiShellProtocol->ReadFile (FileHandle1, &DataSizeFromFile1, >> &OneByteFromFile1); >> + ASSERT_EFI_ERROR (Status); >> + Status = gEfiShellProtocol->ReadFile (FileHandle2, &DataSizeFromFile2, >> &OneByteFromFile2); >> + ASSERT_EFI_ERROR (Status); >> >> - // >> - // Now check the next 3 bytes if possible. This will make output >> - // cleaner when there are a sequence of differences. >> - // >> - if (LoopVar + 1 < Size1) { >> - LoopVar++; >> - DataSizeFromFile1 = 1; >> - DataSizeFromFile2 = 1; >> - Status = gEfiShellProtocol->ReadFile(FileHandle1, >> &DataSizeFromFile1, &ADF_File11); >> - ASSERT_EFI_ERROR(Status); >> - Status = gEfiShellProtocol->ReadFile(FileHandle2, >> &DataSizeFromFile2, &ADF_File21); >> - ASSERT_EFI_ERROR(Status); >> - if (LoopVar + 1 < Size1) { >> - LoopVar++; >> - DataSizeFromFile1 = 1; >> - DataSizeFromFile2 = 1; >> - Status = gEfiShellProtocol->ReadFile(FileHandle1, >> &DataSizeFromFile1, &ADF_File12); >> - ASSERT_EFI_ERROR(Status); >> - Status = gEfiShellProtocol->ReadFile(FileHandle2, >> &DataSizeFromFile2, &ADF_File22); >> - ASSERT_EFI_ERROR(Status); >> - if (LoopVar + 1 < Size1) { >> - LoopVar++; >> - DataSizeFromFile1 = 1; >> - DataSizeFromFile2 = 1; >> - Status = gEfiShellProtocol->ReadFile(FileHandle1, >> &DataSizeFromFile1, &ADF_File13); >> - ASSERT_EFI_ERROR(Status); >> - Status = gEfiShellProtocol->ReadFile(FileHandle2, >> &DataSizeFromFile2, &ADF_File23); >> - ASSERT_EFI_ERROR(Status); >> - } >> + TempAddress++; >> + >> + // >> + // 1.When end of file and no chars in DataFromFile buffer, then break >> while. >> + // 2.If no more char in File1 or File2, The ReadStatus is InPrevDiffPoint >> forever. >> + // So the previous different point is the last one, then break the while >> block. >> + // >> + if ( (DataSizeFromFile1 == 0 && InsertPosition1 == 0 && >> DataSizeFromFile2 == 0 && InsertPosition2 == 0) || >> + (ReadStatus == InPrevDiffPoint && (DataSizeFromFile1 == 0 || >> DataSizeFromFile2 == 0)) >> + ) { >> + break; >> + } >> + >> + if (ReadStatus == OutOfDiffPoint) { >> + if (OneByteFromFile1 != OneByteFromFile2) { >> + ReadStatus = InDiffPoint; >> + DiffPointAddress = TempAddress; >> + if (DataSizeFromFile1 == 1) { >> + DataFromFile1[InsertPosition1++] = OneByteFromFile1; >> + } >> + if (DataSizeFromFile2 == 1) { >> + DataFromFile2[InsertPosition2++] = OneByteFromFile2; >> } >> } >> + } else if (ReadStatus == InDiffPoint) { >> + if (DataSizeFromFile1 == 1) { >> + DataFromFile1[InsertPosition1++] = OneByteFromFile1; >> + } >> + if (DataSizeFromFile2 == 1) { >> + DataFromFile2[InsertPosition2++] = OneByteFromFile2; >> + } >> + } else if (ReadStatus == InPrevDiffPoint) { >> + if (OneByteFromFile1 == OneByteFromFile2) { >> + ReadStatus = OutOfDiffPoint; >> + } >> + } >> + >> + // >> + // ReadStatus should be always equal InDiffPoint. >> + // >> + if ( InsertPosition1 == DifferentBytes || >> + InsertPosition2 == DifferentBytes || >> + (DataSizeFromFile1 == 0 && DataSizeFromFile2 == 0) >> + ) { >> + >> + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN >> (STR_COMP_DIFFERENCE_POINT), gShellDebug1HiiHandle, >> ++DiffPointNumber); >> + PrintDifferentPoint (FileName1, DataFromFile1, InsertPosition1, >> DiffPointAddress, DifferentBytes); >> + PrintDifferentPoint (FileName2, DataFromFile2, InsertPosition2, >> DiffPointAddress, DifferentBytes); >> >> // >> - // Print out based on highest of the 4 bytes that are different. >> + // One of two buffuers is empty, it means this is the last different >> point. >> // >> - if (ADF_File13 != ADF_File23) { >> - ShellPrintHiiEx( >> - -1, >> - -1, >> - NULL, >> - STRING_TOKEN (STR_COMP_SPOT_FAIL4), >> - gShellDebug1HiiHandle, >> - ++DifferentCount, >> - FileName1, >> - DiffPointAddress, >> - DataFromFile1, ADF_File11, ADF_File12, ADF_File13, >> - DataFromFile1, ADF_File11, ADF_File12, ADF_File13, >> - FileName2, >> - DiffPointAddress, >> - DataFromFile2, ADF_File21, ADF_File22, ADF_File23, >> - DataFromFile2, ADF_File21, ADF_File22, ADF_File23 >> - ); >> - } else if (ADF_File12 != ADF_File22) { >> - ShellPrintHiiEx( >> - -1, >> - -1, >> - NULL, >> - STRING_TOKEN (STR_COMP_SPOT_FAIL3), >> - gShellDebug1HiiHandle, >> - ++DifferentCount, >> - FileName1, >> - DiffPointAddress, >> - DataFromFile1, ADF_File11, ADF_File12, >> - DataFromFile1, ADF_File11, ADF_File12, >> - FileName2, >> - DiffPointAddress, >> - DataFromFile2, ADF_File21, ADF_File22, >> - DataFromFile2, ADF_File21, ADF_File22 >> - ); >> - } else if (ADF_File11 != ADF_File21) { >> - ShellPrintHiiEx( >> - -1, >> - -1, >> - NULL, >> - STRING_TOKEN (STR_COMP_SPOT_FAIL2), >> - gShellDebug1HiiHandle, >> - ++DifferentCount, >> - FileName1, >> - DiffPointAddress, >> - DataFromFile1, ADF_File11, >> - DataFromFile1, ADF_File11, >> - FileName2, >> - DiffPointAddress, >> - DataFromFile2, ADF_File21, >> - DataFromFile2, ADF_File21 >> - ); >> + if (InsertPosition1 == 0 || InsertPosition2 == 0) { >> + break; >> + } >> + >> + for (Index = 1; Index < InsertPosition1 && Index < InsertPosition2; >> Index++) { >> + if (DataFromFile1[Index] == DataFromFile2[Index]) { >> + ReadStatus = OutOfDiffPoint; >> + break; >> + } >> + } >> + >> + if (ReadStatus == OutOfDiffPoint) { >> + // >> + // Try to find a new different point in the rest of DataFromFile. >> + // >> + for (; Index < MAX (InsertPosition1,InsertPosition2); Index++) { >> + if (DataFromFile1[Index] != DataFromFile2[Index]) { >> + ReadStatus = InDiffPoint; >> + DiffPointAddress += Index; >> + break; >> + } >> + } >> } else { >> - ShellPrintHiiEx( >> - -1, >> - -1, >> - NULL, >> - STRING_TOKEN (STR_COMP_SPOT_FAIL1), >> - gShellDebug1HiiHandle, >> - ++DifferentCount, >> - FileName1, >> - DiffPointAddress, >> - DataFromFile1, >> - DataFromFile1, >> - FileName2, >> - DiffPointAddress, >> - DataFromFile2, >> - DataFromFile2 >> - ); >> + // >> + // Doesn't find a new different point, still in the same different point. >> + // >> + ReadStatus = InPrevDiffPoint; >> } >> - ShellStatus = SHELL_NOT_EQUAL; >> + >> + CopyMem (DataFromFile1, DataFromFile1 + Index, InsertPosition1 - >> Index); >> + CopyMem (DataFromFile2, DataFromFile2 + Index, InsertPosition2 - >> Index); >> + >> + SetMem (DataFromFile1 + InsertPosition1 - Index, >> (UINTN)DifferentBytes - InsertPosition1 + Index, 0); >> + SetMem (DataFromFile2 + InsertPosition2 - Index, >> (UINTN)DifferentBytes - InsertPosition2 + Index, 0); >> + >> + InsertPosition1 -= Index; >> + InsertPosition2 -= Index; >> } >> } >> - if (DifferentCount == 0) { >> + >> + SHELL_FREE_NON_NULL (DataFromFile1); >> + SHELL_FREE_NON_NULL (DataFromFile2); >> + >> + if (DiffPointNumber == 0) { >> ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN >> (STR_COMP_FOOTER_PASS), gShellDebug1HiiHandle); >> } else { >> ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN >> (STR_COMP_FOOTER_FAIL), gShellDebug1HiiHandle); >> diff --git >> a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman >> dsLib.uni >> b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman >> dsLib.uni >> index 7c0ca98..2d5d16f 100644 >> --- >> a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman >> dsLib.uni >> +++ >> b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman >> dsLib.uni >> @@ -65,31 +65,8 @@ >> #string STR_DBLK_HEADER #language en-US "LBA %016LX Size %08x >> bytes BlkIo %0x\r\n" >> >> #string STR_COMP_HEADER #language en-US "Compare %s to %s.\r\n" >> -#string STR_COMP_SIZE_FAIL #language en-US "Difference # 1: File size >> mismatch.\r\n" >> -#string STR_COMP_SPOT_FAIL1 #language en-US "" >> - "Difference #% 2d:\r\n" >> - "File1: %s\r\n" >> - " %08x: %02x *%c*\r\n" >> - "File2: %s\r\n" >> - " %08x: %02x *%c*\r\n" >> -#string STR_COMP_SPOT_FAIL2 #language en-US "" >> - "Difference #% 2d:\r\n" >> - "File1: %s\r\n" >> - " %08x: %02x %02x *%c%c*\r\n" >> - "File2: %s\r\n" >> - " %08x: %02x %02x *%c%c*\r\n" >> -#string STR_COMP_SPOT_FAIL3 #language en-US "" >> - "Difference #% 2d:\r\n" >> - "File1: %s\r\n" >> - " %08x: %02x %02x %02x >> *%c%c%c*\r\n" >> - "File2: %s\r\n" >> - " %08x: %02x %02x %02x >> *%c%c%c*\r\n" >> -#string STR_COMP_SPOT_FAIL4 #language en-US "" >> - "Difference #% 2d:\r\n" >> - "File1: %s\r\n" >> - " %08x: %02x %02x %02x %02x >> *%c%c%c%c*\r\n" >> - "File2: %s\r\n" >> - " %08x: %02x %02x %02x %02x >> *%c%c%c%c*\r\n" >> +#string STR_COMP_DIFFERENCE_POINT #language en-US "Difference #% >> 2u:\r\n" >> +#string STR_COMP_END_OF_FILE #language en-US " " >> >> #string STR_COMP_FOOTER_FAIL #language en-US "[difference(s) >> encountered] \r\n" >> #string STR_COMP_FOOTER_PASS #language en-US "[no differences >> encountered]\r\n" >> -- >> 2.9.0.windows.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel