Ignore:
Timestamp:
Dec 19, 2002, 1:55:27 PM (23 years ago)
Author:
sandervl
Message:

DT: GetFileTime & SetFileTime fixes; need to convert between UTC and local file time

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/oslibdos.cpp

    r9298 r9530  
    1 /* $Id: oslibdos.cpp,v 1.109 2002-09-26 16:06:07 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.110 2002-12-19 12:55:27 sandervl Exp $ */
    22/*
    33 * Wrappers for OS/2 Dos* API
     
    673673    dosDate = *(USHORT*)pDate;
    674674
     675    //time we get from OS2 is local time; win32 expects file time (UTC)
    675676    ret = DosDateTimeToFileTime(dosDate, dosTime, &dummy);
    676     if(ret == FALSE) {
    677         return FALSE;
    678     }
    679     //time we get from OS2 is local time; win32 expects file time (UTC)
    680     ret = LocalFileTimeToFileTime(&dummy, pFT);
     677    if(ret) ret = LocalFileTimeToFileTime(&dummy, pFT);
     678    return ret;
     679}
     680//******************************************************************************
     681//******************************************************************************
     682BOOL pmFileTimeToDateTime(FILETIME *pFT, FDATE *pDate, FTIME *pTime)
     683{
     684    BOOL        ret;
     685    FILETIME dummy;
     686    //time we get from win32 is file time (UTC); OS2 expects local time
     687    ret = FileTimeToLocalFileTime(pFT, &dummy);
     688    if (ret) ret = FileTimeToDosDateTime(&dummy, (WORD*)pDate, (WORD*)pTime);
    681689    return ret;
    682690}
     
    13911399//******************************************************************************
    13921400//******************************************************************************
    1393 BOOL OSLibDosSetFileTime(DWORD hFile, WORD creationdate, WORD creationtime,
    1394                          WORD lastaccessdate, WORD lastaccesstime,
    1395                          WORD lastwritedate, WORD lastwritetime)
     1401BOOL OSLibDosSetFileTime(DWORD hFile,  LPFILETIME pFT1,
     1402                         LPFILETIME pFT2, LPFILETIME pFT3)
    13961403{
    13971404  FILESTATUS3 fileInfo;
     
    14001407  rc = DosQueryFileInfo(hFile, FIL_STANDARD, &fileInfo, sizeof(fileInfo));
    14011408
    1402   if(rc == NO_ERROR)
    1403   {
    1404     if(creationdate && creationtime) {
    1405         fileInfo.fdateCreation   = *(FDATE *)&creationdate;
    1406         fileInfo.ftimeCreation   = *(FTIME *)&creationtime;
    1407     }
    1408     if(lastaccessdate && lastaccesstime) {
    1409         fileInfo.fdateLastAccess = *(FDATE *)&lastaccessdate;
    1410         fileInfo.ftimeLastAccess = *(FTIME *)&lastaccesstime;
    1411     }
    1412     if(lastwritedate && lastwritetime) {
    1413         fileInfo.fdateLastWrite  = *(FDATE *)&lastwritedate;
    1414         fileInfo.ftimeLastWrite  = *(FTIME *)&lastwritetime;
    1415     }
     1409  if (rc == NO_ERROR)
     1410  {
     1411        if (pFT1) pmFileTimeToDateTime(pFT1, &fileInfo.fdateCreation,  &fileInfo.ftimeCreation);
     1412        if (pFT2) pmFileTimeToDateTime(pFT2, &fileInfo.fdateLastAccess,&fileInfo.ftimeLastAccess);
     1413        if (pFT3) pmFileTimeToDateTime(pFT3, &fileInfo.fdateLastWrite, &fileInfo.ftimeLastWrite);
    14161414
    14171415    rc = DosSetFileInfo(hFile, FIL_STANDARD, &fileInfo, sizeof(fileInfo));
     
    14281426//******************************************************************************
    14291427//******************************************************************************
    1430 BOOL OSLibDosGetFileTime(DWORD hFile, WORD *creationdate, WORD *creationtime,
    1431                          WORD *lastaccessdate, WORD *lastaccesstime,
    1432                          WORD *lastwritedate, WORD *lastwritetime)
     1428BOOL OSLibDosGetFileTime(DWORD hFile, LPFILETIME pFT1,
     1429                         LPFILETIME pFT2, LPFILETIME pFT3)
    14331430{
    14341431  FILESTATUS3 fileInfo;
     
    14391436  if(rc == NO_ERROR)
    14401437  {
    1441     *creationdate   = *(WORD *)&fileInfo.fdateCreation;
    1442     *creationtime   = *(WORD *)&fileInfo.ftimeCreation;
    1443     *lastaccessdate = *(WORD *)&fileInfo.fdateLastAccess;
    1444     *lastaccesstime = *(WORD *)&fileInfo.ftimeLastAccess;
    1445     *lastwritedate  = *(WORD *)&fileInfo.fdateLastWrite;
    1446     *lastwritetime  = *(WORD *)&fileInfo.ftimeLastWrite;
    1447   }
    1448 
     1438        if (pFT1) pmDateTimeToFileTime(&fileInfo.fdateCreation,  &fileInfo.ftimeCreation,  pFT1);
     1439        if (pFT2) pmDateTimeToFileTime(&fileInfo.fdateLastAccess,&fileInfo.ftimeLastAccess,pFT2);
     1440        if (pFT3) pmDateTimeToFileTime(&fileInfo.fdateLastWrite, &fileInfo.ftimeLastWrite, pFT3);
     1441  }
    14491442  if(rc)
    14501443  {
Note: See TracChangeset for help on using the changeset viewer.