Changeset 77661 in vbox for trunk/src/VBox/Additions/os2/VBoxSF
- Timestamp:
- Mar 11, 2019 9:14:16 PM (6 years ago)
- Location:
- trunk/src/VBox/Additions/os2/VBoxSF
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/os2/VBoxSF/VBoxSF.cpp
r77642 r77661 1601 1601 1602 1602 RT_NOREF_PV(pCdFsi); 1603 LogFlow(("FS32_ RMDIR: returns %u\n", rc));1603 LogFlow(("FS32_MMDIR: returns %u\n", rc)); 1604 1604 return rc; 1605 1605 } … … 1621 1621 { 1622 1622 int vrc = VbglR0SfHostReqRemove(pFolder->idHostRoot, pReq, SHFL_REMOVE_DIR); 1623 LogFlow(("FS32_RMDIR: VbglR0SfHostReqRemove -> %Rrc\n", rc));1623 LogFlow(("FS32_RMDIR: VbglR0SfHostReqRemove -> %Rrc\n", vrc)); 1624 1624 if (RT_SUCCESS(vrc)) 1625 1625 rc = NO_ERROR; … … 1719 1719 { 1720 1720 int vrc = VbglR0SfHostReqRemove(pFolder->idHostRoot, pReq, SHFL_REMOVE_FILE); 1721 LogFlow(("FS32_DELETE: VbglR0SfHostReqRemove -> %Rrc\n", rc));1721 LogFlow(("FS32_DELETE: VbglR0SfHostReqRemove -> %Rrc\n", vrc)); 1722 1722 if (RT_SUCCESS(vrc)) 1723 1723 rc = NO_ERROR; … … 1763 1763 /** @todo should we validate attributes? */ 1764 1764 pObjInfoBuf->Attr.fMode = (fAttribs << RTFS_DOS_SHIFT) & RTFS_DOS_MASK_OS2; 1765 if (pObjInfoBuf->Attr.fMode == 0) 1766 pObjInfoBuf->Attr.fMode |= RTFS_DOS_NT_NORMAL; 1765 1767 1766 1768 if (pTimestamps) … … 1887 1889 FS32_FILEATTRIBUTE(ULONG fFlags, PCDFSI pCdFsi, PVBOXSFCD pCdFsd, PCSZ pszName, LONG offCurDirEnd, PUSHORT pfAttr) 1888 1890 { 1889 LogFlow(("FS32_FILEATTRIBUTE: fFlags=%#x pCdFsi=%p:{%#x,%s} pCdFsd=%p pszName=%p:{%s} offCurDirEnd=%d pfAttr=%p \n",1890 fFlags, pCdFsi, pCdFsi->cdi_hVPB, pCdFsi->cdi_curdir, pCdFsd, pszName, pszName, offCurDirEnd, pfAttr ));1891 LogFlow(("FS32_FILEATTRIBUTE: fFlags=%#x pCdFsi=%p:{%#x,%s} pCdFsd=%p pszName=%p:{%s} offCurDirEnd=%d pfAttr=%p={%#x}\n", 1892 fFlags, pCdFsi, pCdFsi->cdi_hVPB, pCdFsi->cdi_curdir, pCdFsd, pszName, pszName, offCurDirEnd, pfAttr, *pfAttr)); 1891 1893 RT_NOREF(pCdFsi, offCurDirEnd); 1892 1894 … … 2144 2146 * @param cbData The maximum amount of data we can return. 2145 2147 */ 2146 static int vboxSfOs2QueryCorrectCase(PVBOXSFFOLDER pFolder, VBOXSFCREATEREQ *pReq, const char *pszPath, 2147 PBYTE pbData, ULONG cbData) 2148 { 2149 /** @todo do case correction. Can do step-by-step dir info... but slow */ 2150 RT_NOREF(pFolder, pReq, pszPath, pbData, cbData); 2151 return ERROR_NOT_SUPPORTED; 2148 static APIRET vboxSfOs2QueryCorrectCase(PVBOXSFFOLDER pFolder, VBOXSFCREATEREQ *pReq, const char *pszPath, 2149 PBYTE pbData, ULONG cbData) 2150 { 2151 RT_NOREF(pFolder, pReq); 2152 APIRET rc; 2153 size_t cchPath = RTStrNLen(pszPath, CCHMAXPATH + 1); 2154 if (cchPath <= CCHMAXPATH) 2155 { 2156 if (cbData > cchPath) 2157 { 2158 /** @todo implement this properly on the host side! */ 2159 rc = KernCopyOut(pbData, pszPath, cbData + 1); 2160 LogFlow(("vboxSfOs2QueryCorrectCase: returns %u\n", rc)); 2161 } 2162 else 2163 { 2164 LogFlow(("vboxSfOs2QueryCorrectCase: returns %u (ERROR_INSUFFICIENT_BUFFER) - cchPath=%#x cbData=%#x\n", 2165 ERROR_INSUFFICIENT_BUFFER, cchPath, cbData)); 2166 rc = ERROR_INSUFFICIENT_BUFFER; 2167 } 2168 } 2169 else 2170 { 2171 LogFlow(("vboxSfOs2QueryCorrectCase: returns %u (ERROR_FILENAME_EXCED_RANGE)\n", ERROR_FILENAME_EXCED_RANGE)); 2172 rc = ERROR_FILENAME_EXCED_RANGE; 2173 } 2174 return rc; 2152 2175 } 2153 2176 -
trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp
r76716 r77661 313 313 FS32_CLOSE(ULONG uType, ULONG fIoFlags, PSFFSI pSfFsi, PVBOXSFSYFI pSfFsd) 314 314 { 315 LogFlow(("FS32_CLOSE: uType=%#x fIoFlags=%#x pSfFsi=%p pSfFsd=%p:{%#x}\n", uType, fIoFlags, pSfFsi, pSfFsd, pSfFsd->u32Magic)); 315 LogFlow(("FS32_CLOSE: uType=%#x fIoFlags=%#x pSfFsi=%p pSfFsd=%p:{%#x, %#llx}\n", 316 uType, fIoFlags, pSfFsi, pSfFsd, pSfFsd->u32Magic, pSfFsd->hHostFile)); 316 317 317 318 /* … … 1121 1122 /** 1122 1123 * Helper for FS32_READ. 1124 * 1125 * @note Must not called if reading beyond the end of the file, as we would give 1126 * sfi_sizel an incorrect value then. 1123 1127 */ 1124 1128 DECLINLINE(uint32_t) vboxSfOs2ReadFinalize(PSFFSI pSfFsi, uint64_t offRead, uint32_t cbActual) … … 1170 1174 { 1171 1175 cbActual = pReq->Parms.cb32Read.u.value32; 1172 AssertStmt(cbActual <= cbToRead, cbActual = cbToRead); 1173 rc = KernCopyOut(pvData, &pReq->abData[0], cbActual); 1174 if (rc == NO_ERROR) 1176 if (cbActual > 0) 1175 1177 { 1176 *pcb = vboxSfOs2ReadFinalize(pSfFsi, offRead, cbActual); 1177 LogFlow(("FS32_READ: returns; cbActual=%#x sfi_positionl=%RI64 [embedded]\n", cbActual, pSfFsi->sfi_positionl)); 1178 AssertStmt(cbActual <= cbToRead, cbActual = cbToRead); 1179 rc = KernCopyOut(pvData, &pReq->abData[0], cbActual); 1180 if (rc == NO_ERROR) 1181 { 1182 *pcb = vboxSfOs2ReadFinalize(pSfFsi, offRead, cbActual); 1183 LogFlow(("FS32_READ: returns; cbActual=%#x sfi_positionl=%RI64 [embedded]\n", cbActual, pSfFsi->sfi_positionl)); 1184 } 1185 } 1186 else 1187 { 1188 LogFlow(("FS32_READ: returns; cbActual=0 (EOF); sfi_positionl=%RI64 [embedded]\n", pSfFsi->sfi_positionl)); 1189 *pcb = 0; 1190 rc = NO_ERROR; 1178 1191 } 1179 1192 } … … 1227 1240 { 1228 1241 cbActual = pReq->Parms.cb32Read.u.value32; 1229 AssertStmt(cbActual <= cbToRead, cbActual = cbToRead); 1230 rc = KernCopyOut(pvData, pvBuf, cbActual); 1231 if (rc == NO_ERROR) 1242 if (cbActual > 0) 1232 1243 { 1233 *pcb = vboxSfOs2ReadFinalize(pSfFsi, offRead, cbActual); 1234 LogFlow(("FS32_READ: returns; cbActual=%#x sfi_positionl=%RI64 [bounced]\n", cbActual, pSfFsi->sfi_positionl)); 1244 AssertStmt(cbActual <= cbToRead, cbActual = cbToRead); 1245 rc = KernCopyOut(pvData, pvBuf, cbActual); 1246 if (rc == NO_ERROR) 1247 { 1248 *pcb = vboxSfOs2ReadFinalize(pSfFsi, offRead, cbActual); 1249 LogFlow(("FS32_READ: returns; cbActual=%#x sfi_positionl=%RI64 [bounced]\n", cbActual, pSfFsi->sfi_positionl)); 1250 } 1251 } 1252 else 1253 { 1254 LogFlow(("FS32_READ: returns; cbActual=0 (EOF) sfi_positionl=%RI64 [bounced]\n", pSfFsi->sfi_positionl)); 1255 *pcb = 0; 1256 rc = NO_ERROR; 1235 1257 } 1236 1258 } … … 1264 1286 vboxSfOs2ConvertPageList((KernPageList_t volatile *)&pReq->PgLst.aPages[0], &pReq->PgLst.aPages[0], cPagesRet, cPages); 1265 1287 1266 APIRET rc;1267 1288 int vrc = VbglR0SfHostReqReadPgLst(pFolder->idHostRoot, pReq, pSfFsd->hHostFile, offRead, cbToRead, cPages); 1268 1289 if (RT_SUCCESS(vrc)) 1269 1290 { 1270 1291 cbActual = pReq->Parms.cb32Read.u.value32; 1271 AssertStmt(cbActual <= cbToRead, cbActual = cbToRead); 1272 *pcb = vboxSfOs2ReadFinalize(pSfFsi, offRead, cbActual); 1273 LogFlow(("FS32_READ: returns; cbActual=%#x sfi_positionl=%RI64 [locked]\n", cbActual, pSfFsi->sfi_positionl)); 1292 if (cbActual > 0) 1293 { 1294 AssertStmt(cbActual <= cbToRead, cbActual = cbToRead); 1295 *pcb = vboxSfOs2ReadFinalize(pSfFsi, offRead, cbActual); 1296 LogFlow(("FS32_READ: returns; cbActual=%#x sfi_positionl=%RI64 [locked]\n", cbActual, pSfFsi->sfi_positionl)); 1297 } 1298 else 1299 { 1300 LogFlow(("FS32_READ: returns; cbActual=0 (EOF) sfi_positionl=%RI64 [locked]\n", pSfFsi->sfi_positionl)); 1301 *pcb = 0; 1302 rc = NO_ERROR; 1303 } 1274 1304 } 1275 1305 else … … 1392 1422 if (rc == NO_ERROR) 1393 1423 { 1394 APIRET rc;1395 1424 int vrc = VbglR0SfHostReqWriteContig(pFolder->idHostRoot, pReq, pSfFsd->hHostFile, 1396 1425 offWrite, cbToWrite, pvBuf, GCPhys); … … 1431 1460 vboxSfOs2ConvertPageList((KernPageList_t volatile *)&pReq->PgLst.aPages[0], &pReq->PgLst.aPages[0], cPagesRet, cPages); 1432 1461 1433 APIRET rc;1434 1462 int vrc = VbglR0SfHostReqWritePgLst(pFolder->idHostRoot, pReq, pSfFsd->hHostFile, offWrite, cbToWrite, cPages); 1435 1463 if (RT_SUCCESS(vrc))
Note:
See TracChangeset
for help on using the changeset viewer.