VirtualBox

Changeset 81323 in vbox


Ignore:
Timestamp:
Oct 17, 2019 3:27:53 PM (5 years ago)
Author:
vboxsync
Message:

Shared Clipboard/Transfers: Also use shClTransferResolvePathAbs() in ShClTransferObjOpen(), simplified ShClTransferListOpen(). Untested.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp

    r81322 r81323  
    3535static PSHCLTRANSFER shClTransferCtxGetTransferInternal(PSHCLTRANSFERCTX pTransferCtx, uint32_t uIdx);
    3636static int shClConvertFileCreateFlags(bool fWritable, unsigned fShClFlags, RTFMODE fMode, SHCLOBJHANDLE handleInitial, uint64_t *pfOpen);
     37static int shClTransferResolvePathAbs(PSHCLTRANSFER pTransfer, const char *pszPath, uint32_t fFlags, char **ppszResolved);
    3738
    3839/** @todo Split this file up in different modules. */
     
    815816                if (RT_SUCCESS(rc))
    816817                {
    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))
    819820                    {
    820821                        rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs, fOpen);
     
    826827                            LogRel(("Shared Clipboard: Error opening file '%s', rc=%Rrc\n", pInfo->pszPathLocalAbs, rc));
    827828                    }
    828                     else
    829                         rc = VERR_NO_MEMORY;
    830829                }
    831830            }
     
    13511350    AssertReturn   (fFlags == 0, VERR_INVALID_PARAMETER);
    13521351
     1352    LogFlowFunc(("pszPathRootAbs=%s, pszPath=%s\n", pTransfer->pszPathRootAbs, pszPath));
     1353
    13531354    /* Paranoia. */
    13541355    if (   !strlen(pTransfer->pszPathRootAbs)
     
    13661367    if (pszResolved)
    13671368    {
    1368         LogFlowFunc(("pszPathRootAbs=%s, pszPath=%s -> %s\n", pTransfer->pszPathRootAbs, pszPath, pszResolved));
     1369        LogFlowFunc(("Resolved to: %s\n", pszResolved));
    13691370
    13701371        *ppszResolved = pszResolved;
     
    14031404        LogFlowFunc(("pszPath=%s\n", pOpenParms->pszPath));
    14041405
    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))
    14121412            {
    14131413                rc = ShClTransferListHandleInfoInit(pInfo);
     
    14151415                {
    14161416                    RTFSOBJINFO objInfo;
    1417                     rc = RTPathQueryInfo(pOpenParms->pszPath, &objInfo, RTFSOBJATTRADD_NOTHING);
     1417                    rc = RTPathQueryInfo(pInfo->pszPathLocalAbs, &objInfo, RTFSOBJATTRADD_NOTHING);
    14181418                    if (RT_SUCCESS(rc))
    14191419                    {
    14201420                        if (RTFS_IS_DIRECTORY(objInfo.Attr.fMode))
    14211421                        {
    1422                             rc = RTDirOpen(&pInfo->u.Local.hDir, pszPathAbs);
     1422                            rc = RTDirOpen(&pInfo->u.Local.hDir, pInfo->pszPathLocalAbs);
    14231423                            if (RT_SUCCESS(rc))
    14241424                            {
    14251425                                pInfo->enmType = SHCLOBJTYPE_DIRECTORY;
    14261426
    1427                                 LogRel2(("Shared Clipboard: Opening directory '%s'\n", pszPathAbs));
     1427                                LogRel2(("Shared Clipboard: Opening directory '%s'\n", pInfo->pszPathLocalAbs));
    14281428                            }
    14291429                            else
     
    14331433                        else if (RTFS_IS_FILE(objInfo.Attr.fMode))
    14341434                        {
    1435                             rc = RTFileOpen(&pInfo->u.Local.hFile, pszPathAbs,
     1435                            rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs,
    14361436                                            RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE);
    14371437                            if (RT_SUCCESS(rc))
     
    14391439                                pInfo->enmType = SHCLOBJTYPE_FILE;
    14401440
    1441                                 LogRel2(("Shared Clipboard: Opening file '%s'\n", pszPathAbs));
     1441                                LogRel2(("Shared Clipboard: Opening file '%s'\n", pInfo->pszPathLocalAbs));
    14421442                            }
    14431443                            else
     
    14491449                        if (RT_SUCCESS(rc))
    14501450                        {
    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));
    14651458                        }
    14661459                        else
     
    14781471                        }
    14791472                    }
    1480 
    1481                     if (RT_FAILURE(rc))
    1482                         ShClTransferListHandleInfoDestroy(pInfo);
    1483                 }
    1484 
    1485                 if (RT_FAILURE(rc))
    1486                 {
    1487                     RTMemFree(pInfo);
    1488                     pInfo = NULL;
    14891473                }
    14901474            }
    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;
    14961486    }
    14971487    else if (pTransfer->State.enmSource == SHCLSOURCE_REMOTE)
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette