VirtualBox

Changeset 22809 in vbox


Ignore:
Timestamp:
Sep 7, 2009 12:35:51 PM (15 years ago)
Author:
vboxsync
Message:

VBoxService: Small fixes + UTF-8 handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceExec.cpp

    r22744 r22809  
    140140    *ppszValue = NULL;
    141141
     142    char *pszPropNameUtf8;
     143    rc = RTStrCurrentCPToUtf8(&pszPropNameUtf8, pszPropName);
     144    if (RT_FAILURE(rc))
     145    {
     146        VBoxServiceError("Exec: Failed to convert property name %s to UTF-8: %Rrc",
     147                         pszPropName, rc);
     148        return rc;
     149    }
     150
    142151    for (unsigned cTries = 0; cTries < 10; cTries++)
    143152    {
     
    156165        char    *pszFlags;
    157166        uint64_t uTimestamp;
    158         rc = VbglR3GuestPropRead(g_uExecGuestPropSvcClientID, pszPropName,
     167        rc = VbglR3GuestPropRead(g_uExecGuestPropSvcClientID, pszPropNameUtf8,
    159168                                 pvBuf, cbBuf,
    160169                                 &pszValue, &uTimestamp, &pszFlags, NULL);
     
    202211
    203212    RTMemFree(pvBuf);
     213    RTStrFree(pszPropNameUtf8);
    204214    return rc;
    205215}
     
    284294
    285295            /* add it */
    286             papszArgs[cUsed++] = RTStrDupN(pszArgs, (uintptr_t)pszEnd - (uintptr_t)pszArgs);
     296            papszArgs[cUsed] = RTStrDupN(pszArgs, (uintptr_t)pszEnd - (uintptr_t)pszArgs);
    287297            if (!papszArgs[cUsed++])
    288298                break;
     
    327337    for (;;)
    328338    {
    329 #if 0 /** @todo r=bird: This code needs reviewing and testing before it can be enabled. */
    330339        if (!fSysprepDone)
    331340        {
     
    342351                rc = VERR_NOT_FOUND;
    343352#else
    344             /* Predefined sys. */
     353            /* Predefined sysprep. */
    345354            int  rc = VINF_SUCCESS;
    346355            char szSysprepCmd[RTPATH_MAX] = "C:\\sysprep\\sysprep.exe";
     
    350359            if (    GetVersionEx((LPOSVERSIONINFO) &OSInfoEx)
    351360                &&  OSInfoEx.dwPlatformId == VER_PLATFORM_WIN32_NT
    352                 &&  OSInfoEx.dwMajorVersion >= 6 /* Vista */)
     361                &&  OSInfoEx.dwMajorVersion >= 6 /* Vista or later */)
    353362            {
    354                 rc = RTEnvGetEx(RTENV_DEFAULT, "windir", szSysPrepCmd, sizeof(szSysPrepCmd), NULL);
     363                rc = RTEnvGetEx(RTENV_DEFAULT, "windir", szSysprepCmd, sizeof(szSysprepCmd), NULL);
    355364                if (RT_SUCCESS(rc))
    356                     rc = RTPathAppend(szSysPrepCmd, sizeof(szSysPrepCmd), "system32\\sysprep\\sysprep.exe");
     365                    rc = RTPathAppend(szSysprepCmd, sizeof(szSysprepCmd), "system32\\sysprep\\sysprep.exe");
    357366            }
    358367            pszSysprepExec = szSysprepCmd;
     
    399408                                     * Store the result in Set return value so the host knows what happend.
    400409                                     */
    401                                     rc = VbglR3GuestPropWriteValueF(g_uExecGuestPropSvcClientID,
    402                                                                     "/VirtualBox/HostGuest/SysprepRet",
    403                                                                     "%d", Status.iStatus);
     410                                    char* pszValueUtf8;
     411                                    rc = RTStrCurrentCPToUtf8(&pszValueUtf8, "/VirtualBox/HostGuest/SysprepRet");
    404412                                    if (RT_FAILURE(rc))
    405                                         VBoxServiceError("Exec: Failed to write SysprepRet: rc=%Rrc\n", rc);
     413                                    {
     414                                        VBoxServiceError("Exec: Failed to convert SysprepVBoxRC name to UTF-8: rc=%Rrc\n", rc);
     415                                    }
     416                                    else
     417                                    {
     418                                        rc = VbglR3GuestPropWriteValueF(g_uExecGuestPropSvcClientID,
     419                                                                        pszValueUtf8,
     420                                                                        "%d", Status.iStatus);
     421                                        if (RT_FAILURE(rc))
     422                                            VBoxServiceError("Exec: Failed to write SysprepRet: rc=%Rrc\n", rc);
     423                                        RTStrFree(pszValueUtf8);
     424                                    }
    406425                                }
    407426                                else
     
    424443                    RTStrFree(pszSysprepArgs);
    425444                }
    426 #ifndef SYSPREP_WITH_CMD
     445#ifdef SYSPREP_WITH_CMD
    427446                RTStrFree(pszSysprepExec);
    428447#endif
     
    437456            {
    438457                VBoxServiceVerbose(1, "Exec: Stopping sysprep processing (rc=%Rrc)\n", rc);
    439                 rc = VbglR3GuestPropWriteValueF(g_uExecGuestPropSvcClientID, "/VirtualBox/HostGuest/SysprepVBoxRC", "%d", rc);
     458
     459                char* pszValueUtf8;
     460                rc = RTStrCurrentCPToUtf8(&pszValueUtf8, "/VirtualBox/HostGuest/SysprepVBoxRC");
    440461                if (RT_FAILURE(rc))
    441                     VBoxServiceError("Exec: Failed to write SysprepVBoxRC: rc=%Rrc\n", rc);
     462                {
     463                    VBoxServiceError("Exec: Failed to convert SysprepVBoxRC name to UTF-8: rc=%Rrc\n", rc);
     464                }
     465                else
     466                {
     467                    rc = VbglR3GuestPropWriteValueF(g_uExecGuestPropSvcClientID, pszValueUtf8, "%d", rc);
     468                    if (RT_FAILURE(rc))
     469                        VBoxServiceError("Exec: Failed to write SysprepVBoxRC: rc=%Rrc\n", rc);
     470                    RTStrFree(pszValueUtf8);
     471                }
    442472                fSysprepDone = true;
    443473            }
    444474        }
    445 #endif /* temporarily disabled. */
    446 
    447475#ifdef FULL_FEATURED_EXEC
    448476        1. Read the command - value, timestamp and flags.
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