From: VMware, Inc <> Date: Tue, 19 Oct 2010 20:08:47 +0000 (-0700) Subject: Fix unicode support in toolbox-cmd. X-Git-Tag: 2010.10.18-313025~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0bc7132eb357fd402eef0d2ce3e83a6350815984;p=thirdparty%2Fopen-vm-tools.git Fix unicode support in toolbox-cmd. On Win32, use the wide-character entry point function, and convert the command line arguments to UTF-8 on all platforms before using them. Also make sure we use UTF8-friendly g_print everywhere, instead of printf. Signed-off-by: Marcelo Vanzin --- diff --git a/open-vm-tools/toolbox/toolbox-cmd.c b/open-vm-tools/toolbox/toolbox-cmd.c index aa5641978..896d5fef7 100644 --- a/open-vm-tools/toolbox/toolbox-cmd.c +++ b/open-vm-tools/toolbox/toolbox-cmd.c @@ -32,6 +32,7 @@ #include "toolboxCmdInt.h" #include "toolboxcmd_version.h" #include "system.h" +#include "unicode.h" #include "vmware/tools/guestrpc.h" #include "vmware/tools/i18n.h" #include "vmware/tools/utils.h" @@ -393,8 +394,13 @@ ParseCommand(char **argv, // IN: Command line arguments */ int +#if defined(_WIN32) +wmain(int argc, // IN: length of command line arguments + wchar_t **wargv) // IN: Command line arguments +#else main(int argc, // IN: length of command line arguments char **argv) // IN: Command line arguments +#endif { Bool show_help = FALSE; Bool show_version = FALSE; @@ -402,6 +408,13 @@ main(int argc, // IN: length of command line arguments int c; int retval; +#if defined(_WIN32) + char **argv; + Unicode_InitW(argc, wargv, NULL, &argv, NULL); +#else + Unicode_Init(argc, &argv, NULL); +#endif + setlocale(LC_ALL, ""); VMTools_ConfigLogging("toolboxcmd", NULL, FALSE, FALSE); VMTools_BindTextDomain(VMW_TEXT_DOMAIN, NULL, NULL); @@ -453,7 +466,7 @@ main(int argc, // IN: length of command line arguments } if (show_version) { - printf("%s (%s)\n", TOOLBOXCMD_VERSION_STRING, BUILD_NUMBER); + g_print("%s (%s)\n", TOOLBOXCMD_VERSION_STRING, BUILD_NUMBER); } else if (show_help) { ToolboxCmdHelp(argv[0], "help"); } else { diff --git a/open-vm-tools/toolbox/toolboxcmd-devices.c b/open-vm-tools/toolbox/toolboxcmd-devices.c index d41b8f650..b49b20f19 100644 --- a/open-vm-tools/toolbox/toolboxcmd-devices.c +++ b/open-vm-tools/toolbox/toolboxcmd-devices.c @@ -55,7 +55,7 @@ DevicesList(void) if (GuestApp_GetDeviceInfo(i, &info) && strlen(info.name) > 0) { const char *status = info.enabled ? SU_(option.enabled, "Enabled") : SU_(option.disabled, "Disabled"); - printf("%s: %s\n", info.name, status); + g_print("%s: %s\n", info.name, status); } } return EXIT_SUCCESS; diff --git a/open-vm-tools/toolbox/toolboxcmd-scripts.c b/open-vm-tools/toolbox/toolboxcmd-scripts.c index 207e8c85d..da88bb303 100644 --- a/open-vm-tools/toolbox/toolboxcmd-scripts.c +++ b/open-vm-tools/toolbox/toolboxcmd-scripts.c @@ -159,7 +159,7 @@ GetConfEntry(const char *progName, // IN: program name (argv[0]) } if (strlen(entry) > 0) { - printf("%s\n", entry); + g_print("%s\n", entry); ret = EXIT_SUCCESS; } else { ToolsCmd_PrintErr(SU_(script.unknownop, "No script for operation %s.\n"), diff --git a/open-vm-tools/toolbox/toolboxcmd-shrink.c b/open-vm-tools/toolbox/toolboxcmd-shrink.c index ac57185cd..dc5fe6e61 100644 --- a/open-vm-tools/toolbox/toolboxcmd-shrink.c +++ b/open-vm-tools/toolbox/toolboxcmd-shrink.c @@ -153,7 +153,7 @@ ShrinkList(void) DblLnkLst_ForEach(curr, &plist.link) { WiperPartition *p = DblLnkLst_Container(curr, WiperPartition, link); if (p->type != PARTITION_UNSUPPORTED) { - printf("%s\n", p->mountPoint); + g_print("%s\n", p->mountPoint); } } @@ -242,11 +242,11 @@ ShrinkDoShrink(char *mountPoint, // IN: mount point } if (!quiet) { - printf("\rProgress: %d [", progress); + g_print("\rProgress: %d [", progress); for (i = 0; i <= progress / 10; i++) { putchar('='); } - printf(">%*c", 10 - i + 1, ']'); + g_print(">%*c", 10 - i + 1, ']'); fflush(stdout); } } diff --git a/open-vm-tools/toolbox/toolboxcmd-stat.c b/open-vm-tools/toolbox/toolboxcmd-stat.c index 60280dfa4..5d917400d 100644 --- a/open-vm-tools/toolbox/toolboxcmd-stat.c +++ b/open-vm-tools/toolbox/toolboxcmd-stat.c @@ -99,7 +99,7 @@ StatProcessorSpeed(void) SU_(stat.getspeed.failed, "Unable to get processor speed.\n")); return EX_TEMPFAIL; } - printf("%u MHz\n", speed); + g_print("%u MHz\n", speed); return EXIT_SUCCESS; } @@ -154,7 +154,7 @@ StatHostTime(void) SU_(stat.formattime.failed, "Unable to format host time.\n")); return EX_TEMPFAIL; } - printf("%s\n", buf); + g_print("%s\n", buf); return EXIT_SUCCESS; } @@ -196,7 +196,7 @@ StatGetSessionID(void) VMGuestLib_GetErrorText(glError)); exitStatus = EX_TEMPFAIL; } else { - printf("0x%"FMT64"x\n", session); + g_print("0x%"FMT64"x\n", session); } VMGuestLib_CloseHandle(glHandle); return exitStatus; @@ -240,7 +240,7 @@ StatGetMemoryBallooned(void) VMGuestLib_GetErrorText(glError)); exitStatus = EX_TEMPFAIL; } else { - printf("%u MHz\n", memBallooned); + g_print("%u MHz\n", memBallooned); } VMGuestLib_CloseHandle(glHandle); return exitStatus; @@ -284,7 +284,7 @@ StatGetMemoryReservation(void) VMGuestLib_GetErrorText(glError)); exitStatus = EX_TEMPFAIL; } else { - printf("%u MB\n", memReservation); + g_print("%u MB\n", memReservation); } VMGuestLib_CloseHandle(glHandle); return exitStatus; @@ -329,7 +329,7 @@ StatGetMemorySwapped(void) VMGuestLib_GetErrorText(glError)); exitStatus = EX_TEMPFAIL; } else { - printf("%u MB\n", memSwapped); + g_print("%u MB\n", memSwapped); } VMGuestLib_CloseHandle(glHandle); return exitStatus; @@ -373,7 +373,7 @@ StatGetMemoryLimit(void) VMGuestLib_GetErrorText(glError)); exitStatus = EX_TEMPFAIL; } else { - printf("%u MB\n", memLimit); + g_print("%u MB\n", memLimit); } VMGuestLib_CloseHandle(glHandle); return exitStatus; @@ -417,7 +417,7 @@ StatGetCpuReservation(void) VMGuestLib_GetErrorText(glError)); exitStatus = EX_TEMPFAIL; } else { - printf("%u MHz\n", cpuReservation); + g_print("%u MHz\n", cpuReservation); } VMGuestLib_CloseHandle(glHandle); return exitStatus; @@ -461,7 +461,7 @@ StatGetCpuLimit(void) VMGuestLib_GetErrorText(glError)); exitStatus = EX_TEMPFAIL; } else { - printf("%u MHz\n", cpuLimit); + g_print("%u MHz\n", cpuLimit); } VMGuestLib_CloseHandle(glHandle); return exitStatus;