]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/WinNtSimpleFileSystemDxe/WinNtSimpleFileSystem.c
UefiCpuPkg: Remove double \r
[mirror_edk2.git] / Nt32Pkg / WinNtSimpleFileSystemDxe / WinNtSimpleFileSystem.c
index feef184edb2b02d3d5a45811147093e75c9b160e..f13f82eee22be537d17d5007b64d3fe51fc492bd 100644 (file)
@@ -1,13 +1,7 @@
 /**@file\r
 \r
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 Module Name:\r
 \r
@@ -748,6 +742,12 @@ GetNextFileNameToken (
     // Point *FileName to the next character after L'\'.\r
     //\r
     *FileName = *FileName + Offset + 1;\r
+    //\r
+    // If *FileName is an empty string, then set *FileName to NULL\r
+    //\r
+    if (**FileName == L'\0') {\r
+      *FileName = NULL;\r
+    }\r
   }\r
 \r
   return Token;\r
@@ -1486,6 +1486,30 @@ Returns:
   }\r
 }\r
 \r
+/**\r
+  Convert the FileTime to EfiTime.\r
+\r
+  @param PrivateFile  Pointer to WIN_NT_EFI_FILE_PRIVATE.\r
+  @param TimeZone     Pointer to the current time zone.\r
+  @param FileTime     Pointer to file time.\r
+  @param EfiTime      Pointer to EFI time.\r
+**/\r
+VOID\r
+WinNtFileTimeToEfiTime (  \r
+  IN CONST WIN_NT_EFI_FILE_PRIVATE *PrivateFile,\r
+  IN       TIME_ZONE_INFORMATION   *TimeZone,\r
+  IN CONST FILETIME                *FileTime,\r
+  OUT      EFI_TIME                *EfiTime\r
+  )\r
+{\r
+  FILETIME                         TempFileTime;\r
+  SYSTEMTIME                       SystemTime;\r
+\r
+  PrivateFile->WinNtThunk->FileTimeToLocalFileTime (FileTime, &TempFileTime);\r
+  PrivateFile->WinNtThunk->FileTimeToSystemTime (&TempFileTime, &SystemTime);\r
+  WinNtSystemTimeToEfiTime (&SystemTime, TimeZone, EfiTime);\r
+}\r
+\r
 EFI_STATUS\r
 EFIAPI\r
 WinNtSimpleFileSystemRead (\r
@@ -1529,7 +1553,6 @@ Returns:
   UINTN                   NameSize;\r
   UINTN                   ResultSize;\r
   UINTN                   Index;\r
-  SYSTEMTIME              SystemTime;\r
   EFI_FILE_INFO           *Info;\r
   WCHAR                   *pw;\r
   TIME_ZONE_INFORMATION   TimeZone;\r
@@ -1636,24 +1659,9 @@ Returns:
     Info->Size = ResultSize;\r
 \r
     PrivateFile->WinNtThunk->GetTimeZoneInformation (&TimeZone);\r
-\r
-    PrivateFile->WinNtThunk->FileTimeToLocalFileTime (\r
-                              &PrivateFile->FindBuf.ftCreationTime,\r
-                              &PrivateFile->FindBuf.ftCreationTime\r
-                              );\r
-\r
-    PrivateFile->WinNtThunk->FileTimeToSystemTime (&PrivateFile->FindBuf.ftCreationTime, &SystemTime);\r
-\r
-    WinNtSystemTimeToEfiTime (&SystemTime, &TimeZone, &Info->CreateTime);\r
-\r
-    PrivateFile->WinNtThunk->FileTimeToLocalFileTime (\r
-                              &PrivateFile->FindBuf.ftLastWriteTime,\r
-                              &PrivateFile->FindBuf.ftLastWriteTime\r
-                              );\r
-\r
-    PrivateFile->WinNtThunk->FileTimeToSystemTime (&PrivateFile->FindBuf.ftLastWriteTime, &SystemTime);\r
-\r
-    WinNtSystemTimeToEfiTime (&SystemTime, &TimeZone, &Info->ModificationTime);\r
+    WinNtFileTimeToEfiTime (PrivateFile, &TimeZone, &PrivateFile->FindBuf.ftCreationTime, &Info->CreateTime);\r
+    WinNtFileTimeToEfiTime (PrivateFile, &TimeZone, &PrivateFile->FindBuf.ftLastAccessTime, &Info->LastAccessTime);\r
+    WinNtFileTimeToEfiTime (PrivateFile, &TimeZone, &PrivateFile->FindBuf.ftLastWriteTime, &Info->ModificationTime);\r
 \r
     Info->FileSize      = PrivateFile->FindBuf.nFileSizeLow;\r
 \r
@@ -1982,13 +1990,24 @@ Returns:
   UINTN                       ResultSize;\r
   EFI_FILE_INFO               *Info;\r
   BY_HANDLE_FILE_INFORMATION  FileInfo;\r
-  SYSTEMTIME                  SystemTime;\r
   CHAR16                      *RealFileName;\r
   CHAR16                      *TempPointer;\r
+  TIME_ZONE_INFORMATION       TimeZone;\r
 \r
   Size        = SIZE_OF_EFI_FILE_INFO;\r
-  NameSize    = StrSize (PrivateFile->FileName);\r
-  ResultSize  = Size + NameSize;\r
+\r
+  RealFileName  = PrivateFile->FileName;\r
+  TempPointer   = RealFileName;\r
+  while (*TempPointer) {\r
+    if (*TempPointer == '\\') {\r
+      RealFileName = TempPointer + 1;\r
+    }\r
+\r
+    TempPointer++;\r
+  }\r
+  NameSize = StrSize (RealFileName);\r
+\r
+  ResultSize = Size + NameSize; \r
 \r
   Status      = EFI_BUFFER_TOO_SMALL;\r
   if (*BufferSize >= ResultSize) {\r
@@ -2005,32 +2024,10 @@ Returns:
     Info->FileSize      = FileInfo.nFileSizeLow;\r
     Info->PhysicalSize  = Info->FileSize;\r
 \r
-    PrivateFile->WinNtThunk->FileTimeToLocalFileTime(&FileInfo.ftCreationTime, &FileInfo.ftCreationTime);\r
-    PrivateFile->WinNtThunk->FileTimeToSystemTime (&FileInfo.ftCreationTime, &SystemTime);\r
-    Info->CreateTime.Year   = SystemTime.wYear;\r
-    Info->CreateTime.Month  = (UINT8) SystemTime.wMonth;\r
-    Info->CreateTime.Day    = (UINT8) SystemTime.wDay;\r
-    Info->CreateTime.Hour   = (UINT8) SystemTime.wHour;\r
-    Info->CreateTime.Minute = (UINT8) SystemTime.wMinute;\r
-    Info->CreateTime.Second = (UINT8) SystemTime.wSecond;\r
-\r
-    PrivateFile->WinNtThunk->FileTimeToLocalFileTime(&FileInfo.ftLastAccessTime, &FileInfo.ftLastAccessTime);\r
-    PrivateFile->WinNtThunk->FileTimeToSystemTime (&FileInfo.ftLastAccessTime, &SystemTime);\r
-    Info->LastAccessTime.Year   = SystemTime.wYear;\r
-    Info->LastAccessTime.Month  = (UINT8) SystemTime.wMonth;\r
-    Info->LastAccessTime.Day    = (UINT8) SystemTime.wDay;\r
-    Info->LastAccessTime.Hour   = (UINT8) SystemTime.wHour;\r
-    Info->LastAccessTime.Minute = (UINT8) SystemTime.wMinute;\r
-    Info->LastAccessTime.Second = (UINT8) SystemTime.wSecond;\r
-\r
-    PrivateFile->WinNtThunk->FileTimeToLocalFileTime(&FileInfo.ftLastWriteTime, &FileInfo.ftLastWriteTime);\r
-    PrivateFile->WinNtThunk->FileTimeToSystemTime (&FileInfo.ftLastWriteTime, &SystemTime);\r
-    Info->ModificationTime.Year   = SystemTime.wYear;\r
-    Info->ModificationTime.Month  = (UINT8) SystemTime.wMonth;\r
-    Info->ModificationTime.Day    = (UINT8) SystemTime.wDay;\r
-    Info->ModificationTime.Hour   = (UINT8) SystemTime.wHour;\r
-    Info->ModificationTime.Minute = (UINT8) SystemTime.wMinute;\r
-    Info->ModificationTime.Second = (UINT8) SystemTime.wSecond;\r
+    PrivateFile->WinNtThunk->GetTimeZoneInformation (&TimeZone);\r
+    WinNtFileTimeToEfiTime (PrivateFile, &TimeZone, &FileInfo.ftCreationTime, &Info->CreateTime);\r
+    WinNtFileTimeToEfiTime (PrivateFile, &TimeZone, &FileInfo.ftLastAccessTime, &Info->LastAccessTime);\r
+    WinNtFileTimeToEfiTime (PrivateFile, &TimeZone, &FileInfo.ftLastWriteTime, &Info->ModificationTime);\r
 \r
     if (FileInfo.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) {\r
       Info->Attribute |= EFI_FILE_ARCHIVE;\r
@@ -2056,17 +2053,6 @@ Returns:
       Info->Attribute |= EFI_FILE_DIRECTORY;\r
     }\r
 \r
-    RealFileName  = PrivateFile->FileName;\r
-    TempPointer   = RealFileName;\r
-\r
-    while (*TempPointer) {\r
-      if (*TempPointer == '\\') {\r
-        RealFileName = TempPointer + 1;\r
-      }\r
-\r
-      TempPointer++;\r
-    }\r
-\r
     if (PrivateFile->IsRootDirectory) {\r
       *((CHAR8 *) Buffer + Size) = 0;\r
     } else {\r