- Timestamp:
- Jan 31, 2019 11:59:33 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
include/VBox/GuestHost/GuestControl.h (modified) (1 diff)
-
src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp (modified) (2 diffs)
-
src/VBox/Main/src-client/GuestSessionImpl.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/GuestHost/GuestControl.h
r76585 r77069 80 80 #define SESSIONCREATIONFLAG_NONE 0x0 81 81 82 /** @name DIRREMOVE _FLAG_XXX - Guest directory removement flags.82 /** @name DIRREMOVEREC_FLAG_XXX - Guest directory removement flags. 83 83 * Essentially using what IPRT's RTDIRRMREC_F_ 84 84 * defines have to offer. 85 85 * @{ 86 86 */ 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) 88 91 /** 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) 90 93 /** 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) 92 95 /** Mask of valid flags. */ 93 #define DIRREMOVE _FLAG_VALID_MASK UINT32_C(0x00000003)96 #define DIRREMOVEREC_FLAG_VALID_MASK UINT32_C(0x00000003) 94 97 /** @} */ 95 98 -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp
r76958 r77069 137 137 * Do some validating before executing the job. 138 138 */ 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) 142 142 { 143 143 uint32_t fFlagsRemRec = RTDIRRMREC_F_CONTENT_AND_DIR; /* Set default. */ 144 if (fFlags & DIRREMOVE _FLAG_CONTENT_ONLY)144 if (fFlags & DIRREMOVEREC_FLAG_CONTENT_ONLY) 145 145 fFlagsRemRec |= RTDIRRMREC_F_CONTENT_ONLY; 146 146 rc = RTDirRemoveRecursive(szDir, fFlagsRemRec); … … 156 156 else 157 157 { 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); 159 159 rc = VERR_NOT_SUPPORTED; 160 160 } -
trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp
r77068 r77069 1051 1051 int GuestSession::i_directoryRemove(const Utf8Str &strPath, uint32_t uFlags, int *prcGuest) 1052 1052 { 1053 AssertReturn(!(uFlags & ~DIRREMOVE _FLAG_VALID_MASK), VERR_INVALID_PARAMETER);1053 AssertReturn(!(uFlags & ~DIRREMOVEREC_FLAG_VALID_MASK), VERR_INVALID_PARAMETER); 1054 1054 AssertPtrReturn(prcGuest, VERR_INVALID_POINTER); 1055 1055 … … 3356 3356 return setError(E_INVALIDARG, tr("No directory to remove recursively specified")); 3357 3357 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 } 3360 3378 3361 3379 HRESULT hrc = i_isReadyExternal(); … … 3382 3400 return hrc; 3383 3401 3384 /* Remove the directory + all its contents. */3385 uint32_t uFlags = DIRREMOVE_FLAG_RECURSIVE3386 | DIRREMOVE_FLAG_CONTENT_AND_DIR;3387 3402 int rcGuest; 3388 int vrc = i_directoryRemove(aPath, uFlags, &rcGuest);3403 int vrc = i_directoryRemove(aPath, fFlags, &rcGuest); 3389 3404 if (RT_FAILURE(vrc)) 3390 3405 {
Note:
See TracChangeset
for help on using the changeset viewer.

