Ignore:
Timestamp:
Oct 2, 2000, 3:39:18 PM (25 years ago)
Author:
sandervl
Message:

version changes + misc fixes/changes

File:
1 edited

Legend:

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

    r4324 r4372  
    1 /* $Id: oslibdos.cpp,v 1.46 2000-09-25 19:00:27 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.47 2000-10-02 13:38:56 sandervl Exp $ */
    22/*
    33 * Wrappers for OS/2 Dos* API
     
    4545
    4646  if(DosQueryModuleHandle("DOSCALLS", &hDoscalls) != NO_ERROR) {
    47   return;
     47    return;
    4848  }
    4949  if(DosQueryProcAddr(hDoscalls, 989, NULL, (PFN *)&DosSetFileSizeLProc) != NO_ERROR) {
    50   return;
     50    return;
    5151  }
    5252  if(DosQueryProcAddr(hDoscalls, 988, NULL, (PFN *)&DosSetFilePtrLProc) != NO_ERROR) {
    53   return;
     53    return;
    5454  }
    5555  if(DosQueryProcAddr(hDoscalls, 986, NULL, (PFN *)&DosSetFileLocksLProc) != NO_ERROR) {
    56   return;
     56    return;
    5757  }
    5858  f64BitIO = TRUE;
     
    167167
    168168    case ERROR_DEVICE_IN_USE: //99
    169   return ERROR_DEVICE_IN_USE_W;
     169        return ERROR_DEVICE_IN_USE_W;
    170170
    171171    case ERROR_DRIVE_LOCKED: //108
     
    176176
    177177    case ERROR_OPEN_FAILED: //110
    178   return ERROR_OPEN_FAILED_W;
     178        return ERROR_OPEN_FAILED_W;
    179179
    180180    case ERROR_BUFFER_OVERFLOW: //111
     
    182182
    183183    case ERROR_DISK_FULL: //112
    184   return ERROR_DISK_FULL_W;
     184        return ERROR_DISK_FULL_W;
    185185
    186186    case ERROR_NO_MORE_SEARCH_HANDLES: //113
     
    233233
    234234    default:
    235       dprintf(("WARNING: error2WinError: error %d not included!!!!", rc));
     235        dprintf(("WARNING: error2WinError: error %d not included!!!!", rc));
    236236        return defaultCode;
    237237  }
     
    764764   //TODO: FILE_SHARE_DELETE
    765765   if((fuShare & (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W)) == 0 )
    766   openMode |= OPEN_SHARE_DENYREADWRITE;
     766        openMode |= OPEN_SHARE_DENYREADWRITE;
    767767   else
    768768   if((fuShare & (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W)) == (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W))
     
    773773   else
    774774   if(fuShare & FILE_SHARE_WRITE_W)
    775   openMode |= OPEN_SHARE_DENYREAD;
     775        openMode |= OPEN_SHARE_DENYREAD;
    776776
    777777   if(fuAccess == (GENERIC_READ_W | GENERIC_WRITE_W))
    778   openMode |= OPEN_ACCESS_READWRITE;
     778        openMode |= OPEN_ACCESS_READWRITE;
    779779   else
    780780   if(fuAccess & GENERIC_READ_W)
    781   openMode |= OPEN_ACCESS_READONLY;
     781        openMode |= OPEN_ACCESS_READONLY;
    782782   else
    783783   if(fuAccess & GENERIC_WRITE_W)
     
    799799
    800800   if(strlen(lpszFile) == 2 && lpszFile[1] == ':') {
    801   //app tries to open physical disk
    802   openMode |= OPEN_FLAGS_DASD;
     801        //app tries to open physical disk
     802        openMode |= OPEN_FLAGS_DASD;
    803803   }
    804804   int retry = 0;
     
    815815                      NULL);
    816816    if(rc == ERROR_TOO_MANY_OPEN_FILES)
    817         {
    818       ULONG CurMaxFH;
    819       LONG  ReqCount = 32;
    820 
    821     rc = DosSetRelMaxFH(&ReqCount, &CurMaxFH);
    822     if(rc) {
    823       dprintf(("DosSetRelMaxFH returned %d", rc));
    824       SetLastError(ERROR_TOO_MANY_OPEN_FILES_W);
    825       return INVALID_HANDLE_VALUE_W;
     817    {
     818        ULONG CurMaxFH;
     819        LONG  ReqCount = 32;
     820
     821        rc = DosSetRelMaxFH(&ReqCount, &CurMaxFH);
     822        if(rc) {
     823            dprintf(("DosSetRelMaxFH returned %d", rc));
     824            SetLastError(ERROR_TOO_MANY_OPEN_FILES_W);
     825            return INVALID_HANDLE_VALUE_W;
     826        }
     827        dprintf(("DosOpen failed -> increased nr open files to %d", CurMaxFH));
    826828    }
    827     dprintf(("DosOpen failed -> increased nr open files to %d", CurMaxFH));
    828     }
    829   else  break;
    830   retry++;
     829    else  break;
     830    retry++;
    831831   }
    832832
     
    860860        if(fuMode & OF_CREATE_W) {
    861861            openFlag |= OPEN_ACTION_CREATE_IF_NEW |
    862                             OPEN_ACTION_REPLACE_IF_EXISTS;
    863   }
    864         else    openFlag |= OPEN_ACTION_OPEN_IF_EXISTS;                                //180575
    865 
    866         if(fuMode & OF_READWRITE_W)
    867             openMode |= OPEN_ACCESS_READWRITE;
    868         else
    869   if(fuMode & OF_WRITE_W)
    870             openMode |= OPEN_ACCESS_WRITEONLY;
    871         else
    872   if(fuMode & OF_CREATE_W)
    873             openMode |= OPEN_ACCESS_READWRITE;
     862                        OPEN_ACTION_REPLACE_IF_EXISTS;
     863   }
     864   else openFlag |= OPEN_ACTION_OPEN_IF_EXISTS;
     865
     866   if(fuMode & OF_READWRITE_W)
     867        openMode |= OPEN_ACCESS_READWRITE;
     868   else
     869   if(fuMode & OF_WRITE_W)
     870        openMode |= OPEN_ACCESS_WRITEONLY;
     871   else
     872   if(fuMode & OF_CREATE_W)
     873        openMode |= OPEN_ACCESS_READWRITE;
    874874   }
    875875
     
    930930
    931931   if(lpOverlapped) {//TODO:
    932   dprintf(("OSLibDosLockFile: overlapped lock not yet implemented!!"));
     932        dprintf(("OSLibDosLockFile: overlapped lock not yet implemented!!"));
    933933   }
    934934   //TODO: Locking region crossing end of file is permitted. Works in OS/2??
    935935   if(f64BitIO)
    936936   {
    937     FILELOCKL lockRangeL;
    938 
    939   lockRangeL.lOffset.ulLo = OffsetLow;
    940   lockRangeL.lOffset.ulHi = OffsetHigh;
    941   lockRangeL.lRange.ulLo  = nNumberOfBytesToLockLow;
    942   lockRangeL.lRange.ulHi  = nNumberOfBytesToLockHigh;
    943 
    944     rc = OdinDosSetFileLocksL(hFile, NULL, &lockRangeL,
     937        FILELOCKL lockRangeL;
     938
     939        lockRangeL.lOffset.ulLo = OffsetLow;
     940        lockRangeL.lOffset.ulHi = OffsetHigh;
     941        lockRangeL.lRange.ulLo  = nNumberOfBytesToLockLow;
     942        lockRangeL.lRange.ulHi  = nNumberOfBytesToLockHigh;
     943
     944        rc = OdinDosSetFileLocksL(hFile, NULL, &lockRangeL,
    945945                                  (dwFlags & LOCKFILE_FAIL_IMMEDIATELY_W) ? 0 : 5000, 0);
    946946        //SvL: 64 bits values are only supported by JFS
     
    948948        //     (TODO: should check the partition type instead)
    949949        if(rc == ERROR_INVALID_PARAMETER && (OffsetHigh || nNumberOfBytesToLockHigh)) {
    950     goto oldlock;
     950            goto oldlock;
    951951        }
    952952   }
     
    954954   {
    955955oldlock:
    956     FILELOCK lockRange = { OffsetLow, nNumberOfBytesToLockLow };
    957 
    958     rc = DosSetFileLocks(hFile, NULL, &lockRange,
     956        FILELOCK lockRange = { OffsetLow, nNumberOfBytesToLockLow };
     957
     958        rc = DosSetFileLocks(hFile, NULL, &lockRange,
    959959                             (dwFlags & LOCKFILE_FAIL_IMMEDIATELY_W) ? 0 : 5000, 0);
    960960   }
    961961   if(rc) {
    962     SetLastError(error2WinError(rc));
    963   return FALSE;
     962        SetLastError(error2WinError(rc));
     963        return FALSE;
    964964   }
    965965   SetLastError(ERROR_SUCCESS_W);
     
    978978
    979979   if(lpOverlapped) {//TODO:
    980   dprintf(("OSLibDosUnlockFile: overlapped unlock not yet implemented!!"));
     980        dprintf(("OSLibDosUnlockFile: overlapped unlock not yet implemented!!"));
    981981   }
    982982   if(f64BitIO)
    983983   {
    984     FILELOCKL unlockRangeL;
    985 
    986   unlockRangeL.lOffset.ulLo = OffsetLow;
    987   unlockRangeL.lOffset.ulHi = OffsetHigh;
    988   unlockRangeL.lRange.ulLo  = nNumberOfBytesToLockLow;
    989   unlockRangeL.lRange.ulHi  = nNumberOfBytesToLockHigh;
    990 
    991     rc = OdinDosSetFileLocksL(hFile, &unlockRangeL, NULL, 5000, 0);
     984        FILELOCKL unlockRangeL;
     985
     986        unlockRangeL.lOffset.ulLo = OffsetLow;
     987        unlockRangeL.lOffset.ulHi = OffsetHigh;
     988        unlockRangeL.lRange.ulLo  = nNumberOfBytesToLockLow;
     989        unlockRangeL.lRange.ulHi  = nNumberOfBytesToLockHigh;
     990
     991        rc = OdinDosSetFileLocksL(hFile, &unlockRangeL, NULL, 5000, 0);
    992992        //SvL: 64 bits values are only supported by JFS
    993993        //     Try the 32 bits DosSetFileLocks if it fails
    994994        //     (TODO: should check the partition type instead)
    995995        if(rc == ERROR_INVALID_PARAMETER && (OffsetHigh || nNumberOfBytesToLockHigh)) {
    996     goto oldlock;
     996            goto oldlock;
    997997        }
    998998   }
     
    10001000   {
    10011001oldlock:
    1002     FILELOCK unlockRange = { OffsetLow, nNumberOfBytesToLockLow };
     1002        FILELOCK unlockRange = { OffsetLow, nNumberOfBytesToLockLow };
    10031003
    10041004        rc = DosSetFileLocks(hFile, &unlockRange, NULL,  5000, 0);
    10051005   }
    10061006   if(rc) {
    1007     SetLastError(error2WinError(rc));
    1008   return FALSE;
     1007        SetLastError(error2WinError(rc));
     1008        return FALSE;
    10091009   }
    10101010   SetLastError(ERROR_SUCCESS_W);
     
    10301030   if(f64BitIO)
    10311031   {
    1032      FILESTATUS3L fsts3ConfigInfoL = {{0}};
    1033      ULONG        ulBufSize       = sizeof(FILESTATUS3L);
    1034 
    1035     rc = DosQueryFileInfo(hFile, FIL_STANDARDL, &fsts3ConfigInfoL, ulBufSize);
    1036     if(lpdwFileSizeHigh) {
    1037       *lpdwFileSizeHigh = fsts3ConfigInfoL.cbFile.ulHi;
    1038   }
    1039   sizeLow = fsts3ConfigInfoL.cbFile.ulLo;
     1032        FILESTATUS3L fsts3ConfigInfoL = {{0}};
     1033        ULONG        ulBufSize       = sizeof(FILESTATUS3L);
     1034
     1035        rc = DosQueryFileInfo(hFile, FIL_STANDARDL, &fsts3ConfigInfoL, ulBufSize);
     1036        if(lpdwFileSizeHigh) {
     1037            *lpdwFileSizeHigh = fsts3ConfigInfoL.cbFile.ulHi;
     1038        }
     1039        sizeLow = fsts3ConfigInfoL.cbFile.ulLo;
    10401040   }
    10411041   else
    10421042   {
    1043      FILESTATUS3 fsts3ConfigInfo = {{0}};
    1044      ULONG       ulBufSize       = sizeof(FILESTATUS3);
    1045 
    1046     if(lpdwFileSizeHigh) {
    1047       *lpdwFileSizeHigh = 0;
    1048   }
    1049     rc = DosQueryFileInfo(hFile, FIL_STANDARD, &fsts3ConfigInfo, ulBufSize);
    1050   sizeLow = fsts3ConfigInfo.cbFile;
     1043        FILESTATUS3 fsts3ConfigInfo = {{0}};
     1044        ULONG       ulBufSize       = sizeof(FILESTATUS3);
     1045
     1046        if(lpdwFileSizeHigh) {
     1047            *lpdwFileSizeHigh = 0;
     1048        }
     1049        rc = DosQueryFileInfo(hFile, FIL_STANDARD, &fsts3ConfigInfo, ulBufSize);
     1050        sizeLow = fsts3ConfigInfo.cbFile;
    10511051   }
    10521052   if(rc) {
    1053     SetLastError(error2WinError(rc));
    1054     return -1;
     1053        SetLastError(error2WinError(rc));
     1054        return -1;
    10551055   }
    10561056   SetLastError(ERROR_SUCCESS_W);
     
    10851085  if( (f64BitIO) && (OffsetHigh) )
    10861086  {
    1087   offsetL.ulLo = OffsetLow;
    1088   offsetL.ulHi = (OffsetHigh) ? *OffsetHigh : 0;
    1089   rc = OdinDosSetFilePtrL(hFile, offsetL, method, &newoffsetL);
    1090   if(OffsetHigh) {
    1091     *OffsetHigh = newoffsetL.ulHi;
    1092   }
    1093   newoffset = newoffsetL.ulLo;
    1094    }
    1095   else
    1096     rc = DosSetFilePtr(hFile, OffsetLow, method, &newoffset);
     1087        offsetL.ulLo = OffsetLow;
     1088        offsetL.ulHi = (OffsetHigh) ? *OffsetHigh : 0;
     1089        rc = OdinDosSetFilePtrL(hFile, offsetL, method, &newoffsetL);
     1090        if(OffsetHigh) {
     1091            *OffsetHigh = newoffsetL.ulHi;
     1092        }
     1093        newoffset = newoffsetL.ulLo;
     1094  }
     1095  else  rc = DosSetFilePtr(hFile, OffsetLow, method, &newoffset);
    10971096
    10981097  if(rc)
    10991098  {
    1100     SetLastError(error2WinError(rc));
    1101     return -1;
     1099        SetLastError(error2WinError(rc));
     1100        return -1;
    11021101  }
    11031102  SetLastError(ERROR_SUCCESS_W);
     
    11141113
    11151114   if(f64BitIO) {
    1116   rc = OdinDosSetFilePtrL(hFile, FilePosL, FILE_CURRENT, &newFilePosL);
    1117   if(rc == 0) {
    1118           rc = OdinDosSetFileSizeL(hFile, newFilePosL);
    1119   }
     1115        rc = OdinDosSetFilePtrL(hFile, FilePosL, FILE_CURRENT, &newFilePosL);
     1116        if(rc == 0) {
     1117            rc = OdinDosSetFileSizeL(hFile, newFilePosL);
     1118        }
    11201119   }
    11211120   else {
    1122     rc = DosSetFilePtr(hFile, 0, FILE_CURRENT, &newFilePos);
    1123   if(rc == 0) {
    1124           rc = DosSetFileSize(hFile, newFilePos);
    1125   }
     1121        rc = DosSetFilePtr(hFile, 0, FILE_CURRENT, &newFilePos);
     1122        if(rc == 0) {
     1123            rc = DosSetFileSize(hFile, newFilePos);
     1124        }
    11261125   }
    11271126   if(rc) {
    1128     SetLastError(error2WinError(rc));
    1129     return FALSE;
     1127        SetLastError(error2WinError(rc));
     1128        return FALSE;
    11301129   }
    11311130   SetLastError(ERROR_SUCCESS_W);
     
    11401139   if(f64BitIO)
    11411140   {
    1142      FILESTATUS4L statusL = { 0 };
    1143 
    1144     rc = DosQueryFileInfo(hFile,
    1145                         FIL_QUERYEASIZEL,
    1146                         &statusL,
    1147                               sizeof(statusL));
    1148     if(rc == NO_ERROR)
    1149     {
    1150       pInfo->dwFileAttributes = 0;
    1151     if(!(statusL.attrFile & NOT_NORMAL))
    1152         pInfo->dwFileAttributes |= FILE_ATTRIBUTE_NORMAL_W;
    1153     if(statusL.attrFile & FILE_READONLY)
    1154             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_READONLY_W;
    1155     if(statusL.attrFile & FILE_HIDDEN)
    1156             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN_W;
    1157     if(statusL.attrFile & FILE_SYSTEM)
    1158             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_SYSTEM_W;
    1159     if(statusL.attrFile & FILE_DIRECTORY)
    1160             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_DIRECTORY_W;
    1161     if(statusL.attrFile & FILE_ARCHIVED)
    1162             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_ARCHIVE_W;
    1163 
    1164     pmDateTimeToFileTime(&statusL.fdateCreation,
    1165                                &statusL.ftimeCreation,
    1166                                &pInfo->ftCreationTime);
    1167     pmDateTimeToFileTime(&statusL.fdateLastAccess,
    1168                                &statusL.ftimeLastAccess,
    1169                                &pInfo->ftLastAccessTime);
    1170     pmDateTimeToFileTime(&statusL.fdateLastWrite,
    1171                                &statusL.ftimeLastWrite,
    1172                                &pInfo->ftLastWriteTime);
    1173 
    1174     pInfo->nFileSizeHigh = statusL.cbFile.ulHi;
    1175     pInfo->nFileSizeLow  = statusL.cbFile.ulLo;
    1176     pInfo->dwVolumeSerialNumber = 0; //todo
    1177     pInfo->nNumberOfLinks = 1;
    1178     pInfo->nFileIndexHigh = 0;
    1179     pInfo->nFileIndexLow  = 0;
    1180      }
     1141        FILESTATUS4L statusL = { 0 };
     1142
     1143        rc = DosQueryFileInfo(hFile, FIL_QUERYEASIZEL,
     1144                              &statusL, sizeof(statusL));
     1145        if(rc == NO_ERROR)
     1146        {
     1147            pInfo->dwFileAttributes = 0;
     1148            if(!(statusL.attrFile & NOT_NORMAL))
     1149                pInfo->dwFileAttributes |= FILE_ATTRIBUTE_NORMAL_W;
     1150            if(statusL.attrFile & FILE_READONLY)
     1151                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_READONLY_W;
     1152            if(statusL.attrFile & FILE_HIDDEN)
     1153                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN_W;
     1154            if(statusL.attrFile & FILE_SYSTEM)
     1155                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_SYSTEM_W;
     1156            if(statusL.attrFile & FILE_DIRECTORY)
     1157                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_DIRECTORY_W;
     1158            if(statusL.attrFile & FILE_ARCHIVED)
     1159                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_ARCHIVE_W;
     1160
     1161            pmDateTimeToFileTime(&statusL.fdateCreation,
     1162                                 &statusL.ftimeCreation,
     1163                                 &pInfo->ftCreationTime);
     1164            pmDateTimeToFileTime(&statusL.fdateLastAccess,
     1165                                 &statusL.ftimeLastAccess,
     1166                                 &pInfo->ftLastAccessTime);
     1167            pmDateTimeToFileTime(&statusL.fdateLastWrite,
     1168                                 &statusL.ftimeLastWrite,
     1169                                 &pInfo->ftLastWriteTime);
     1170
     1171            pInfo->nFileSizeHigh = statusL.cbFile.ulHi;
     1172            pInfo->nFileSizeLow  = statusL.cbFile.ulLo;
     1173            pInfo->dwVolumeSerialNumber = 0; //todo
     1174            pInfo->nNumberOfLinks = 1;
     1175            pInfo->nFileIndexHigh = 0;
     1176            pInfo->nFileIndexLow  = 0;
     1177        }
    11811178   }
    11821179   else
    11831180   {
    1184      FILESTATUS4  status  = { 0 };
    1185 
    1186     rc = DosQueryFileInfo(hFile,
    1187                         FIL_QUERYEASIZE,
    1188                         &status,
     1181        FILESTATUS4  status  = { 0 };
     1182
     1183        rc = DosQueryFileInfo(hFile, FIL_QUERYEASIZE, &status,
    11891184                              sizeof(status));
    1190     if(rc == NO_ERROR)
    1191     {
    1192       pInfo->dwFileAttributes = 0;
    1193     if(!(status.attrFile & NOT_NORMAL))
    1194         pInfo->dwFileAttributes |= FILE_ATTRIBUTE_NORMAL_W;
    1195     if(status.attrFile & FILE_READONLY)
    1196             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_READONLY_W;
    1197     if(status.attrFile & FILE_HIDDEN)
    1198             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN_W;
    1199     if(status.attrFile & FILE_SYSTEM)
    1200             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_SYSTEM_W;
    1201     if(status.attrFile & FILE_DIRECTORY)
    1202             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_DIRECTORY_W;
    1203     if(status.attrFile & FILE_ARCHIVED)
    1204             pInfo->dwFileAttributes |= FILE_ATTRIBUTE_ARCHIVE_W;
    1205 
    1206     pmDateTimeToFileTime(&status.fdateCreation,
    1207                                &status.ftimeCreation,
    1208                                &pInfo->ftCreationTime);
    1209     pmDateTimeToFileTime(&status.fdateLastAccess,
    1210                                &status.ftimeLastAccess,
    1211                                &pInfo->ftLastAccessTime);
    1212     pmDateTimeToFileTime(&status.fdateLastWrite,
    1213                                &status.ftimeLastWrite,
    1214                                &pInfo->ftLastWriteTime);
    1215 
    1216     pInfo->nFileSizeHigh = 0;
    1217     pInfo->nFileSizeLow = status.cbFile;
    1218     pInfo->dwVolumeSerialNumber = 0; //todo
    1219     pInfo->nNumberOfLinks = 1;
    1220     pInfo->nFileIndexHigh = 0;
    1221     pInfo->nFileIndexLow = 0;
    1222      }
     1185        if(rc == NO_ERROR)
     1186        {
     1187            pInfo->dwFileAttributes = 0;
     1188            if(!(status.attrFile & NOT_NORMAL))
     1189                pInfo->dwFileAttributes |= FILE_ATTRIBUTE_NORMAL_W;
     1190            if(status.attrFile & FILE_READONLY)
     1191                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_READONLY_W;
     1192            if(status.attrFile & FILE_HIDDEN)
     1193                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN_W;
     1194            if(status.attrFile & FILE_SYSTEM)
     1195                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_SYSTEM_W;
     1196            if(status.attrFile & FILE_DIRECTORY)
     1197                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_DIRECTORY_W;
     1198            if(status.attrFile & FILE_ARCHIVED)
     1199                    pInfo->dwFileAttributes |= FILE_ATTRIBUTE_ARCHIVE_W;
     1200
     1201            pmDateTimeToFileTime(&status.fdateCreation,
     1202                                 &status.ftimeCreation,
     1203                                 &pInfo->ftCreationTime);
     1204            pmDateTimeToFileTime(&status.fdateLastAccess,
     1205                                 &status.ftimeLastAccess,
     1206                                 &pInfo->ftLastAccessTime);
     1207            pmDateTimeToFileTime(&status.fdateLastWrite,
     1208                                 &status.ftimeLastWrite,
     1209                                 &pInfo->ftLastWriteTime);
     1210
     1211            pInfo->nFileSizeHigh = 0;
     1212            pInfo->nFileSizeLow = status.cbFile;
     1213            pInfo->dwVolumeSerialNumber = 0; //todo
     1214            pInfo->nNumberOfLinks = 1;
     1215            pInfo->nFileIndexHigh = 0;
     1216            pInfo->nFileIndexLow = 0;
     1217        }
    12231218   }
    12241219   if(rc) {
    12251220        SetLastError(error2WinError(rc));
    1226     return FALSE;
     1221        return FALSE;
    12271222   }
    12281223   SetLastError(ERROR_SUCCESS_W);
     
    12421237  if(rc == NO_ERROR)
    12431238  {
    1244   if(creationdate && creationtime) {
    1245     fileInfo.fdateCreation   = *(FDATE *)&creationdate;
    1246           fileInfo.ftimeCreation   = *(FTIME *)&creationtime;
    1247   }
    1248   if(lastaccessdate && lastaccesstime) {
    1249     fileInfo.fdateLastAccess = *(FDATE *)&lastaccessdate;
    1250           fileInfo.ftimeLastAccess = *(FTIME *)&lastaccesstime;
    1251   }
    1252   if(lastwritedate && lastwritetime) {
    1253     fileInfo.fdateLastWrite  = *(FDATE *)&lastwritedate;
    1254           fileInfo.ftimeLastWrite  = *(FTIME *)&lastwritetime;
    1255   }
    1256 
    1257   rc = DosSetFileInfo(hFile, FIL_STANDARD, &fileInfo, sizeof(fileInfo));
     1239    if(creationdate && creationtime) {
     1240        fileInfo.fdateCreation   = *(FDATE *)&creationdate;
     1241        fileInfo.ftimeCreation   = *(FTIME *)&creationtime;
     1242    }
     1243    if(lastaccessdate && lastaccesstime) {
     1244        fileInfo.fdateLastAccess = *(FDATE *)&lastaccessdate;
     1245        fileInfo.ftimeLastAccess = *(FTIME *)&lastaccesstime;
     1246    }
     1247    if(lastwritedate && lastwritetime) {
     1248        fileInfo.fdateLastWrite  = *(FDATE *)&lastwritedate;
     1249        fileInfo.ftimeLastWrite  = *(FTIME *)&lastwritetime;
     1250    }
     1251
     1252    rc = DosSetFileInfo(hFile, FIL_STANDARD, &fileInfo, sizeof(fileInfo));
    12581253  }
    12591254
    12601255  if(rc)
    12611256  {
    1262         SetLastError(error2WinError(rc));
    1263       return FALSE;
     1257    SetLastError(error2WinError(rc));
     1258    return FALSE;
    12641259  }
    12651260  SetLastError(ERROR_SUCCESS_W);
     
    12791274  if(rc == NO_ERROR)
    12801275  {
    1281   *creationdate   = *(WORD *)&fileInfo.fdateCreation;
    1282         *creationtime   = *(WORD *)&fileInfo.ftimeCreation;
    1283   *lastaccessdate = *(WORD *)&fileInfo.fdateLastAccess;
    1284         *lastaccesstime = *(WORD *)&fileInfo.ftimeLastAccess;
    1285   *lastwritedate  = *(WORD *)&fileInfo.fdateLastWrite;
    1286         *lastwritetime  = *(WORD *)&fileInfo.ftimeLastWrite;
     1276    *creationdate   = *(WORD *)&fileInfo.fdateCreation;
     1277    *creationtime   = *(WORD *)&fileInfo.ftimeCreation;
     1278    *lastaccessdate = *(WORD *)&fileInfo.fdateLastAccess;
     1279    *lastaccesstime = *(WORD *)&fileInfo.ftimeLastAccess;
     1280    *lastwritedate  = *(WORD *)&fileInfo.fdateLastWrite;
     1281    *lastwritetime  = *(WORD *)&fileInfo.ftimeLastWrite;
    12871282  }
    12881283
    12891284  if(rc)
    12901285  {
    1291         SetLastError(error2WinError(rc));
    1292       return FALSE;
     1286    SetLastError(error2WinError(rc));
     1287    return FALSE;
    12931288  }
    12941289  SetLastError(ERROR_SUCCESS_W);
     
    19191914   switch(rc) {
    19201915   case ERROR_INVALID_DRIVE:
    1921   return ERROR_INVALID_DRIVE_W;
     1916        return ERROR_INVALID_DRIVE_W;
    19221917   case ERROR_NO_VOLUME_LABEL:
    1923   return ERROR_NO_VOLUME_LABEL_W;
     1918        return ERROR_NO_VOLUME_LABEL_W;
    19241919   case NO_ERROR:
    1925   break;
     1920        break;
    19261921   default:
    1927   return ERROR_NOT_ENOUGH_MEMORY; //whatever
     1922        return ERROR_NOT_ENOUGH_MEMORY; //whatever
    19281923   }
    19291924
     
    19331928   if(lpVolumeNameBuffer)
    19341929   {
    1935     if(nVolumeNameSize > fsi.vol.cch) {
    1936              strcpy(lpVolumeNameBuffer, (PCHAR)fsi.vol.szVolLabel);
    1937   }
     1930        if(nVolumeNameSize > fsi.vol.cch) {
     1931            strcpy(lpVolumeNameBuffer, (PCHAR)fsi.vol.szVolLabel);
     1932        }
    19381933        else return ERROR_BUFFER_OVERFLOW_W;
    19391934   }
     
    20412036{
    20422037  APIRET rc;
    2043  
    2044   rc = DosQuerySysInfo(iStart, iLast, pBuf, cbBuf); 
     2038
     2039  rc = DosQuerySysInfo(iStart, iLast, pBuf, cbBuf);
    20452040  SetLastError(error2WinError(rc,ERROR_INVALID_HANDLE));
    20462041  return rc;
Note: See TracChangeset for help on using the changeset viewer.