VirtualBox

Changeset 74953 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Oct 19, 2018 5:28:17 PM (6 years ago)
Author:
vboxsync
Message:

Guest Control/Main: Made the IGuestSession::copyToGuest() and IGuestSession::copyFromGuest() API calls more flexible in terms of not having to pass the flags and filter arrays. Untested.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp

    r74734 r74953  
    28992899
    29002900    const size_t cSources = aSources.size();
    2901     if (   aFilters.size() != cSources
    2902         || aFlags.size()   != cSources)
     2901    if (   (aFilters.size() && aFilters.size() != cSources)
     2902        || (aFlags.size()   && aFlags.size()   != cSources))
    29032903    {
    29042904        return setError(E_INVALIDARG, tr("Parameter array sizes don't match to the number of sources specified"));
     
    29292929        }
    29302930
     2931        Utf8Str strFlags;
     2932        if (itFlags != aFlags.end())
     2933        {
     2934            strFlags = *itFlags;
     2935            ++itFlags;
     2936        }
     2937
     2938        Utf8Str strFilter;
     2939        if (itFilter != aFilters.end())
     2940        {
     2941            strFilter = *itFilter;
     2942            ++itFilter;
     2943        }
     2944
    29312945        GuestSessionFsSourceSpec source;
    29322946        source.strSource    = *itSource;
    2933         source.strFilter    = *itFilter;
     2947        source.strFilter    = strFilter;
    29342948        source.enmType      = objData.mType;
    29352949        source.enmPathStyle = i_getPathStyle();
     
    29382952        if (source.enmType == FsObjType_Directory)
    29392953        {
    2940             hrc = GuestSession::i_directoryCopyFlagFromStr(*itFlags, &source.Type.Dir.fCopyFlags);
     2954            hrc = GuestSession::i_directoryCopyFlagFromStr(strFlags, &source.Type.Dir.fCopyFlags);
    29412955            source.Type.Dir.fRecursive = true; /* Implicit. */
    29422956        }
    29432957        else if (source.enmType == FsObjType_File)
    2944             hrc = GuestSession::i_fileCopyFlagFromStr(*itFlags, &source.Type.File.fCopyFlags);
     2958            hrc = GuestSession::i_fileCopyFlagFromStr(strFlags, &source.Type.File.fCopyFlags);
    29452959        else
    29462960            return setError(E_INVALIDARG, tr("Source type %d invalid / not supported"), source.enmType);
     
    29512965
    29522966        ++itSource;
    2953         ++itFilter;
    2954         ++itFlags;
    29552967    }
    29562968
     
    29662978
    29672979    const size_t cSources = aSources.size();
    2968     if (   aFilters.size() != cSources
    2969         || aFlags.size()   != cSources)
     2980    if (   (aFilters.size() && aFilters.size() != cSources)
     2981        || (aFlags.size()   && aFlags.size()   != cSources))
    29702982    {
    29712983        return setError(E_INVALIDARG, tr("Parameter array sizes don't match to the number of sources specified"));
     
    29903002        }
    29913003
     3004        Utf8Str strFlags;
     3005        if (itFlags != aFlags.end())
     3006        {
     3007            strFlags = *itFlags;
     3008            ++itFlags;
     3009        }
     3010
     3011        Utf8Str strFilter;
     3012        if (itFilter != aFilters.end())
     3013        {
     3014            strFilter = *itFilter;
     3015            ++itFilter;
     3016        }
     3017
    29923018        GuestSessionFsSourceSpec source;
    29933019        source.strSource    = *itSource;
    2994         source.strFilter    = *itFilter;
     3020        source.strFilter    = strFilter;
    29953021        source.enmType      = GuestBase::fileModeToFsObjType(objInfo.Attr.fMode);
    29963022        source.enmPathStyle = i_getPathStyle();
     
    29993025        if (source.enmType == FsObjType_Directory)
    30003026        {
    3001             hrc = GuestSession::i_directoryCopyFlagFromStr(*itFlags, &source.Type.Dir.fCopyFlags);
     3027            hrc = GuestSession::i_directoryCopyFlagFromStr(strFlags, &source.Type.Dir.fCopyFlags);
    30023028            source.Type.Dir.fFollowSymlinks = true; /** @todo Add a flag for that in DirectoryCopyFlag_T. Later. */
    30033029            source.Type.Dir.fRecursive      = true; /* Implicit. */
    30043030        }
    30053031        else if (source.enmType == FsObjType_File)
    3006             hrc = GuestSession::i_fileCopyFlagFromStr(*itFlags, &source.Type.File.fCopyFlags);
     3032            hrc = GuestSession::i_fileCopyFlagFromStr(strFlags, &source.Type.File.fCopyFlags);
    30073033        else
    30083034            return setError(E_INVALIDARG, tr("Source type %d invalid / not supported"), source.enmType);
     
    30133039
    30143040        ++itSource;
    3015         ++itFilter;
    3016         ++itFlags;
    30173041    }
    30183042
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