VirtualBox

忽略:
時間撮記:
2009-3-4 下午06:10:58 (16 年 以前)
作者:
vboxsync
訊息:

OVF: partial implementation of write support in XML classes.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Main/ApplianceImpl.cpp

    r17343 r17362  
    115115struct Appliance::Data
    116116{
    117     Bstr bstrPath;
     117    Utf8Str                 strPath;            // file name last given to either read() or write()
    118118
    119119    DiskImagesMap           mapDisks;           // map of DiskImage structs, sorted by DiskImage.strDiskId
     
    938938    AutoReadLock alock(this);
    939939
    940     m->bstrPath.cloneTo(aPath);
     940    Bstr bstrPath(m->strPath);
     941    bstrPath.cloneTo(aPath);
    941942
    942943    return S_OK;
     
    12261227
    12271228    AutoWriteLock alock(this);
    1228     m->bstrPath = path;
    12291229
    12301230    // see if we can handle this file; for now we insist it has an ".ovf" extension
    1231     Utf8Str utf8Path(path);
    1232     const char *pcszLastDot = strrchr(utf8Path, '.');
     1231    m->strPath = path;
     1232    const char *pcszLastDot = strrchr(m->strPath, '.');
    12331233    if (    (!pcszLastDot)
    12341234         || (    strcmp(pcszLastDot, ".ovf")
     
    12431243        xml::XmlFileParser parser;
    12441244        xml::Document doc;
    1245         parser.read(utf8Path.raw(),
     1245        parser.read(m->strPath.raw(),
    12461246                    doc);
    12471247
     
    12671267
    12681268        // now go though the sections
    1269         if (!(SUCCEEDED(rc = LoopThruSections(utf8Path.raw(), pReferencesElem, pRootElem))))
     1269        if (!(SUCCEEDED(rc = LoopThruSections(m->strPath.raw(), pReferencesElem, pRootElem))))
    12701270            return rc;
    12711271    }
     
    16541654    {
    16551655        uint32_t opCount = calcMaxProgress();
    1656         Bstr progressDesc = BstrFmt(tr("Import appliance '%ls'"),
    1657                                     m->bstrPath.raw());
     1656        Bstr progressDesc = BstrFmt(tr("Import appliance '%s'"),
     1657                                    m->strPath.raw());
    16581658        /* Create the progress object */
    16591659        progress.createObject();
     
    16951695    if (FAILED(rc = autoCaller.rc())) return rc;
    16961696
    1697     AutoReadLock(this);
     1697    AutoWriteLock(this);
     1698
     1699    // see if we can handle this file; for now we insist it has an ".ovf" extension
     1700    m->strPath = path;
     1701    const char *pcszLastDot = strrchr(m->strPath, '.');
     1702    if (    (!pcszLastDot)
     1703         || (    strcmp(pcszLastDot, ".ovf")
     1704              && strcmp(pcszLastDot, ".OVF")
     1705            )
     1706       )
     1707        return setError(VBOX_E_FILE_ERROR,
     1708                        tr("Appliance file must have .ovf extension"));
    16981709
    16991710    ComObjPtr<Progress> progress;
     
    17011712    {
    17021713        uint32_t opCount = calcMaxProgress();
    1703         Bstr progressDesc = BstrFmt(tr("Write appliance '%ls'"),
    1704                                     m->bstrPath.raw());
     1714        Bstr progressDesc = BstrFmt(tr("Write appliance '%s'"),
     1715                                    m->strPath.raw());
    17051716        /* Create the progress object */
    17061717        progress.createObject();
     
    21032114                    /* The disk image has to be on the same place as the OVF file. So
    21042115                     * strip the filename out of the full file path. */
    2105                     Utf8Str strSrcDir = stripFilename(Utf8Str(pAppliance->m->bstrPath).raw());
     2116                    Utf8Str strSrcDir = stripFilename(pAppliance->m->strPath);
    21062117
    21072118                    /* Iterate over all given disk images */
     
    24432454    try
    24442455    {
     2456        xml::Document doc;
     2457        doc.createRootElement("Envelope");
     2458
     2459        xml::XmlFileWriter writer(doc);
     2460        writer.write(pAppliance->m->strPath.c_str());
    24452461    }
    24462462    catch(HRESULT aRC)
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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