summaryrefslogtreecommitdiff
path: root/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp')
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp64
1 files changed, 16 insertions, 48 deletions
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp
index cd3dd8d56..24a21b394 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp
@@ -37,60 +37,28 @@
#ifdef VBOX_WITH_GUEST_PROPS
-int VboxServiceWriteProp(uint32_t uiClientID, const char *pszKey, const char *pszValue)
+int VBoxServiceWritePropF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...)
{
- int rc = VINF_SUCCESS;
- Assert(pszKey);
- /* Not checking for a valid pszValue is intentional. */
-
- char szKeyTemp [FILENAME_MAX] = {0};
- char *pszValueTemp = NULL;
-
- /* Append base path. */
- RTStrPrintf(szKeyTemp, sizeof(szKeyTemp), "/VirtualBox/%s", pszKey); /** @todo r=bird: Why didn't you hardcode this into the strings before calling this function? */
-
- if (pszValue != NULL)
- {
- rc = RTStrCurrentCPToUtf8(&pszValueTemp, pszValue);
- if (!RT_SUCCESS(rc))
- {
- VBoxServiceError("vboxVMInfoThread: Failed to convert the value name \"%s\" to Utf8! Error: %Rrc\n", pszValue, rc);
- goto cleanup;
- }
- }
-
- rc = VbglR3GuestPropWriteValue(uiClientID, szKeyTemp, ((pszValue == NULL) || (0 == strlen(pszValue))) ? NULL : pszValueTemp);
- if (!RT_SUCCESS(rc))
+ int rc;
+ if (pszValueFormat != NULL)
{
- VBoxServiceError("Failed to store the property \"%s\"=\"%s\"! ClientID: %d, Error: %Rrc\n", szKeyTemp, pszValueTemp, uiClientID, rc);
- goto cleanup;
+ VBoxServiceVerbose(3, "Writing guest property \"%s\"\n", pszName);
+ va_list va;
+ va_start(va, pszValueFormat);
+ rc = VbglR3GuestPropWriteValueV(u32ClientId, pszName, pszValueFormat, va);
+ va_end(va);
+ if (RT_FAILURE(rc))
+ VBoxServiceError("Error writing guest property \"%s\" (rc=%Rrc)\n", pszName, rc);
}
-
- if ((pszValueTemp != NULL) && (strlen(pszValueTemp) > 0))
- VBoxServiceVerbose(3, "Property written: %s = %s\n", szKeyTemp, pszValueTemp);
else
- VBoxServiceVerbose(3, "Property deleted: %s\n", szKeyTemp);
-
-cleanup:
-
- RTStrFree(pszValueTemp);
+ rc = VbglR3GuestPropWriteValue(u32ClientId, pszName, NULL);
return rc;
}
-
-
-int VboxServiceWritePropInt(uint32_t uiClientID, const char *pszKey, int32_t iValue)
-{
- Assert(pszKey);
-
- char szBuffer[32] = {0};
- RTStrPrintf(szBuffer, sizeof(szBuffer), "%ld", iValue);
- return VboxServiceWriteProp(uiClientID, pszKey, szBuffer);
-}
#endif /* VBOX_WITH_GUEST_PROPS */
#ifdef RT_OS_WINDOWS
-BOOL VboxServiceGetFileString(const char* pszFileName,
+BOOL VBoxServiceGetFileString(const char* pszFileName,
char* pszBlock,
char* pszString,
PUINT puiSize)
@@ -146,7 +114,7 @@ BOOL VboxServiceGetFileString(const char* pszFileName,
}
-BOOL VboxServiceGetFileVersion(const char* pszFileName,
+BOOL VBoxServiceGetFileVersion(const char* pszFileName,
DWORD* pdwMajor,
DWORD* pdwMinor,
DWORD* pdwBuildNumber,
@@ -174,7 +142,7 @@ BOOL VboxServiceGetFileVersion(const char* pszFileName,
UINT uiSize = _MAX_PATH;
int r = 0;
- bRet = VboxServiceGetFileString(pszFileName, "\\StringFileInfo\\040904b0\\FileVersion", szValue, &uiSize);
+ bRet = VBoxServiceGetFileString(pszFileName, "\\StringFileInfo\\040904b0\\FileVersion", szValue, &uiSize);
if (bRet)
{
sscanf(pszValue, "%ld.%ld.%ld.%ld", pdwMajor, pdwMinor, pdwBuildNumber, pdwRevisionNumber);
@@ -208,7 +176,7 @@ BOOL VboxServiceGetFileVersion(const char* pszFileName,
}
-BOOL VboxServiceGetFileVersionString(const char* pszPath, const char* pszFileName, char* pszVersion, UINT uiSize)
+BOOL VBoxServiceGetFileVersionString(const char* pszPath, const char* pszFileName, char* pszVersion, UINT uiSize)
{
BOOL bRet = FALSE;
char szFullPath[_MAX_PATH] = {0};
@@ -219,7 +187,7 @@ BOOL VboxServiceGetFileVersionString(const char* pszPath, const char* pszFileNam
DWORD dwMajor, dwMinor, dwBuild, dwRev;
- bRet = VboxServiceGetFileVersion(szFullPath, &dwMajor, &dwMinor, &dwBuild, &dwRev);
+ bRet = VBoxServiceGetFileVersion(szFullPath, &dwMajor, &dwMinor, &dwBuild, &dwRev);
if (bRet)
RTStrPrintf(pszVersion, uiSize, "%ld.%ld.%ldr%ld", dwMajor, dwMinor, dwBuild, dwRev);
else