VirtualBox

Ignore:
Timestamp:
Jan 30, 2017 12:50:05 PM (8 years ago)
Author:
vboxsync
Message:
VBoxManage: added --sorteds option to list vms.
Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r65263 r65517  
    623623    if (fCategory & USAGE_LIST)
    624624        RTStrmPrintf(pStrm,
    625                            "%s list [--long|-l]%s vms|runningvms|ostypes|hostdvds|hostfloppies|\n"
     625                           "%s list [--long|-l] [--sorted|-s]%s vms|runningvms|ostypes|hostdvds|hostfloppies|\n"
    626626#if defined(VBOX_WITH_NETFLT)
    627627                     "                            intnets|bridgedifs|hostonlyifs|natnets|dhcpservers|\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageList.cpp

    r64910 r65517  
    3737#include <iprt/getopt.h>
    3838#include <iprt/ctype.h>
     39
     40#include <vector>
     41#include <algorithm>
    3942
    4043#include "VBoxManage.h"
     
    925928 * @param   pVirtualBox         Reference to the IVirtualBox smart pointer.
    926929 */
    927 static HRESULT produceList(enum enmListType enmCommand, bool fOptLong, const ComPtr<IVirtualBox> &pVirtualBox)
     930static HRESULT produceList(enum enmListType enmCommand, bool fOptLong, bool fOptSorted, const ComPtr<IVirtualBox> &pVirtualBox)
    928931{
    929932    HRESULT rc = S_OK;
     
    944947            {
    945948                /*
    946                  * Iterate through the collection
     949                 * Display it.
    947950                 */
    948                 for (size_t i = 0; i < machines.size(); ++i)
     951                if (!fOptSorted)
    949952                {
    950                     if (machines[i])
    951                         rc = showVMInfo(pVirtualBox, machines[i], NULL, fOptLong ? VMINFO_STANDARD : VMINFO_COMPACT);
     953                    for (size_t i = 0; i < machines.size(); ++i)
     954                        if (machines[i])
     955                            rc = showVMInfo(pVirtualBox, machines[i], NULL, fOptLong ? VMINFO_STANDARD : VMINFO_COMPACT);
     956                }
     957                else
     958                {
     959                    /*
     960                     * Sort the list by name before displaying it.
     961                     */
     962                    std::vector<std::pair<com::Bstr, IMachine *>> sortedMachines;
     963                    for (size_t i = 0; i < machines.size(); ++i)
     964                    {
     965                        IMachine *pMachine = machines[i];
     966                        if (pMachine) /* no idea why we need to do this... */
     967                        {
     968                            Bstr bstrName;
     969                            pMachine->COMGETTER(Name)(bstrName.asOutParam());
     970                            sortedMachines.push_back(std::pair<com::Bstr, IMachine *>(bstrName, pMachine));
     971                        }
     972                    }
     973
     974                    std::sort(sortedMachines.begin(), sortedMachines.end());
     975
     976                    for (size_t i = 0; i < sortedMachines.size(); ++i)
     977                        rc = showVMInfo(pVirtualBox, sortedMachines[i].second, NULL, fOptLong ? VMINFO_STANDARD : VMINFO_COMPACT);
    952978                }
    953979            }
     
    12731299    bool                fOptLong      = false;
    12741300    bool                fOptMultiple  = false;
     1301    bool                fOptSorted    = false;
    12751302    enum enmListType    enmOptCommand = kListNotSpecified;
    12761303
     
    12791306        { "--long",             'l',                     RTGETOPT_REQ_NOTHING },
    12801307        { "--multiple",         'm',                     RTGETOPT_REQ_NOTHING }, /* not offical yet */
     1308        { "--sorted",           's',                     RTGETOPT_REQ_NOTHING },
    12811309        { "vms",                kListVMs,                RTGETOPT_REQ_NOTHING },
    12821310        { "runningvms",         kListRunningVMs,         RTGETOPT_REQ_NOTHING },
     
    13211349                break;
    13221350
     1351            case 's':
     1352                fOptSorted = true;
     1353                break;
     1354
    13231355            case 'm':
    13241356                fOptMultiple = true;
     
    13561388                if (fOptMultiple)
    13571389                {
    1358                     HRESULT hrc = produceList((enum enmListType)ch, fOptLong, a->virtualBox);
     1390                    HRESULT hrc = produceList((enum enmListType)ch, fOptLong, fOptSorted, a->virtualBox);
    13591391                    if (FAILED(hrc))
    13601392                        return RTEXITCODE_FAILURE;
     
    13771409    if (!fOptMultiple)
    13781410    {
    1379         HRESULT hrc = produceList(enmOptCommand, fOptLong, a->virtualBox);
     1411        HRESULT hrc = produceList(enmOptCommand, fOptLong, fOptSorted, a->virtualBox);
    13801412        if (FAILED(hrc))
    13811413            return RTEXITCODE_FAILURE;
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