Changeset 81324 in vbox
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/GuestHost/SharedClipboard-transfers.h
r81322 r81324 787 787 /** The transfer's current status. */ 788 788 SHCLTRANSFERSTATUS enmStatus; 789 /** The transfer's direction . */789 /** The transfer's direction, seen from the perspective who created the transfer. */ 790 790 SHCLTRANSFERDIR enmDir; 791 /** The transfer's source . */791 /** The transfer's source, seen from the perspective who created the transfer. */ 792 792 SHCLSOURCE enmSource; 793 793 } SHCLTRANSFERSTATE, *PSHCLTRANSFERSTATE; -
trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp
r81323 r81324 808 808 if (RT_SUCCESS(rc)) 809 809 { 810 const bool fWritable = true; /** @todo Fix this. */ 811 812 uint64_t fOpen; 813 rc = shClConvertFileCreateFlags(fWritable, 814 pOpenCreateParms->fCreate, pOpenCreateParms->ObjInfo.Attr.fMode, 815 SHCLOBJHANDLE_INVALID, &fOpen); 810 /* 811 * Make sure the transfer direction matches the open/create parameters. 812 */ 813 if (pTransfer->State.enmDir == SHCLTRANSFERDIR_READ) 814 { 815 if (pOpenCreateParms->fCreate & SHCL_OBJ_CF_ACCESS_READ) /* Read access wanted? */ 816 { 817 AssertMsgFailed(("Is not a write transfer, but object open flags are set to read access (0x%x)\n", 818 pOpenCreateParms->fCreate)); /* Should never happen. */ 819 rc = VERR_INVALID_PARAMETER; 820 } 821 } 822 else if (pTransfer->State.enmDir == SHCLTRANSFERDIR_WRITE) 823 { 824 if (pOpenCreateParms->fCreate & SHCL_OBJ_CF_ACCESS_WRITE) /* Write access wanted? */ 825 { 826 AssertMsgFailed(("Is not a read transfer, but object open flags are set to write access (0x%x)\n", 827 pOpenCreateParms->fCreate)); /* Should never happen. */ 828 rc = VERR_INVALID_PARAMETER; 829 } 830 } 831 else 832 { 833 AssertFailed(); 834 rc = VERR_NOT_SUPPORTED; 835 } 836 816 837 if (RT_SUCCESS(rc)) 817 838 { 818 rc = shClTransferResolvePathAbs(pTransfer, pOpenCreateParms->pszPath, 0 /* fFlags */, &pInfo->pszPathLocalAbs); 839 /* Only if this is a read transfer (locally) we're able to actually write to files 840 * (we're reading from the source). */ 841 const bool fWritable = pTransfer->State.enmDir == SHCLTRANSFERDIR_READ; 842 843 uint64_t fOpen; 844 rc = shClConvertFileCreateFlags(fWritable, 845 pOpenCreateParms->fCreate, pOpenCreateParms->ObjInfo.Attr.fMode, 846 SHCLOBJHANDLE_INVALID, &fOpen); 819 847 if (RT_SUCCESS(rc)) 820 848 { 821 rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs, fOpen);849 rc = shClTransferResolvePathAbs(pTransfer, pOpenCreateParms->pszPath, 0 /* fFlags */, &pInfo->pszPathLocalAbs); 822 850 if (RT_SUCCESS(rc)) 823 851 { 824 LogRel2(("Shared Clipboard: Opened file '%s'\n", pInfo->pszPathLocalAbs)); 852 rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs, fOpen); 853 if (RT_SUCCESS(rc)) 854 { 855 LogRel2(("Shared Clipboard: Opened file '%s'\n", pInfo->pszPathLocalAbs)); 856 } 857 else 858 LogRel(("Shared Clipboard: Error opening file '%s', rc=%Rrc\n", pInfo->pszPathLocalAbs, rc)); 825 859 } 826 else827 LogRel(("Shared Clipboard: Error opening file '%s', rc=%Rrc\n", pInfo->pszPathLocalAbs, rc));828 860 } 829 861 }
Note:
See TracChangeset
for help on using the changeset viewer.