VirtualBox

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


Ignore:
Timestamp:
Jul 3, 2007 11:36:37 AM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
22585
Message:

Main: com::GetVBoxUserHomeDirectory() now takes char * instead of Utf8Str because on XPCOM platforms, this function may be called before XPCOM has been initialized, when Utf8Str functionality is not yet available (because it uses XPCOM memory management).

Location:
trunk/src/VBox/Main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/VirtualBoxImpl.cpp

    r3330 r3387  
    139139
    140140    /* Get the VirtualBox home directory. */
    141     int vrc = com::GetVBoxUserHomeDirectory (unconst (mData.mHomeDir));
    142     if (VBOX_FAILURE (vrc))
    143         return setError (E_FAIL,
    144             tr ("Could not create the VirtualBox home directory '%s'"
    145                 "(%Vrc)"),
    146             mData.mHomeDir.raw(), vrc);
     141    {
     142        char homeDir [RTPATH_MAX];
     143        int vrc = com::GetVBoxUserHomeDirectory (homeDir, sizeof (homeDir));
     144        if (VBOX_FAILURE (vrc))
     145            return setError (E_FAIL,
     146                tr ("Could not create the VirtualBox home directory '%s'"
     147                    "(%Vrc)"),
     148                homeDir, vrc);
     149
     150        unconst (mData.mHomeDir) = homeDir;
     151    }
    147152
    148153    /* compose the global config file name (always full path) */
  • trunk/src/VBox/Main/glue/com.cpp

    r3191 r3387  
    133133}
    134134
    135 int GetVBoxUserHomeDirectory (Utf8Str &aDir)
     135int GetVBoxUserHomeDirectory (char *aDir, size_t aDirLen)
    136136{
     137    AssertReturn (aDir, VERR_INVALID_POINTER);
     138    AssertReturn (aDirLen > 0, VERR_BUFFER_OVERFLOW);
     139
    137140    /* start with null */
    138     aDir.setNull();
     141    *aDir = 0;
    139142
    140143    const char *VBoxUserHome = RTEnvGet ("VBOX_USER_HOME");
     
    152155            vrc = RTPathAbs (VBoxUserHomeUtf8, path, sizeof (path));
    153156            if (RT_SUCCESS (vrc))
    154                 aDir = path;
     157            {
     158                if (aDirLen < strlen (path) + 1)
     159                    vrc = VERR_BUFFER_OVERFLOW;
     160                else
     161                    strcpy (aDir, path);
     162            }
    155163            RTStrFree (VBoxUserHomeUtf8);
    156164        }
     
    161169        vrc = RTPathUserHome (path, sizeof (path));
    162170        if (RT_SUCCESS (vrc))
    163             aDir = Utf8StrFmt ("%s%c%s", path, RTPATH_DELIMITER,
    164                                VBOX_USER_HOME_SUFFIX);
     171        {
     172            size_t len =
     173                RTStrPrintf (aDir, aDirLen, "%s%c%s",
     174                             path, RTPATH_DELIMITER, VBOX_USER_HOME_SUFFIX);
     175            if (len != strlen (path) + 1 + strlen (VBOX_USER_HOME_SUFFIX))
     176                vrc = VERR_BUFFER_OVERFLOW;
     177        }
    165178    }
    166179
  • trunk/src/VBox/Main/glue/initterm.cpp

    r2981 r3387  
    184184
    185185        /* prepare paths for registry files */
    186         Utf8Str homeDir;
    187         int vrc = GetVBoxUserHomeDirectory (homeDir);
     186        char homeDir [RTPATH_MAX];
     187        int vrc = GetVBoxUserHomeDirectory (homeDir, sizeof (homeDir));
    188188        if (RT_SUCCESS (vrc))
    189189        {
    190             Utf8Str compReg = Utf8StrFmt ("%s%c%s", homeDir.raw(),
    191                                           RTPATH_DELIMITER, "compreg.dat");
    192             Utf8Str xptiDat = Utf8StrFmt ("%s%c%s", homeDir.raw(),
    193                                           RTPATH_DELIMITER, "xpti.dat");
     190            char compReg [RTPATH_MAX];
     191            char xptiDat [RTPATH_MAX];
     192
     193            RTStrPrintf (compReg, sizeof (compReg), "%s%c%s",
     194                         homeDir, RTPATH_DELIMITER, "compreg.dat");
     195            RTStrPrintf (xptiDat, sizeof (xptiDat), "%s%c%s",
     196                         homeDir, RTPATH_DELIMITER, "xpti.dat");
     197
    194198            dsProv = new DirectoryServiceProvider();
    195199            if (dsProv)
     
    230234            if (RT_SUCCESS (vrc))
    231235            {
    232                 nsCOMPtr<nsILocalFile> file;
     236                nsCOMPtr <nsILocalFile> file;
    233237                rc = NS_NewNativeLocalFile (nsEmbedCString (appDirCP),
    234238                                            PR_FALSE, getter_AddRefs (file));
  • trunk/src/VBox/Main/testcase/tstAPI.cpp

    r2981 r3387  
    202202    HRESULT rc;
    203203
     204    {
     205        char homeDir [RTPATH_MAX];
     206        GetVBoxUserHomeDirectory (homeDir, sizeof (homeDir));
     207        printf ("VirtualBox Home Directory = '%s'\n", homeDir);
     208    }
     209
    204210    printf ("Initializing COM...\n");
    205211
     
    213219    ComPtr <IVirtualBox> virtualBox;
    214220    ComPtr <ISession> session;
     221
     222#if 0
     223    // Utf8Str test
     224    ////////////////////////////////////////////////////////////////////////////
     225
     226    Utf8Str nullUtf8Str;
     227    printf ("nullUtf8Str='%s'\n", nullUtf8Str.raw());
     228   
     229    Utf8Str simpleUtf8Str = "simpleUtf8Str";
     230    printf ("simpleUtf8Str='%s'\n", simpleUtf8Str.raw());
     231
     232    Utf8Str utf8StrFmt = Utf8StrFmt ("[0=%d]%s[1=%d]",
     233                                     0, "utf8StrFmt", 1);
     234    printf ("utf8StrFmt='%s'\n", utf8StrFmt.raw());
     235
     236#endif
    215237
    216238    printf ("Creating VirtualBox object...\n");
     
    454476#endif
    455477
    456 #if 1
     478#if 0
    457479    // find a registered hard disk by location
    458480    ///////////////////////////////////////////////////////////////////////////
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