Include/ctype.h:             Function declaration and Macro definition of isDirSep
Include/unistd.h:            Declarations added from EfiSysCall.h
Include/utime.h:             New file.  For the Posix utime() function.
Include/sys/_ctype.h:        Update character class bit maps.
Include/sys/EfiSysCall.h:    Move declarations to unistd.h
Include/sys/fcntl.h:         Improve comments.  Add UEFI-specific macros.
Include/sys/filio.h:         Remove declarations for unsupported file ioctls.
Include/sys/stat.h:          Fix flags.  Add macros and declarations.
Include/sys/time.h:          Add declarations for new functions Tm2Efi() and Time2Efi().
Include/sys/types.h:         Use EFI-specific instead of BSD-specific definitions for typedefs.
Include/sys/unistd.h:        Delete inappropriate content.  Guard macro definitions.
LibC/Locale/setlocale.c
LibC/Stdio/{fdopen.c, findfp.c, fopen.c, freopen.c, gettemp.c, makebuf.c, mktemp.c,
            remove.c, stdio.c, tempnam.c, tmpfile.c, tmpnam.c}
LibC/Time/{itimer.c, ZoneProc.c}
LibC/Uefi/SysCalls.c
LibC/Uefi/Devices/Console/daConsole.c
LibC/Uefi/Devices/UefiShell/daShell.c
PosixLib/Gen/readdir.c
                             Include unistd.h instead of EfiSysCall.h
LibC/Ctype/CClass.c:         Character classification function implementation for isDirSep.
LibC/Ctype/iCtype.c:         Update character classification and case conversion tables.
LibC/Time/TimeEfi.c:         Improve comments.  Implement new functions Tm2Efi() and Time2Efi().
LibC/Uefi/StubFunctions.c:   Add missing include.  Cosmetic changes to declarations.
LibC/Uefi/SysCalls.c:        Add support function for utime().
LibC/Uefi/Uefi.inf:          Add LibGen library class dependency.
LibC/Uefi/Xform.c:           Enhance Omode2EFI().
LibC/Uefi/Devices/UefiShell/daShell.c:    Enhance da_ShellMkdir.  Implement da_ShellIoctl to set file times.
PosixLib/Gen/access.c:       New file.  Implement the access() function.
PosixLib/Gen/dirname.c:      Enhance to use isDirSep and differentiate between the device, path, and filename components of UEFI Shell-style paths.
PosixLib/Gen/utime.c:        New file.  Implement the utime() function.
PosixLib/Gen/LibGen.inf:     Change MODULE_TYPE.  Add new files.
Signed-off-by: darylm503
Reviewed-by: geekboy15a
Reviewed-by: jljusten
Reviewed-by: Rahul Khana
Reviewed-by: leegrosenbaum
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12800 6f19259b-4bc3-4df7-8a09-765794883524
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Transformations between the EFI_TIME structure and struct tm or time_t.
 | |
| 
 | |
|   Copyright (c) 2010, 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 that accompanies this distribution.
 | |
|   The full text of the license may be found at
 | |
|   http://opensource.org/licenses/bsd-license.php.
 | |
| 
 | |
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
|   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
| **/
 | |
| #include  <Uefi.h>
 | |
| 
 | |
| #include  <LibConfig.h>
 | |
| 
 | |
| #include  <time.h>
 | |
| #include  "tzfile.h"
 | |
| #include  <MainData.h>
 | |
| 
 | |
| /** Convert an EFI_TIME structure into a C Standard tm structure.
 | |
| 
 | |
|     @param[in]    ET    Pointer to the EFI_TIME structure to convert.
 | |
|     @param[out]   BT    Pointer to the tm structure to receive the converted time.
 | |
| */
 | |
| void
 | |
| Efi2Tm(
 | |
|   IN      EFI_TIME  *ET,
 | |
|      OUT  struct tm *BT
 | |
|   )
 | |
| {
 | |
|   // Convert EFI time to broken-down time.
 | |
|   BT->tm_year = ET->Year - TM_YEAR_BASE;
 | |
|   BT->tm_mon = ET->Month - 1;   // BD time is zero based, EFI is 1 based
 | |
|   BT->tm_mday = ET->Day;
 | |
|   BT->tm_hour = ET->Hour;
 | |
|   BT->tm_min = ET->Minute;
 | |
|   BT->tm_sec = ET->Second;
 | |
|   BT->tm_isdst = -1;
 | |
|   BT->tm_zoneoff = ET->TimeZone;
 | |
|   BT->tm_daylight = ET->Daylight;
 | |
|   BT->tm_Nano = ET->Nanosecond;
 | |
| }
 | |
| 
 | |
| /** Convert an EFI_TIME structure into a time_t value.
 | |
| 
 | |
|     @param[in]  EfiBDtime   Pointer to the EFI_TIME structure to convert.
 | |
| 
 | |
|     @return   The EFI_TIME converted into a time_t value.
 | |
| */
 | |
| time_t
 | |
| Efi2Time(
 | |
|   IN  EFI_TIME *EfiBDtime
 | |
|   )
 | |
| {
 | |
|   Efi2Tm( EfiBDtime, &gMD->BDTime);
 | |
| 
 | |
|   return mktime( &gMD->BDTime);
 | |
| }
 | |
| 
 | |
| /** Convert a C Standard tm structure into an EFI_TIME structure.
 | |
| 
 | |
|     @param[in]    BT    Pointer to the tm structure to convert.
 | |
|     @param[out]   ET    Pointer to an EFI_TIME structure to receive the converted time.
 | |
| */
 | |
| void
 | |
| Tm2Efi(
 | |
|   IN      struct tm *BT,
 | |
|      OUT  EFI_TIME  *ET
 | |
|   )
 | |
| {
 | |
|   ET->Year        = (UINT16)BT->tm_year + TM_YEAR_BASE;
 | |
|   ET->Month       = (UINT8)BT->tm_mon + 1;
 | |
|   ET->Day         = (UINT8)BT->tm_mday;
 | |
|   ET->Hour        = (UINT8)BT->tm_hour;
 | |
|   ET->Minute      = (UINT8)BT->tm_min;
 | |
|   ET->Second      = (UINT8)BT->tm_sec;
 | |
|   ET->Nanosecond  = (UINT32)BT->tm_Nano;
 | |
|   ET->TimeZone    = (INT16)BT->tm_zoneoff;
 | |
|   ET->Daylight    = (UINT8)BT->tm_daylight;
 | |
| }
 | |
| 
 | |
| /** Convert a time_t value into an EFI_TIME structure.
 | |
| 
 | |
|     @param[in]    CalTime   Calendar time as a time_t value.
 | |
| 
 | |
|     @return   Returns a newly malloced EFI_TIME structure containing
 | |
|               the converted calendar time.
 | |
| 
 | |
|     @post     It is the responsibility of the caller to free the
 | |
|               returned structure before the application exits.
 | |
| */
 | |
| EFI_TIME*
 | |
| Time2Efi(
 | |
|   IN  time_t CalTime
 | |
|   )
 | |
| {
 | |
|   struct tm *IT;
 | |
|   EFI_TIME  *ET   = NULL;
 | |
| 
 | |
|   IT = gmtime(&CalTime);
 | |
|   if(IT != NULL) {
 | |
|     ET = malloc(sizeof(EFI_TIME));
 | |
|     if(ET != NULL) {
 | |
|       Tm2Efi(IT, ET);
 | |
|     }
 | |
|   }
 | |
|   return ET;
 | |
| }
 |