VirtualBox

Changeset 100427 in vbox


Ignore:
Timestamp:
Jul 7, 2023 10:01:38 AM (17 months ago)
Author:
vboxsync
Message:

Shared Clipboard: Eliminated some duplicate code in shclTransferIfaceLocalListEntryRead(). ​​​bugref:9437

File:
1 edited

Legend:

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

    r100396 r100427  
    563563}
    564564
     565/**
     566 * Initializes a local list entry.
     567 *
     568 * @returns VBox status code.
     569 * @param   pEntry              List entry to init.
     570 * @param   pszName             File name to use.
     571 * @param   pObjInfo            Object information to use.
     572 */
     573static DECLCALLBACK(int) shclTransferIfaceLocalListEntryInit(PSHCLLISTENTRY pEntry, const char *pszName, PRTFSOBJINFO pObjInfo)
     574{
     575    PSHCLFSOBJINFO pFsObjInfo = (PSHCLFSOBJINFO)RTMemAllocZ(sizeof(SHCLFSOBJINFO));
     576    AssertPtrReturn(pFsObjInfo, VERR_NO_MEMORY);
     577
     578    int rc = ShClFsObjInfoFromIPRT(pFsObjInfo, pObjInfo);
     579    if (RT_SUCCESS(rc))
     580    {
     581        rc = ShClTransferListEntryInitEx(pEntry, VBOX_SHCL_INFO_F_FSOBJINFO, pszName, pFsObjInfo, sizeof(SHCLFSOBJINFO));
     582        /* pEntry has taken ownership of pFsObjInfo on success. */
     583    }
     584
     585    if (RT_FAILURE(rc))
     586    {
     587        RTMemFree(pFsObjInfo);
     588        pFsObjInfo = NULL;
     589    }
     590
     591    if (RT_FAILURE(rc))
     592        LogRel(("Shared Clipboard: Initializing list entry '%s' failed: %Rrc\n", pszName, rc));
     593
     594    return rc;
     595}
     596
    565597/** @copydoc SHCLTXPROVIDERIFACE::pfnListEntryRead */
    566598static DECLCALLBACK(int) shclTransferIfaceLocalListEntryRead(PSHCLTXPROVIDERCTX pCtx,
     
    625657                        if (   RT_SUCCESS(rc)
    626658                            && !fSkipEntry)
    627                         {
    628                             rc = RTStrCopy(pEntry->pszName, pEntry->cbName, pDirEntry->szName);
    629                             if (RT_SUCCESS(rc))
    630                             {
    631                                 pEntry->cbName = (uint32_t)strlen(pEntry->pszName) + 1; /* Include termination. */
    632 
    633                                 AssertPtr(pEntry->pvInfo);
    634                                 Assert   (pEntry->cbInfo == sizeof(SHCLFSOBJINFO));
    635 
    636                                 ShClFsObjInfoFromIPRT(PSHCLFSOBJINFO(pEntry->pvInfo), &pDirEntry->Info);
    637 
    638                                 LogFlowFunc(("Entry pszName=%s, pvInfo=%p, cbInfo=%RU32\n",
    639                                              pEntry->pszName, pEntry->pvInfo, pEntry->cbInfo));
    640                             }
    641                         }
     659                            rc = shclTransferIfaceLocalListEntryInit(pEntry, pDirEntry->szName, &pDirEntry->Info);
    642660
    643661                        RTDirReadExAFree(&pDirEntry, &cbDirEntry);
     
    661679                rc = RTFileQueryInfo(pInfo->u.Local.hFile, &objInfo, RTFSOBJATTRADD_NOTHING);
    662680                if (RT_SUCCESS(rc))
    663                 {
    664                     pEntry->pvInfo = (PSHCLFSOBJINFO)RTMemAlloc(sizeof(SHCLFSOBJINFO));
    665                     if (pEntry->pvInfo)
    666                     {
    667                         rc = RTStrCopy(pEntry->pszName, pEntry->cbName, pInfo->pszPathLocalAbs);
    668                         if (RT_SUCCESS(rc))
    669                         {
    670                             ShClFsObjInfoFromIPRT(PSHCLFSOBJINFO(pEntry->pvInfo), &objInfo);
    671 
    672                             pEntry->cbInfo = sizeof(SHCLFSOBJINFO);
    673                             pEntry->fInfo  = VBOX_SHCL_INFO_F_FSOBJINFO;
    674                         }
    675                     }
    676                     else
    677                         rc = VERR_NO_MEMORY;
    678                 }
     681                    rc = shclTransferIfaceLocalListEntryInit(pEntry, pInfo->pszPathLocalAbs, &objInfo);
    679682
    680683                break;
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