VirtualBox

Changeset 77069 in vbox for trunk


Ignore:
Timestamp:
Jan 31, 2019 11:59:33 AM (6 years ago)
Author:
vboxsync
Message:

Guest Control/Main: Check flags of IGuestSession::directoryRemoveRecursive() and renamed DIRREMOVE_FLAG_ flags to DIRREMOVEREC_FLAG_ to match usage.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/GuestHost/GuestControl.h

    r76585 r77069  
    8080#define SESSIONCREATIONFLAG_NONE            0x0
    8181
    82 /** @name DIRREMOVE_FLAG_XXX - Guest directory removement flags.
     82/** @name DIRREMOVEREC_FLAG_XXX - Guest directory removement flags.
    8383 * Essentially using what IPRT's RTDIRRMREC_F_
    8484 * defines have to offer.
    8585 * @{
    8686 */
    87 #define DIRREMOVE_FLAG_RECURSIVE            RT_BIT(0)
     87/** No remove flags specified. */
     88#define DIRREMOVEREC_FLAG_NONE                 UINT32_C(0x0)
     89/** Recursively deletes the directorie's contents. */
     90#define DIRREMOVEREC_FLAG_RECURSIVE            RT_BIT(0)
    8891/** Delete the content of the directory and the directory itself. */
    89 #define DIRREMOVE_FLAG_CONTENT_AND_DIR      RT_BIT(1)
     92#define DIRREMOVEREC_FLAG_CONTENT_AND_DIR      RT_BIT(1)
    9093/** Only delete the content of the directory, omit the directory it self. */
    91 #define DIRREMOVE_FLAG_CONTENT_ONLY         RT_BIT(2)
     94#define DIRREMOVEREC_FLAG_CONTENT_ONLY         RT_BIT(2)
    9295/** Mask of valid flags. */
    93 #define DIRREMOVE_FLAG_VALID_MASK           UINT32_C(0x00000003)
     96#define DIRREMOVEREC_FLAG_VALID_MASK           UINT32_C(0x00000003)
    9497/** @}   */
    9598
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp

    r76958 r77069  
    137137         * Do some validating before executing the job.
    138138         */
    139         if (!(fFlags & ~DIRREMOVE_FLAG_VALID_MASK))
    140         {
    141             if (fFlags & DIRREMOVE_FLAG_RECURSIVE)
     139        if (!(fFlags & ~DIRREMOVEREC_FLAG_VALID_MASK))
     140        {
     141            if (fFlags & DIRREMOVEREC_FLAG_RECURSIVE)
    142142            {
    143143                uint32_t fFlagsRemRec = RTDIRRMREC_F_CONTENT_AND_DIR; /* Set default. */
    144                 if (fFlags & DIRREMOVE_FLAG_CONTENT_ONLY)
     144                if (fFlags & DIRREMOVEREC_FLAG_CONTENT_ONLY)
    145145                    fFlagsRemRec |= RTDIRRMREC_F_CONTENT_ONLY;
    146146                rc = RTDirRemoveRecursive(szDir, fFlagsRemRec);
     
    156156        else
    157157        {
    158             VGSvcError("[Dir %s]: Unsupported flags: %#x (all %#x)\n", szDir, (fFlags & ~DIRREMOVE_FLAG_VALID_MASK), fFlags);
     158            VGSvcError("[Dir %s]: Unsupported flags: %#x (all %#x)\n", szDir, (fFlags & ~DIRREMOVEREC_FLAG_VALID_MASK), fFlags);
    159159            rc = VERR_NOT_SUPPORTED;
    160160        }
  • trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp

    r77068 r77069  
    10511051int GuestSession::i_directoryRemove(const Utf8Str &strPath, uint32_t uFlags, int *prcGuest)
    10521052{
    1053     AssertReturn(!(uFlags & ~DIRREMOVE_FLAG_VALID_MASK), VERR_INVALID_PARAMETER);
     1053    AssertReturn(!(uFlags & ~DIRREMOVEREC_FLAG_VALID_MASK), VERR_INVALID_PARAMETER);
    10541054    AssertPtrReturn(prcGuest, VERR_INVALID_POINTER);
    10551055
     
    33563356        return setError(E_INVALIDARG, tr("No directory to remove recursively specified"));
    33573357
    3358 /** @todo r=bird: Must check that the flags matches the hardcoded behavior
    3359  *        further down!! */
     3358    uint32_t fFlags = DIRREMOVEREC_FLAG_NONE;
     3359    if (aFlags.size())
     3360    {
     3361        for (size_t i = 0; i < aFlags.size(); i++)
     3362        {
     3363            switch (aFlags[i])
     3364            {
     3365                case DirectoryRemoveRecFlag_ContentAndDir:
     3366                    fFlags = DIRREMOVEREC_FLAG_RECURSIVE | DIRREMOVEREC_FLAG_CONTENT_AND_DIR;
     3367                    break;
     3368
     3369                case DirectoryRemoveRecFlag_ContentOnly:
     3370                    fFlags = DIRREMOVEREC_FLAG_RECURSIVE | DIRREMOVEREC_FLAG_CONTENT_ONLY;
     3371                    break;
     3372
     3373                default:
     3374                    return setError(E_INVALIDARG, tr("Invalid flags specified"));
     3375            }
     3376        }
     3377    }
    33603378
    33613379    HRESULT hrc = i_isReadyExternal();
     
    33823400        return hrc;
    33833401
    3384     /* Remove the directory + all its contents. */
    3385     uint32_t uFlags = DIRREMOVE_FLAG_RECURSIVE
    3386                     | DIRREMOVE_FLAG_CONTENT_AND_DIR;
    33873402    int rcGuest;
    3388     int vrc = i_directoryRemove(aPath, uFlags, &rcGuest);
     3403    int vrc = i_directoryRemove(aPath, fFlags, &rcGuest);
    33893404    if (RT_FAILURE(vrc))
    33903405    {
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