Daryl, Jaben; Could you please review the attached patch? It is a regression caused by EDK2 R16606.
ShellPkg: Remove the reference to PathLib from UefiShellLib. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zeng, Star <[email protected]> Thanks, Star -----Original Message----- From: [email protected] [mailto:[email protected]] Sent: Wednesday, January 14, 2015 6:17 AM To: [email protected] Subject: edk2[16606] ShellPkg: allow creating of files to create required directory path Revision: 16606 http://sourceforge.net/p/edk2/code/16606 Author: jcarsey Date: 2015-01-13 22:16:41 +0000 (Tue, 13 Jan 2015) Log Message: ----------- ShellPkg: allow creating of files to create required directory path Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: jaben carsey <[email protected]> Reviewed-by: Tapan Shah <[email protected]> Reviewed-by: Joe Peterson <[email protected]> Modified Paths: -------------- trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.inf Modified: trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c =================================================================== --- trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c 2015-01-13 18:58:00 UTC (rev 16605) +++ trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c 2015-01-13 22:16:41 UTC (rev 16606) @@ -1,7 +1,7 @@ /** @file Provides interface to shell functionality for shell commands and applications. - Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2006 - 2015, Intel Corporation. All rights + reserved.<BR> This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -15,6 +15,7 @@ #include "UefiShellLib.h" #include <ShellBase.h> #include <Library/SortLib.h> +#include <Library/PathLib.h> #define FIND_XXXXX_FILE_BUFFER_SIZE (SIZE_OF_EFI_FILE_INFO + MAX_FILE_NAME_LEN) @@ -671,6 +672,7 @@ EFI_DEVICE_PATH_PROTOCOL *FilePath; EFI_STATUS Status; EFI_FILE_INFO *FileInfo; + CHAR16 *FileNameCopy; // // ASSERT if FileName is NULL @@ -682,11 +684,32 @@ } if (gEfiShellProtocol != NULL) { - if ((OpenMode & EFI_FILE_MODE_CREATE) == EFI_FILE_MODE_CREATE && (Attributes & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) { - return ShellCreateDirectory(FileName, FileHandle); + if ((OpenMode & EFI_FILE_MODE_CREATE) == EFI_FILE_MODE_CREATE) { + + // + // Create only a directory + // + if ((Attributes & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) { + return ShellCreateDirectory(FileName, FileHandle); + } + + // + // Create the directory to create the file in + // + FileNameCopy = AllocateCopyPool (StrSize (FileName), FileName); + if (FileName == NULL) { + return (EFI_OUT_OF_RESOURCES); + } + PathCleanUpDirectories (FileNameCopy); + if (PathRemoveLastItem (FileNameCopy)) { + ShellCreateDirectory (FileNameCopy, FileHandle); + ShellCloseFile (FileHandle); + } + SHELL_FREE_NON_NULL (FileNameCopy); } + // - // Use UEFI Shell 2.0 method + // Use UEFI Shell 2.0 method to create the file // Status = gEfiShellProtocol->OpenFileByName(FileName, FileHandle, Modified: trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.inf =================================================================== --- trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.inf 2015-01-13 18:58:00 UTC (rev 16605) +++ trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.inf 2015-01-13 22:16:41 UTC (rev 16606) @@ -1,7 +1,7 @@ ## @file # Provides interface to shell functionality for shell commands and applications. # -# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved. <BR> +# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved. +<BR> # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -48,6 +48,7 @@ UefiLib HiiLib SortLib + PathLib [Protocols] gEfiSimpleFileSystemProtocolGuid # ALWAYS_CONSUMED ------------------------------------------------------------------------------ New Year. New Location. New Benefits. New Data Center in Ashburn, VA. GigeNET is offering a free month of service with a new server in Ashburn. Choose from 2 high performing configs, both with 100TB of bandwidth. Higher redundancy.Lower latency.Increased capacity.Completely compliant. http://p.sf.net/sfu/gigenet _______________________________________________ edk2-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-commits
ShellLib.patch
Description: ShellLib.patch
------------------------------------------------------------------------------ New Year. New Location. New Benefits. New Data Center in Ashburn, VA. GigeNET is offering a free month of service with a new server in Ashburn. Choose from 2 high performing configs, both with 100TB of bandwidth. Higher redundancy.Lower latency.Increased capacity.Completely compliant. http://p.sf.net/sfu/gigenet
_______________________________________________ edk2-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-commits
