VirtualBox

Ignore:
Timestamp:
Apr 28, 2022 10:08:31 PM (3 years ago)
Author:
vboxsync
Message:

Main/Unattended: Replaced stricmp(..., grub.conf) with a bool variable that gets set during menu file detection. Some associated tidying up. bugref:9781

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/UnattendedInstaller.cpp

    r94751 r94752  
    995995                                                            RTVFS hVfsOrgIso, bool fOverwrite)
    996996{
    997     /* On Debian Live ISOs (at least from 9 to 11) the there is only menu.cfg. */
    998     RTCString strMenuConfigFileName("/isolinux/txt.cfg");
    999     if (   !hlpVfsFileExists(hVfsOrgIso, strMenuConfigFileName.c_str())
    1000         && hlpVfsFileExists(hVfsOrgIso, "/isolinux/menu.cfg"))
    1001         strMenuConfigFileName     = "/isolinux/menu.cfg";
    1002 
    1003     /* Ubuntus 21.10+ are UEFI only. No isolinux directory. We modify grub.cfg. */
    1004     if (   !hlpVfsFileExists(hVfsOrgIso, strMenuConfigFileName.c_str())
    1005         && hlpVfsFileExists(hVfsOrgIso, "/boot/grub/grub.cfg"))
    1006         strMenuConfigFileName     = "/boot/grub/grub.cfg";
     997    /*
     998     * Figure out the name of the menu config file that we have to edit.
     999     */
     1000    bool        fMenuConfigIsGrub     = false;
     1001    const char *pszMenuConfigFilename = "/isolinux/txt.cfg";
     1002    if (!hlpVfsFileExists(hVfsOrgIso, pszMenuConfigFilename))
     1003    {
     1004        /* On Debian Live ISOs (at least from 9 to 11) the there is only menu.cfg. */
     1005        if (hlpVfsFileExists(hVfsOrgIso, "/isolinux/menu.cfg"))
     1006            pszMenuConfigFilename     =  "/isolinux/menu.cfg";
     1007
     1008        /* Ubuntus 21.10+ are UEFI only. No isolinux directory. We modify grub.cfg. */
     1009        else if (hlpVfsFileExists(hVfsOrgIso, "/boot/grub/grub.cfg"))
     1010        {
     1011            pszMenuConfigFilename     =       "/boot/grub/grub.cfg";
     1012            fMenuConfigIsGrub         = true;
     1013        }
     1014    }
    10071015
    10081016    /* Check for existence of isolinux.cfg since UEFI-only ISOs do not have this file.  */
    1009     bool fIsoLinuxCfgExists = hlpVfsFileExists(hVfsOrgIso, "isolinux/isolinux.cfg");
     1017    bool const fIsoLinuxCfgExists = hlpVfsFileExists(hVfsOrgIso, "isolinux/isolinux.cfg");
     1018    Assert(!fIsoLinuxCfgExists || !fMenuConfigIsGrub); /** @todo r=bird: Perhaps prefix the hlpVfsFileExists call with 'fIsoLinuxCfgExists &&' above ? */
     1019
    10101020    /*
    10111021     * VISO bits and filenames.
     
    10371047
    10381048        /* Replace menu configuration file as well. */
    1039         rVecArgs.append().assign(strMenuConfigFileName).append("=:must-remove:");
     1049        rVecArgs.append().assign(pszMenuConfigFilename).append("=:must-remove:");
    10401050        strTxtCfg = mpParent->i_getAuxiliaryBasePath();
    1041         if (strMenuConfigFileName.compare("/boot/grub/grub.cfg", RTCString::CaseInsensitive) == 0)
     1051        if (fMenuConfigIsGrub)
    10421052            strTxtCfg.append("grub.cfg");
    10431053        else
    10441054            strTxtCfg.append("isolinux-.cfg");
    1045         rVecArgs.append().assign(strMenuConfigFileName).append("=").append(strTxtCfg);
     1055        rVecArgs.append().assign(pszMenuConfigFilename).append("=").append(strTxtCfg);
    10461056    }
    10471057    catch (std::bad_alloc &)
     
    10581068        HRESULT hrc = loadAndParseFileFromIso(hVfsOrgIso, "/isolinux/isolinux.cfg", &Editor);
    10591069        if (SUCCEEDED(hrc))
    1060             hrc = editIsoLinuxCfg(&Editor, RTPathFilename(strMenuConfigFileName.c_str()));
     1070            hrc = editIsoLinuxCfg(&Editor, RTPathFilename(pszMenuConfigFilename));
    10611071        if (SUCCEEDED(hrc))
    10621072        {
     
    10841094    {
    10851095        GeneralTextScript Editor(mpParent);
    1086         HRESULT hrc = loadAndParseFileFromIso(hVfsOrgIso, strMenuConfigFileName.c_str(), &Editor);
     1096        HRESULT hrc = loadAndParseFileFromIso(hVfsOrgIso, pszMenuConfigFilename, &Editor);
    10871097        if (SUCCEEDED(hrc))
    10881098        {
    1089             if (strMenuConfigFileName.compare("/boot/grub/grub.cfg", RTCString::CaseInsensitive) == 0)
     1099            if (fMenuConfigIsGrub)
    10901100                hrc = editDebianGrubCfg(&Editor);
    10911101            else
    10921102                hrc = editDebianMenuCfg(&Editor);
    1093         }
    1094         if (SUCCEEDED(hrc))
    1095         {
    1096             hrc = Editor.save(strTxtCfg, fOverwrite);
    10971103            if (SUCCEEDED(hrc))
    10981104            {
    1099                 try
     1105                hrc = Editor.save(strTxtCfg, fOverwrite);
     1106                if (SUCCEEDED(hrc))
    11001107                {
    1101                     rVecFiles.append(strTxtCfg);
    1102                 }
    1103                 catch (std::bad_alloc &)
    1104                 {
    1105                     RTFileDelete(strTxtCfg.c_str());
    1106                     hrc = E_OUTOFMEMORY;
     1108                    try
     1109                    {
     1110                        rVecFiles.append(strTxtCfg);
     1111                    }
     1112                    catch (std::bad_alloc &)
     1113                    {
     1114                        RTFileDelete(strTxtCfg.c_str());
     1115                        hrc = E_OUTOFMEMORY;
     1116                    }
    11071117                }
    11081118            }
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