Changeset 81323 in vbox
- Timestamp:
- Oct 17, 2019 3:27:53 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp
r81322 r81323 35 35 static PSHCLTRANSFER shClTransferCtxGetTransferInternal(PSHCLTRANSFERCTX pTransferCtx, uint32_t uIdx); 36 36 static int shClConvertFileCreateFlags(bool fWritable, unsigned fShClFlags, RTFMODE fMode, SHCLOBJHANDLE handleInitial, uint64_t *pfOpen); 37 static int shClTransferResolvePathAbs(PSHCLTRANSFER pTransfer, const char *pszPath, uint32_t fFlags, char **ppszResolved); 37 38 38 39 /** @todo Split this file up in different modules. */ … … 815 816 if (RT_SUCCESS(rc)) 816 817 { 817 pInfo->pszPathLocalAbs = RTPathJoinA(pTransfer->pszPathRootAbs, pOpenCreateParms->pszPath);818 if ( pInfo->pszPathLocalAbs)818 rc = shClTransferResolvePathAbs(pTransfer, pOpenCreateParms->pszPath, 0 /* fFlags */, &pInfo->pszPathLocalAbs); 819 if (RT_SUCCESS(rc)) 819 820 { 820 821 rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs, fOpen); … … 826 827 LogRel(("Shared Clipboard: Error opening file '%s', rc=%Rrc\n", pInfo->pszPathLocalAbs, rc)); 827 828 } 828 else829 rc = VERR_NO_MEMORY;830 829 } 831 830 } … … 1351 1350 AssertReturn (fFlags == 0, VERR_INVALID_PARAMETER); 1352 1351 1352 LogFlowFunc(("pszPathRootAbs=%s, pszPath=%s\n", pTransfer->pszPathRootAbs, pszPath)); 1353 1353 1354 /* Paranoia. */ 1354 1355 if ( !strlen(pTransfer->pszPathRootAbs) … … 1366 1367 if (pszResolved) 1367 1368 { 1368 LogFlowFunc((" pszPathRootAbs=%s, pszPath=%s -> %s\n", pTransfer->pszPathRootAbs, pszPath, pszResolved));1369 LogFlowFunc(("Resolved to: %s\n", pszResolved)); 1369 1370 1370 1371 *ppszResolved = pszResolved; … … 1403 1404 LogFlowFunc(("pszPath=%s\n", pOpenParms->pszPath)); 1404 1405 1405 char *pszPathAbs; 1406 rc = shClTransferResolvePathAbs(pTransfer, pOpenParms->pszPath, 0 /* fFlags */, &pszPathAbs); 1407 if (RT_SUCCESS(rc)) 1408 { 1409 PSHCLLISTHANDLEINFO pInfo 1410 = (PSHCLLISTHANDLEINFO)RTMemAlloc(sizeof(SHCLLISTHANDLEINFO)); 1411 if (pInfo) 1406 PSHCLLISTHANDLEINFO pInfo 1407 = (PSHCLLISTHANDLEINFO)RTMemAllocZ(sizeof(SHCLLISTHANDLEINFO)); 1408 if (pInfo) 1409 { 1410 rc = shClTransferResolvePathAbs(pTransfer, pOpenParms->pszPath, 0 /* fFlags */, &pInfo->pszPathLocalAbs); 1411 if (RT_SUCCESS(rc)) 1412 1412 { 1413 1413 rc = ShClTransferListHandleInfoInit(pInfo); … … 1415 1415 { 1416 1416 RTFSOBJINFO objInfo; 1417 rc = RTPathQueryInfo(p OpenParms->pszPath, &objInfo, RTFSOBJATTRADD_NOTHING);1417 rc = RTPathQueryInfo(pInfo->pszPathLocalAbs, &objInfo, RTFSOBJATTRADD_NOTHING); 1418 1418 if (RT_SUCCESS(rc)) 1419 1419 { 1420 1420 if (RTFS_IS_DIRECTORY(objInfo.Attr.fMode)) 1421 1421 { 1422 rc = RTDirOpen(&pInfo->u.Local.hDir, p szPathAbs);1422 rc = RTDirOpen(&pInfo->u.Local.hDir, pInfo->pszPathLocalAbs); 1423 1423 if (RT_SUCCESS(rc)) 1424 1424 { 1425 1425 pInfo->enmType = SHCLOBJTYPE_DIRECTORY; 1426 1426 1427 LogRel2(("Shared Clipboard: Opening directory '%s'\n", p szPathAbs));1427 LogRel2(("Shared Clipboard: Opening directory '%s'\n", pInfo->pszPathLocalAbs)); 1428 1428 } 1429 1429 else … … 1433 1433 else if (RTFS_IS_FILE(objInfo.Attr.fMode)) 1434 1434 { 1435 rc = RTFileOpen(&pInfo->u.Local.hFile, p szPathAbs,1435 rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs, 1436 1436 RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE); 1437 1437 if (RT_SUCCESS(rc)) … … 1439 1439 pInfo->enmType = SHCLOBJTYPE_FILE; 1440 1440 1441 LogRel2(("Shared Clipboard: Opening file '%s'\n", p szPathAbs));1441 LogRel2(("Shared Clipboard: Opening file '%s'\n", pInfo->pszPathLocalAbs)); 1442 1442 } 1443 1443 else … … 1449 1449 if (RT_SUCCESS(rc)) 1450 1450 { 1451 pInfo->hList = sharedClipboardTransferListHandleNew(pTransfer); 1452 pInfo->pszPathLocalAbs = RTStrDup(pszPathAbs); 1453 if (pInfo->pszPathLocalAbs) 1454 { 1455 RTListAppend(&pTransfer->lstList, &pInfo->Node); 1456 pTransfer->cListHandles++; 1457 1458 LogFlowFunc(("pszPathLocalAbs=%s, hList=%RU64, cListHandles=%RU32\n", 1459 pInfo->pszPathLocalAbs, pInfo->hList, pTransfer->cListHandles)); 1460 1461 *phList = pInfo->hList; 1462 } 1463 else 1464 rc = VERR_NO_MEMORY; 1451 pInfo->hList = sharedClipboardTransferListHandleNew(pTransfer); 1452 1453 RTListAppend(&pTransfer->lstList, &pInfo->Node); 1454 pTransfer->cListHandles++; 1455 1456 LogFlowFunc(("pszPathLocalAbs=%s, hList=%RU64, cListHandles=%RU32\n", 1457 pInfo->pszPathLocalAbs, pInfo->hList, pTransfer->cListHandles)); 1465 1458 } 1466 1459 else … … 1478 1471 } 1479 1472 } 1480 1481 if (RT_FAILURE(rc))1482 ShClTransferListHandleInfoDestroy(pInfo);1483 }1484 1485 if (RT_FAILURE(rc))1486 {1487 RTMemFree(pInfo);1488 pInfo = NULL;1489 1473 } 1490 1474 } 1491 else 1492 rc = VERR_NO_MEMORY; 1493 1494 RTStrFree(pszPathAbs); 1495 } 1475 1476 if (RT_FAILURE(rc)) 1477 { 1478 ShClTransferListHandleInfoDestroy(pInfo); 1479 1480 RTMemFree(pInfo); 1481 pInfo = NULL; 1482 } 1483 } 1484 else 1485 rc = VERR_NO_MEMORY; 1496 1486 } 1497 1487 else if (pTransfer->State.enmSource == SHCLSOURCE_REMOTE)
Note:
See TracChangeset
for help on using the changeset viewer.