VirtualBox

Changeset 1428 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Mar 12, 2007 2:16:32 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
19442
Message:

added convertdd functionality from vditool to VBoxManage (but no progress indicator)

Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
2 edited

Legend:

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

    r1414 r1428  
    427427    {
    428428        RTPrintf("VBoxManage clonevdi         <uuid>|<filename> <outputfile>\n"
     429                 "\n");
     430    }
     431
     432    if (enmCmd & USAGE_CONVERTDD)
     433    {
     434        RTPrintf("VBoxManage convertdd        <filename> <outputfile>\n"
    429435                 "\n");
    430436    }
     
    23092315    }
    23102316    return SUCCEEDED(rc) ? 0 : 1;
     2317}
     2318
     2319static int handleConvertDDImage(int argc, char *argv[],
     2320                                ComPtr<IVirtualBox> virtualBox, ComPtr<ISession> session)
     2321{
     2322    if (argc != 2)
     2323    {
     2324        return errorSyntax(USAGE_CONVERTDD, "Incorrect number of parameters");
     2325    }
     2326
     2327
     2328    RTPrintf("Converting VDI: from DD image file=\"%s\" to file=\"%s\"...\n",
     2329             argv[0], argv[1]);
     2330
     2331    /* open raw image file. */
     2332    RTFILE File;
     2333    int rc = RTFileOpen(&File, argv[0], RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE);
     2334    if (VBOX_FAILURE(rc))
     2335    {
     2336        RTPrintf("File=\"%s\" open error: %Rrf\n", argv[0], rc);
     2337        return rc;
     2338    }
     2339
     2340    /* get image size. */
     2341    uint64_t cbFile;
     2342    rc = RTFileGetSize(File, &cbFile);
     2343    if (VBOX_SUCCESS(rc))
     2344    {
     2345        RTPrintf("Creating fixed image with size %u Bytes...\n", (unsigned)cbFile);
     2346        rc = VDICreateBaseImage(argv[1],
     2347                                VDI_IMAGE_TYPE_FIXED,
     2348                                cbFile,
     2349                                "Converted from DD test image", NULL, NULL);
     2350        if (VBOX_SUCCESS(rc))
     2351        {
     2352            PVDIDISK pVdi = VDIDiskCreate();
     2353            rc = VDIDiskOpenImage(pVdi, argv[1], VDI_OPEN_FLAGS_NORMAL);
     2354            if (VBOX_SUCCESS(rc))
     2355            {
     2356                /* alloc work buffer. */
     2357                void *pvBuf = RTMemAlloc(VDIDiskGetBufferSize(pVdi));
     2358                if (pvBuf)
     2359                {
     2360                    uint64_t off = 0;
     2361                    while (off < cbFile)
     2362                    {
     2363                        unsigned cbRead = 0;
     2364                        rc = RTFileRead(File, pvBuf, VDIDiskGetBufferSize(pVdi), &cbRead);
     2365                        if (VBOX_FAILURE(rc) || !cbRead)
     2366                            break;
     2367                        rc = VDIDiskWrite(pVdi, off, pvBuf, cbRead);
     2368                        if (VBOX_FAILURE(rc))
     2369                            break;
     2370                        off += cbRead;
     2371                    }
     2372
     2373                    RTMemFree(pvBuf);
     2374                }
     2375                else
     2376                    rc = VERR_NO_MEMORY;
     2377
     2378                VDIDiskCloseImage(pVdi);
     2379            }
     2380
     2381            if (VBOX_FAILURE(rc))
     2382            {
     2383                /* delete image on error */
     2384                RTPrintf("Failed (%Vrc)!\n", rc);
     2385                VDIDeleteImage(argv[1]);
     2386            }
     2387        }
     2388    }
     2389    RTFileClose(File);
     2390
     2391    return rc;
    23112392}
    23122393
     
    60486129        { "modifyvm",         handleModifyVM },
    60496130        { "clonevdi",         handleCloneVDI },
     6131        { "convertdd",        handleConvertDDImage },
    60506132        { "startvm",          handleStartVM },
    60516133        { "controlvm",        handleControlVM },
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h

    r1 r1428  
    2727typedef enum {
    2828    USAGE_DUMPOPTS              = 0,
    29     USAGE_LIST                  = BIT(0),
    30     USAGE_SHOWVMINFO            = BIT(1),
    31     USAGE_REGISTERVM            = BIT(2),
    32     USAGE_UNREGISTERVM          = BIT(3),
    33     USAGE_CREATEVM              = BIT(4),
    34     USAGE_MODIFYVM              = BIT(5),
    35     USAGE_STARTVM               = BIT(6),
    36     USAGE_CONTROLVM             = BIT(7),
    37     USAGE_DISCARDSTATE          = BIT(8),
    38     USAGE_SNAPSHOT              = BIT(9),
    39     USAGE_REGISTERIMAGE         = BIT(10),
    40     USAGE_UNREGISTERIMAGE       = BIT(11),
    41     USAGE_SHOWVDIINFO           = BIT(12),
    42     USAGE_CREATEVDI             = BIT(13),
    43     USAGE_MODIFYVDI             = BIT(14),
    44     USAGE_CLONEVDI              = BIT(15),
    45     USAGE_ADDISCSIDISK          = BIT(16),
    46     USAGE_CREATEHOSTIF          = BIT(17),
    47     USAGE_REMOVEHOSTIF          = BIT(18),
    48     USAGE_GETEXTRADATA          = BIT(19),
    49     USAGE_SETEXTRADATA          = BIT(20),
    50     USAGE_SETPROPERTY           = BIT(21),
    51     USAGE_USBFILTER             = BIT(22) | BIT(23) | BIT(24),
    52     USAGE_USBFILTER_ADD         = BIT(22),
    53     USAGE_USBFILTER_MODIFY      = BIT(23),
    54     USAGE_USBFILTER_REMOVE      = BIT(24),
    55     USAGE_SHAREDFOLDER          = BIT(25) | BIT(26),
    56     USAGE_SHAREDFOLDER_ADD      = BIT(25),
    57     USAGE_SHAREDFOLDER_REMOVE   = BIT(26),
    58     USAGE_UPDATESETTINGS        = BIT(27),
    59     USAGE_LOADSYMS              = BIT(29),
    60     USAGE_UNLOADSYMS            = BIT(30),
    61     USAGE_SETVDIUUID            = BIT(31),
    62     USAGE_ALL                   = ~0,
     29    USAGE_LIST                  = BIT64(0),
     30    USAGE_SHOWVMINFO            = BIT64(1),
     31    USAGE_REGISTERVM            = BIT64(2),
     32    USAGE_UNREGISTERVM          = BIT64(3),
     33    USAGE_CREATEVM              = BIT64(4),
     34    USAGE_MODIFYVM              = BIT64(5),
     35    USAGE_STARTVM               = BIT64(6),
     36    USAGE_CONTROLVM             = BIT64(7),
     37    USAGE_DISCARDSTATE          = BIT64(8),
     38    USAGE_SNAPSHOT              = BIT64(9),
     39    USAGE_REGISTERIMAGE         = BIT64(10),
     40    USAGE_UNREGISTERIMAGE       = BIT64(11),
     41    USAGE_SHOWVDIINFO           = BIT64(12),
     42    USAGE_CREATEVDI             = BIT64(13),
     43    USAGE_MODIFYVDI             = BIT64(14),
     44    USAGE_CLONEVDI              = BIT64(15),
     45    USAGE_ADDISCSIDISK          = BIT64(16),
     46    USAGE_CREATEHOSTIF          = BIT64(17),
     47    USAGE_REMOVEHOSTIF          = BIT64(18),
     48    USAGE_GETEXTRADATA          = BIT64(19),
     49    USAGE_SETEXTRADATA          = BIT64(20),
     50    USAGE_SETPROPERTY           = BIT64(21),
     51    USAGE_USBFILTER             = BIT64(22) | BIT64(23) | BIT64(24),
     52    USAGE_USBFILTER_ADD         = BIT64(22),
     53    USAGE_USBFILTER_MODIFY      = BIT64(23),
     54    USAGE_USBFILTER_REMOVE      = BIT64(24),
     55    USAGE_SHAREDFOLDER          = BIT64(25) | BIT64(26),
     56    USAGE_SHAREDFOLDER_ADD      = BIT64(25),
     57    USAGE_SHAREDFOLDER_REMOVE   = BIT64(26),
     58    USAGE_UPDATESETTINGS        = BIT64(27),
     59    USAGE_LOADSYMS              = BIT64(29),
     60    USAGE_UNLOADSYMS            = BIT64(30),
     61    USAGE_SETVDIUUID            = BIT64(31),
     62    USAGE_CONVERTDD             = BIT64(32),
     63    USAGE_ALL                   = (uint64_t)~0,
    6364} USAGECATEGORY;
    6465
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette