From: John Wolfe Date: Fri, 11 Dec 2020 05:05:49 +0000 (-0800) Subject: Changes to common source files not applicable to open-vm-tools. X-Git-Tag: stable-11.2.5~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f57b44a3f4b685f70d9ff9b0981d598e2ecdd5a;p=thirdparty%2Fopen-vm-tools.git Changes to common source files not applicable to open-vm-tools. --- diff --git a/open-vm-tools/lib/include/vmware/tools/plugin.h b/open-vm-tools/lib/include/vmware/tools/plugin.h index 1776a6260..62d8d967e 100644 --- a/open-vm-tools/lib/include/vmware/tools/plugin.h +++ b/open-vm-tools/lib/include/vmware/tools/plugin.h @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2008-2019,2020 VMware, Inc. All rights reserved. + * Copyright (C) 2008-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -217,15 +217,6 @@ ToolsCore_LogState(guint level, */ #define TOOLS_CORE_SIG_SERVICE_CONTROL "tcs_service_control" -/** - * Signal sent when a new version of global configuration is downloaded. - * - * @param[in] src The source object. - * @param[in] ctx ToolsAppCtx *: The application context. - * @param[in] data Client data. - */ -#define TOOLS_CORE_SIG_GLOBALCONF_UPDATE "tcs_globalconf_update" - #endif /** @@ -264,6 +255,18 @@ typedef enum { } ToolsCoreAPI; +struct ToolsServiceProperty; + +/** + * Type of the function that installs a new property in + * the application context service object. + * + * @param[in] obj The application context service object. + * @param[in] prop Property to install. + */ +typedef void (*RegisterServiceProperty)(gpointer obj, + struct ToolsServiceProperty *prop); + /** * Defines the context of a tools application. This data is provided by the * core services to applications when they're loaded. @@ -301,6 +304,13 @@ typedef struct ToolsAppCtx { * register and emit their own signals using this object. */ gpointer serviceObj; + + /** + * Function pointer for plugins to register properties to + * the service object serviceObj. + * This allows a plugin to share data and services to others. + */ + RegisterServiceProperty registerServiceProperty; } ToolsAppCtx; #if defined(G_PLATFORM_WIN32) diff --git a/open-vm-tools/lib/include/vmware/tools/utils.h b/open-vm-tools/lib/include/vmware/tools/utils.h index cd8ca14e0..0417b431b 100644 --- a/open-vm-tools/lib/include/vmware/tools/utils.h +++ b/open-vm-tools/lib/include/vmware/tools/utils.h @@ -109,6 +109,10 @@ gboolean VMTools_AddConfig(GKeyFile *srcConfig, GKeyFile *dstConfig); +gboolean +VMTools_CompareConfig(GKeyFile *config1, + GKeyFile *config2); + gboolean VMTools_WriteConfig(const gchar *path, GKeyFile *config, diff --git a/open-vm-tools/libvmtools/vmtoolsConfig.c b/open-vm-tools/libvmtools/vmtoolsConfig.c index 47f20b861..1e77a8014 100644 --- a/open-vm-tools/libvmtools/vmtoolsConfig.c +++ b/open-vm-tools/libvmtools/vmtoolsConfig.c @@ -97,7 +97,9 @@ VMTools_LoadConfig(const gchar *path, GKeyFile *cfg = NULL; static gboolean hadConfFile = TRUE; - g_return_val_if_fail(config != NULL, FALSE); + if (config == NULL) { + return FALSE; + } if (path == NULL) { defaultPath = VMToolsGetToolsConfFile(); @@ -198,8 +200,9 @@ VMTools_AddConfig(GKeyFile *srcConfig, gsize i; gboolean configAdded = FALSE; - g_return_val_if_fail(srcConfig != NULL, configAdded); - g_return_val_if_fail(dstConfig != NULL, configAdded); + if (srcConfig == NULL || dstConfig == NULL) { + return configAdded; + } groupNames = g_key_file_get_groups(srcConfig, &numGroups); @@ -256,6 +259,149 @@ VMTools_AddConfig(GKeyFile *srcConfig, } +/** + * Compares two configuration dictionaries. Compares all the groups and + * key/value pairs in both the configuration dictionaries. If all the entries + * are same, TRUE is returned. Else, FALSE is returned. + * + * @param[in] config1 First configuration dictionary to compare. + * @param[in] config2 Second configuration dictionary to compare. + * + * @return TRUE if both the specified configuration dictionaries are identical. + * FALSE otherwise. + */ + +gboolean +VMTools_CompareConfig(GKeyFile *config1, + GKeyFile *config2) +{ + gsize numGroups1 = 0; + gsize numGroups2 = 0; + gchar **groupNames1 = NULL; + gchar **groupNames2 = NULL; + gchar **keyNames1 = NULL; + gchar **keyNames2 = NULL; + gchar *value1 = NULL; + gchar *value2 = NULL; + gsize i; + gboolean sameConfigs = TRUE; + GError *gErr = NULL; + + if (config1 == NULL && config2 == NULL) { + goto exit; + } + + if (config1 == NULL || config2 == NULL) { + goto mismatch; + } + + groupNames1 = g_key_file_get_groups(config1, &numGroups1); + groupNames2 = g_key_file_get_groups(config2, &numGroups2); + + g_debug("%s: Found %d groups in first config, " + "%d groups in second config.\n", + __FUNCTION__, (int) numGroups1, (int) numGroups2); + + if (numGroups1 != numGroups2) { + goto mismatch; + } + + for (i = 0; i < numGroups1; ++i) { + gsize numKeys1 = 0; + gsize numKeys2 = 0; + gsize j; + const gchar *group = groupNames1[i]; + + g_strfreev(keyNames1); + keyNames1 = NULL; + g_strfreev(keyNames2); + keyNames2 = NULL; + + if (!g_key_file_has_group(config2, group)) { + g_debug("%s: group: '%s' not found in second config.\n", + __FUNCTION__, group); + goto mismatch; + } + + keyNames1 = g_key_file_get_keys(config1, group, &numKeys1, &gErr); + if (gErr != NULL) { + g_warning("%s: g_key_file_get_keys(%s) for first config failed: %s\n", + __FUNCTION__, group, gErr->message); + goto mismatch; + } + + keyNames2 = g_key_file_get_keys(config2, group, &numKeys2, &gErr); + if (gErr != NULL) { + g_warning("%s: g_key_file_get_keys(%s) for second config failed: %s\n", + __FUNCTION__, group, gErr->message); + goto mismatch; + } + + g_debug("%s: For group: '%s', first config has %d keys, " + "second config has %d keys\n", + __FUNCTION__, group, (int) numKeys1, (int) numKeys2); + + if (numKeys1 != numKeys2) { + goto mismatch; + } + + for (j = 0; j < numKeys1; ++j) { + const gchar* key = keyNames1[j]; + + g_free(value1); + value1 = NULL; + g_free(value2); + value2 = NULL; + + if (!g_key_file_has_key(config2, group, key, NULL)) { + g_debug("%s: key '%s' for group '%s' not found in second config.\n", + __FUNCTION__, key, group); + goto mismatch; + } + + value1 = g_key_file_get_value(config1, group, key, &gErr); + if (value1 == NULL && gErr != NULL) { + g_warning("%s: g_key_file_get_value(%s:%s) for first config " + "failed: %s\n", + __FUNCTION__, group, key, gErr->message); + goto mismatch; + } + + value2 = g_key_file_get_value(config2, group, key, &gErr); + if (value2 == NULL && gErr != NULL) { + g_warning("%s: g_key_file_get_value(%s:%s) for second config " + "failed: %s\n", + __FUNCTION__, group, key, gErr->message); + goto mismatch; + } + + if (strcmp(value1, value2) != 0) { + g_debug("%s: Value for (%s:%s) is not same in both the configs.\n", + __FUNCTION__, group, key); + goto mismatch; + } + } + } + + goto exit; + +mismatch: + sameConfigs = FALSE; + +exit: + g_debug("%s: Return Value: %d\n", __FUNCTION__, sameConfigs); + + g_clear_error(&gErr); + g_free(value1); + g_free(value2); + g_strfreev(keyNames1); + g_strfreev(keyNames2); + g_strfreev(groupNames1); + g_strfreev(groupNames2); + return sameConfigs; +} + + /** * Saves the given config data to the given path. * diff --git a/open-vm-tools/services/vmtoolsd/mainLoop.c b/open-vm-tools/services/vmtoolsd/mainLoop.c index 3c6313adf..bb9591ad2 100644 --- a/open-vm-tools/services/vmtoolsd/mainLoop.c +++ b/open-vm-tools/services/vmtoolsd/mainLoop.c @@ -44,6 +44,11 @@ #include "vmware/tools/log.h" #include "vmware/tools/utils.h" #include "vmware/tools/vmbackup.h" + +#if defined(_WIN32) +#include "vmware/tools/guestStore.h" +#endif + #if defined(_WIN32) # include "codeset.h" # include "guestStoreClient.h" @@ -84,7 +89,7 @@ /* * The state of the global conf module. */ -static gGlobalConfEnabled = FALSE; +static gboolean gGlobalConfEnabled = FALSE; #endif @@ -103,6 +108,16 @@ static gGlobalConfEnabled = FALSE; static void ToolsCoreCleanup(ToolsServiceState *state) { +#if defined(_WIN32) + if (state->mainService) { + /* + * Shut down guestStore plugin first to prevent worker threads from being + * blocked in client lib synchronous recv() call. + */ + ToolsPluginSvcGuestStore_Shutdown(&state->ctx); + } +#endif + ToolsCorePool_Shutdown(&state->ctx); ToolsCore_UnloadPlugins(state); #if defined(__linux__) @@ -198,28 +213,6 @@ ToolsCoreConfFileCb(gpointer clientData) } -#if defined(_WIN32) -/** - * Callback TOOLS_CORE_SIG_GLOBALCONF_UPDATE signal. The signal is - * triggered whenever a new global configuration is downloaded. - * - * @param[in] src The source object. - * @param[in] ctx The ToolsAppCtx for passing config. - * @param[in] state Service state. - */ - -static void -ToolsCoreGlobalConfUpdateSignalCb(gpointer src, - ToolsAppCtx *ctx, - ToolsServiceState *state) -{ - g_debug("%s: global config is updated. Reloading the config.", __FUNCTION__); - - ToolsCore_ReloadConfigEx(state, FALSE, TRUE); -} -#endif - - /** * IO freeze signal handler. Disables the conf file check task if I/O is * frozen, re-enable it otherwise. See bug 529653. @@ -516,26 +509,15 @@ ToolsCoreRunLoop(ToolsServiceState *state) g_info("%s: Successfully started tools hang detector", __FUNCTION__); } + } + #if defined(_WIN32) - if (GlobalConfig_Start(&state->ctx)) { - g_info("%s: Successfully started global config module.", - __FUNCTION__); - if (g_signal_lookup(TOOLS_CORE_SIG_GLOBALCONF_UPDATE, - G_OBJECT_TYPE(state->ctx.serviceObj)) != 0) { - g_signal_connect(state->ctx.serviceObj, - TOOLS_CORE_SIG_GLOBALCONF_UPDATE, - G_CALLBACK(ToolsCoreGlobalConfUpdateSignalCb), - state); - g_debug("%s: Registered the handler for the " - "global config update signal.", __FUNCTION__); - gGlobalConfEnabled = TRUE; - } else { - g_debug("%s: Failed to register the handler for the " - "global config update signal", __FUNCTION__); - } - } -#endif + if (GlobalConfig_Start(&state->ctx)) { + g_info("%s: Successfully started global config module.", + __FUNCTION__); + gGlobalConfEnabled = TRUE; } +#endif g_main_loop_run(state->ctx.mainLoop); #endif @@ -669,35 +651,42 @@ ToolsCore_GetTcloName(ToolsServiceState *state) * * @param[in] state Service state. * @param[in] reset Whether to reset the logging subsystem. - * @param[in] force If TRUE, the config file will be loaded even if it - * has not been modified since the last check. */ void -ToolsCore_ReloadConfigEx(ToolsServiceState *state, - gboolean reset, - gboolean force) +ToolsCore_ReloadConfig(ToolsServiceState *state, + gboolean reset) { gboolean first = state->ctx.config == NULL; gboolean loaded; - if (force) { - /* - * Set the configMtime to 0 so that the config file from the file system - * is reloaded. Else, the config is loaded only if it's been modified - * since the last check. - */ - state->configMtime = 0; +#if defined(_WIN32) + gboolean globalConfLoaded = FALSE; + + if (gGlobalConfEnabled) { + globalConfLoaded = GlobalConfig_LoadConfig(&state->globalConfig, + &state->globalConfigMtime); + if (globalConfLoaded) { + /* + * Set the configMtime to 0 so that the config file from the file system + * is reloaded. Else, the config is loaded only if it's been modified + * since the last check. + */ + state->configMtime = 0; + } } +#endif loaded = VMTools_LoadConfig(state->configFile, G_KEY_FILE_NONE, &state->ctx.config, &state->configMtime); + #if defined(_WIN32) - if (gGlobalConfEnabled && (loaded || force)) { - gboolean globalConfigUpdated = GlobalConfig_Update(state->ctx.config); - loaded = loaded || globalConfigUpdated; + if (loaded || globalConfLoaded) { + gboolean configUpdated = VMTools_AddConfig(state->globalConfig, + state->ctx.config); + loaded = loaded || configUpdated; } #endif @@ -735,24 +724,6 @@ ToolsCore_ReloadConfigEx(ToolsServiceState *state, } -/** - * Reloads the config file and re-configure the logging subsystem if the - * log file was updated. If the config file is being loaded for the first - * time, try to upgrade it to the new version if an old version is - * detected. - * - * @param[in] state Service state. - * @param[in] reset Whether to reset the logging subsystem. - */ - -void -ToolsCore_ReloadConfig(ToolsServiceState *state, - gboolean reset) -{ - ToolsCore_ReloadConfigEx(state, reset, FALSE); -} - - #if defined(_WIN32) /** @@ -1200,6 +1171,8 @@ ToolsCore_Setup(ToolsServiceState *state) g_type_init(); state->ctx.serviceObj = g_object_new(TOOLSCORE_TYPE_SERVICE, NULL); + state->ctx.registerServiceProperty = + (RegisterServiceProperty)ToolsCoreService_RegisterProperty; /* Register the core properties. */ ToolsCoreService_RegisterProperty(state->ctx.serviceObj, diff --git a/open-vm-tools/services/vmtoolsd/toolsCoreInt.h b/open-vm-tools/services/vmtoolsd/toolsCoreInt.h index 6b9f38a29..fe5125a97 100644 --- a/open-vm-tools/services/vmtoolsd/toolsCoreInt.h +++ b/open-vm-tools/services/vmtoolsd/toolsCoreInt.h @@ -72,6 +72,10 @@ typedef struct ToolsServiceState { gchar *name; gchar *configFile; time_t configMtime; +#if defined(_WIN32) + GKeyFile *globalConfig; + time_t globalConfigMtime; +#endif guint configCheckTask; gboolean mainService; gboolean capsRegistered; @@ -143,11 +147,6 @@ void ToolsCore_ReloadConfig(ToolsServiceState *state, gboolean reset); -void -ToolsCore_ReloadConfigEx(ToolsServiceState *state, - gboolean reset, - gboolean force); - void ToolsCore_RegisterPlugins(ToolsServiceState *state); diff --git a/open-vm-tools/toolbox/l10n/de.vmsg b/open-vm-tools/toolbox/l10n/de.vmsg index f5e3b4e6f..599065108 100644 --- a/open-vm-tools/toolbox/l10n/de.vmsg +++ b/open-vm-tools/toolbox/l10n/de.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: Funktionen für die Hardwaregeräte der virtuellen Maschine help.disk = "%1$s: Führt Verkleinerungen von Festplatten durch\nNutzung: %2$s %3$s [Argumente]\n\nUnterbefehle:\n list: Auflisten der verfügbaren Speicherorte\n shrink : Löschen und Verkleinern eines Dateisystems am angegebenen Speicherort\n shrinkonly: Verkleinern alle Festplatten\n wipe : Löschen eines Dateisystems am angegebenen Speicherort\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "Siehe '%1$s %2$s%3$s%4$s' für weitere Informationen.\n" help.info = "%1$s: Aktualisieren von Gastbetriebssysteminformationen auf dem Host\nNutzung: %2$s %3$s update \n\nUnterbefehle:\n update < Infoklasse >: Aktualisieren von durch ermittelte Informationen\n< Infoklasse > kann 'network' sein\n" help.logging = "%1$s: Toolsprotokollierung verändern\nNutzung: %2$s %3$s level \n\nUnterbefehle:\n get : Anzeige der aktuellen Ebene\n set : Einrichten der aktuellen Ebene\n\n kann jeder unterstützte Dienst sein wie vmsvc oder vmusr\n kann für einen Fehler, ein kritisches Ereignis, eine Warnung, Info, Meldung oder ein Debugging stehen \n Standard ist %4$s\n" -help.main = "Nutzung: %1$s [Optionen] [Unterbefehl]\nWenn Sie Hilfe zu einem bestimmten Befehl benötigen, geben Sie '%2$s %3$s ' ein.\nGeben Sie '%4$s -v' ein, um die VMware Tools-Version anzuzeigen.\nVerwenden Sie die Option '-q' zum Unterdrücken der stdout-Ausgabe.\nFür die meisten Befehle gibt es Unterbefehle.\n\nVerfügbare Befehle:\n config\n device\n disk (nicht auf allen Betriebssystemen verfügbar)\n info\n logging\n script\n stat\n timesync\n upgrade (nicht auf allen Betriebssystemen verfügbar)\n" +help.main = "Nutzung: %1$s [Optionen] [Unterbefehl]\nWenn Sie Hilfe zu einem bestimmten Befehl benötigen, geben Sie '%2$s %3$s ' ein.\nGeben Sie '%4$s -v' ein, um die VMware Tools-Version anzuzeigen.\nVerwenden Sie die Option '-q' zum Unterdrücken der stdout-Ausgabe.\nFür die meisten Befehle gibt es Unterbefehle.\n\nVerfügbare Befehle:\n config\n device\n disk (nicht auf allen Betriebssystemen verfügbar)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade (nicht auf allen Betriebssystemen verfügbar)\n" help.script = "%1$s: Steuerung der Skripts, die als Reaktion auf Betriebsvorgänge ausgeführt werden\nNutzung: %2$s %3$s [Argumente]\n\nUnterbefehle:\n enable: Aktivieren des angegebenen Skripts und Wiederherstellen dessen Pfads auf den Standardpfad\n disable: Deaktivieren des vorhandenen Skripts\n set : Festlegen des angegebenen Skripts auf den angegebenen Pfad\n default: Ausgeben des Standardpfads des angegebenen Skripts\n current: Ausgeben des aktuellen Pfads des angegebenen Skripts\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: Funktionen für die Steuerung der Zeitsynchronisierung au help.upgrade = "%1$s: Funktionen für das Upgrade von VMware Tools.\nNutzung: %2$s %3$s [Argumente]\nUnterbefehle:\n status: Überprüfen des Upgrade-Status für VMware Tools.\n start: Starten eines automatischen Upgrade von VMware Tools.\n\nDamit die Upgrades funktionieren, muss der VMware Tools-Dienst ausgeführt werden.\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "Deaktiviert" option.enabled = "Aktiviert" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s ist nicht vorhanden.\n" script.operation = "Vorgang" diff --git a/open-vm-tools/toolbox/l10n/en.vmsg b/open-vm-tools/toolbox/l10n/en.vmsg index 01694ed52..1f53e9ad5 100644 --- a/open-vm-tools/toolbox/l10n/en.vmsg +++ b/open-vm-tools/toolbox/l10n/en.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: functions related to the virtual machine's hardware devices help.disk = "%1$s: perform disk shrink operations\nUsage: %2$s %3$s [args]\n\nSubcommands:\n list: list available locations\n shrink : wipes and shrinks a file system at the given location\n shrinkonly: shrinks all disks\n wipe : wipes a file system at the given location\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "Try '%1$s %2$s%3$s%4$s' for more information.\n" help.info = "%1$s: update guest information on the host\nUsage: %2$s %3$s update \n\nSubcommands:\n update : update information identified by \n can be 'network'\n" help.logging = "%1$s: modify tools logging\nUsage: %2$s %3$s level \n\nSubcommands:\n get : display current level\n set : set current level\n\n can be any supported service, such as vmsvc or vmusr\n can be one of error, critical, warning, info, message, debug\n default is %4$s\n" -help.main = "Usage: %1$s [options] [subcommand]\nType '%2$s %3$s ' for help on a specific command.\nType '%4$s -v' to see the VMware Tools version.\nUse '-q' option to suppress stdout output.\nMost commands take a subcommand.\n\nAvailable commands:\n config\n device\n disk (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade (not available on all operating systems)\n" +help.main = "Usage: %1$s [options] [subcommand]\nType '%2$s %3$s ' for help on a specific command.\nType '%4$s -v' to see the VMware Tools version.\nUse '-q' option to suppress stdout output.\nMost commands take a subcommand.\n\nAvailable commands:\n config\n device\n disk (not available on all operating systems)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade (not available on all operating systems)\n" help.script = "%1$s: control the scripts run in response to power operations\nUsage: %2$s %3$s [args]\n\nSubcommands:\n enable: enable the given script and restore its path to the default\n disable: disable the given script\n set : set the given script to the given path\n default: print the default path of the given script\n current: print the current path of the given script\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: functions for controlling time synchronization on the gue help.upgrade = "%1$s: functions related to upgrading VMware Tools.\nUsage: %2$s %3$s [args]\nSubcommands:\n status: check the VMware Tools upgrade status.\n start: initiate an auto-upgrade of VMware Tools.\n\nFor upgrades to work, the VMware Tools service needs to be running.\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "Disabled" option.enabled = "Enabled" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s doesn't exist.\n" script.operation = "operation" diff --git a/open-vm-tools/toolbox/l10n/es.vmsg b/open-vm-tools/toolbox/l10n/es.vmsg index ec16ad146..befe34171 100644 --- a/open-vm-tools/toolbox/l10n/es.vmsg +++ b/open-vm-tools/toolbox/l10n/es.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: funciones relacionadas con los dispositivos de hardware de help.disk = "%1$s: realizar operaciones de reducción de disco\nUso: %2$s %3$s [argumentos]\n\nSubcomandos:\n list: enumera las ubicaciones disponibles\n shrink : borra y reduce un sistema de archivos en la ubicación en cuestión\n shrinkonly: reduce todos los discos\n wipe : borra un sistema de archivos en la ubicación en cuestión\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "Pruebe '%1$s %2$s%3$s%4$s' para obtener más información.\n" help.info = "%1$s: actualiza la información del invitado en el host\nUso: %2$s %3$s actualiza \n\nSubcomandos:\n actualización : actualiza la información identificada por \n puede ser 'red'\n" help.logging = "%1$s: modifica el registro de herramientas\nUso: %2$s de nivel %3$s \n\nSubcomandos:\n get : muestra el nivel actual\n set : establece el nivel actual\n\n puede ser cualquier servicio admitido, como vmsvc o vmusr\n puede ser un error, un fallo crítico, una advertencia, una información, un mensaje o una depuración\n El valor predeterminado es %4$s\n" -help.main = "Uso: %1$s [opciones] [subcomando]\nEscriba '%2$s %3$s ' para obtener ayuda sobre un comando específico.\nEscriba '%4$s -v' para consultar la versión de VMware Tools.\nUtilice la opción '-q' para suprimir el resultado stdout.\La mayoría de comandos tiene un subcomando.\n\nComandos disponibles:\n config\n device\n disk (no disponible en todos los sistemas operativos)\n info\n logging\n script\n stat\n timesync\n upgrade (no disponible en todos los sistemas operativos)\n" +help.main = "Uso: %1$s [opciones] [subcomando]\nEscriba '%2$s %3$s ' para obtener ayuda sobre un comando específico.\nEscriba '%4$s -v' para consultar la versión de VMware Tools.\nUtilice la opción '-q' para suprimir el resultado stdout.\La mayoría de comandos tiene un subcomando.\n\nComandos disponibles:\n config\n device\n disk (no disponible en todos los sistemas operativos)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade (no disponible en todos los sistemas operativos)\n" help.script = "%1$s: controlar la ejecución de secuencias de comandos en respuesta a operaciones de encendido\nUso: %2$s %3$s [argumentos]\n\nSubcomandos:\n enable: habilita la secuencia de comandos en cuestión y restaura la ruta de acceso predeterminada\n disable: deshabilita la secuencia de comandos en cuestión\n set : establece la secuencia de comandos en cuestión en la ruta de acceso determinada\n default: imprime la ruta de acceso predeterminada de la secuencia de comandos en cuestión\n current: imprime la ruta de acceso actual de la secuencia de comandos en cuestión\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: funciones para controlar la sincronización horaria en el help.upgrade = "%1$s: funciones relacionadas con la actualización de VMware Tools.\nUso: %2$s %3$s [argumentos]\nSubcomandos:\n status: comprueba el estado de actualización de VMware Tools.\n start: inicia la actualización automática de VMware Tools.\n\nPara que funcionen las actualizaciones, debe ejecutarse el servicio de VMware Tools.\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "Desactivada" option.enabled = "Activada" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s no existe.\n" script.operation = "operación" diff --git a/open-vm-tools/toolbox/l10n/fr.vmsg b/open-vm-tools/toolbox/l10n/fr.vmsg index 30dd20b83..9ff9a7f88 100644 --- a/open-vm-tools/toolbox/l10n/fr.vmsg +++ b/open-vm-tools/toolbox/l10n/fr.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s : fonctions apparentées aux appareils matériels de la mac help.disk = "%1$s : effectue les opérations de réduction des disques\nSyntaxe : %2$s %3$s [args]\n\nSous-commandes :\n list : liste des emplacements disponibles\n shrink : efface et réduit un système de fichiers à l'emplacement donné\n shrinkonly : réduit tous les disques\n wipe : efface un système de fichiers à l'emplacement donné\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "Pour plus d'informations, essayez '%1$s %2$s%3$s%4$s'.\n" help.info = "%1$s : mettre à jour des informations d'invité sur l'hôte\nSyntaxe : %2$s %3$s met à jour \n\nSous-commandes :\n mettre à jour  : met à jour des informations identifiées par \n peut être 'réseau'\n" help.logging = "%1$s : modifier la journalisation des outils\nSyntaxe : niveau de %2$s %3$s \n\nSous-commandes :\n obtenir : affiche le niveau actuel\n définir : définit le niveau actuel\n\n peut être n’importe quel service pris en charge, tel que vmsvc ou vmusr\n peut être erreur, critique, avertissement, info, message, débogage\n la valeur par défaut est %4$s\n" -help.main = "Syntaxe : %1$s [options] [subcommand]\nPour obtenir de l'aide sur une commande spécifique, entrez '%2$s %3$s '.\nPour vérifier la version de VMware Tools, entrez '%4$s -v'.\nPour supprimer la sortie stdout, utilisez l'option '-q'.\nLa plupart des commandes ont une sous-commande.\n\nCommandes disponibles :\n config\n device\n disk (non disponible sur tous les systèmes d'exploitation)\n info\n logging\n script\n stat\n timesync\n upgrade (non disponible sur tous les systèmes d'exploitation)\n" +help.main = "Syntaxe : %1$s [options] [subcommand]\nPour obtenir de l'aide sur une commande spécifique, entrez '%2$s %3$s '.\nPour vérifier la version de VMware Tools, entrez '%4$s -v'.\nPour supprimer la sortie stdout, utilisez l'option '-q'.\nLa plupart des commandes ont une sous-commande.\n\nCommandes disponibles :\n config\n device\n disk (non disponible sur tous les systèmes d'exploitation)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade (non disponible sur tous les systèmes d'exploitation)\n" help.script = "%1$s : vérifie que le script s'exécute en réponse aux opérations d'alimentation\nSyntaxe : %2$s %3$s [args]\n\nSous-commandes :\n enable : active le script donné et restaure son chemin sur le chemin par défaut\n disable : désactive le script donné\n set : définit le script spécifique sur le chemin donné\n default : imprime le chemin par défaut du script donné\n current : imprime le chemin courant du script donné\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s : fonctions pour contrôler la synchronisation temporelle help.upgrade = "%1$s : fonctions en rapport avec la mise à niveau de VMware Tools.\nSyntaxe : %2$s %3$s [args]\nSous-commandes :\n status : vérifie le statut de mise à niveau de VMware Tools.\n start : initialise une mise à niveau automatique de VMware Tools.\n\nPour que les mises à niveau fonctionnent, le service VMware Tools doit être en cours d'exécution.\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "Désactivé" option.enabled = "Activé" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s n'existe pas.\n" script.operation = "opération" diff --git a/open-vm-tools/toolbox/l10n/it.vmsg b/open-vm-tools/toolbox/l10n/it.vmsg index d1d9feef0..404ac2e3c 100644 --- a/open-vm-tools/toolbox/l10n/it.vmsg +++ b/open-vm-tools/toolbox/l10n/it.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: funzioni relative ai dispositivi hardware della macchina vi help.disk = "%1$s: eseguire le operazioni di compattazione\nUtilizzo: %2$s %3$s [args]\n\nComandi secondari:\n elenco: elencare le posizioni disponibili\n compatta : pulisce e compatta un sistema di file nella posizione data\n compatta solo: compatta tutti i dischi\n pulisci : pulisce un sistema di file nella posizione data\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "Provare '%1$s %2$s%3$s%4$s' per ulteriori informazioni.\n" help.info = "%1$s: aggiornare informazioni guest su host\nUtilizzo: %2$s %3$s aggiorna \n\nComandi secondari:\n aggiorna : aggiornare informazioni identificate da \n può essere "rete"\n" help.logging = ""%1$s: modifica registrazione strumenti\nUso: %2$s %3$s livello \n\nComandi secondari:\n get : visualizza livello corrente\n set : imposta livello corrente\n\n può essere qualunque servizio supportato, come vmsvc o vmusr\n può essere selezionato tra errore, critico, avvertenza, informazione, messaggio, debug\n l'impostazione predefinita è %4$s\n"" -help.main = "Utilizzo: %1$s [opzioni] [comando secondario]\nDigitare "%2$s %3$s " per aiuto su un comando specifico.\nDigitare "%4$s -v" per vedere la versione di VMware Tools.\nUsare l'opzione "-q" per sopprimere l'uscita stdout.\nLa maggior parte dei comandi accetta un comando secondario.\n\nComandi disponibili:\n config\n dispositivo\n disco (non disponibile su tutti i sistemi operativi)\n info\n registrazione\n script\n stato\n timesync\n upgrade (non disponibile su tutti i sistemi operativi)\n" +help.main = "Utilizzo: %1$s [opzioni] [comando secondario]\nDigitare "%2$s %3$s " per aiuto su un comando specifico.\nDigitare "%4$s -v" per vedere la versione di VMware Tools.\nUsare l'opzione "-q" per sopprimere l'uscita stdout.\nLa maggior parte dei comandi accetta un comando secondario.\n\nComandi disponibili:\n config\n dispositivo\n disco (non disponibile su tutti i sistemi operativi)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n registrazione\n script\n stato\n timesync\n upgrade (non disponibile su tutti i sistemi operativi)\n" help.script = "%1$s: controllare gli script eseguiti in risposta alle operazioni di alimentazione\nUtilizzo: %2$s %3$s [args]\n\nComandi secondari:\n attiva: attivare lo script dato e ripristinare il suo percorso sul valore predefinito\n disabilita: disabilitare lo script dato\n imposta : impostare lo script dato sul percorso dato\n default: stampare il percorso predefinito dello script dato\n corrente: stampare il percorso corrente dello script dato\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: funzioni per il controllo di sincronizzazione dell'ora su help.upgrade = "%1$s: funzioni relative all'aggiornamento di VMware Tools.\nUtilizzo: %2$s %3$s [args]\nComandi secondari:\n stato: controllare lo stato di aggiornamento di VMware Tools.\n avvio: avviare un aggiornamento automatico di VMware Tools.\n\nPer il funzionamento degli aggiornamenti, il servizio VMware Tools deve essere in esecuzione.\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "Disabilitato" option.enabled = "Abilitata" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s inesistente.\n" script.operation = "operazione" diff --git a/open-vm-tools/toolbox/l10n/ja.vmsg b/open-vm-tools/toolbox/l10n/ja.vmsg index ea7256f9b..1025c95f4 100644 --- a/open-vm-tools/toolbox/l10n/ja.vmsg +++ b/open-vm-tools/toolbox/l10n/ja.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: 仮想マシンのハードウェア デバイスに関連 help.disk = "%1$s: ディスク圧縮操作を実行\n使用方法: %2$s %3$s <サブコマンド> [引数]\n\nサブコマンド:\n list: 使用可能な場所を一覧表示\n shrink <場所>: 指定された場所のファイル システムをワイプおよび圧縮\n shrinkonly: すべてのディスクを圧縮\n wipe <場所>: 指定された場所のファイル システムをワイプ\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "詳細については、「%1$s %2$s%3$s%4$s」を参照してください。\n" help.info = "%1$s: ホストのゲスト情報を更新します\n使用方法: %2$s %3$s update <情報カテゴリ>\n\nサブコマンド:\n update <情報カテゴリ>: <情報カテゴリ> で特定される情報を更新します\n<情報カテゴリ> には「network」を指定できます\n" help.logging = "%1$s: Tools ログを変更します\n使用法: %2$s %3$s level \n\nサブコマンド:\n の取得: 現在のレベルを表示します\n の設定: 現在のレベルを設定します\n\n は、vmsvc や vmusr などサポートされているサービスを指定できます\n は、エラー、クリティカル、警告、情報、メッセージ、デバッグのいずれかを指定できます\n デフォルトは %4$s です\n" -help.main = "使用方法: %1$s <コマンド> [オプション] [サブコマンド]\n「%2$s %3$s <コマンド>」と入力すると、そのコマンドのヘルプを表示できます。\nVMware Tools のバージョンを確認するには「%4$s -v」と入力します。.\nstdout 出力を抑止するには「-q」オプションを使用します。\nほとんどのコマンドではサブコマンドも使用されます。\n\n使用可能なコマンド: \n config\n device\n disk(オペレーティング システムによっては使用できない場合もあります)\n info\n logging\n script\n stat\n timesync\n upgrade(オペレーティング システムによっては使用できない場合もあります)\n" +help.main = "使用方法: %1$s <コマンド> [オプション] [サブコマンド]\n「%2$s %3$s <コマンド>」と入力すると、そのコマンドのヘルプを表示できます。\nVMware Tools のバージョンを確認するには「%4$s -v」と入力します。.\nstdout 出力を抑止するには「-q」オプションを使用します。\nほとんどのコマンドではサブコマンドも使用されます。\n\n使用可能なコマンド: \n config\n device\n disk(オペレーティング システムによっては使用できない場合もあります)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade(オペレーティング システムによっては使用できない場合もあります)\n" help.script = "%1$s: 電源操作に対応して実行されるスクリプトを制御\n使用方法: %2$s %3$s <サブコマンド> [引数]\n\nサブコマンド:\n enable: 指定されたスクリプトを有効にして、そのパスをデフォルトに復元\n disable: 指定されたスクリプトを無効にする\n set <フル パス>: 指定されたスクリプトを指定されたパスに設定\n default: 指定されたスクリプトのデフォルトのパスを出力\n current: 指定されたスクリプトの現在のパスを出力\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: ゲスト OS の時刻の同期を制御するための help.upgrade = "%1$s: VMware Tools のアップグレードに関連する機能。\n使用方法: %2$s %3$s <サブコマンド> [引数]\nサブコマンド:\n status: VMware Tools のアップグレード ステータスを確認\n start: VMware Tools の自動アップグレードを開始\n\nアップグレードが機能するには、VMware Tools サービスを実行している必要があります。\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "無効" option.enabled = "有効" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s は存在しません。\n" script.operation = "操作" diff --git a/open-vm-tools/toolbox/l10n/ko.vmsg b/open-vm-tools/toolbox/l10n/ko.vmsg index ac8897dba..8cc53fa19 100644 --- a/open-vm-tools/toolbox/l10n/ko.vmsg +++ b/open-vm-tools/toolbox/l10n/ko.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: 가상 시스템의 하드웨어 디바이스와 관련된 help.disk = "%1$s: 디스크 축소 작업을 수행합니다.\n사용법: %2$s %3$s <하위명령> [인수]\n\n하위 명령:\n list: 사용 가능한 위치를 나열합니다.\n shrink <위치>: 지정된 위치에서 파일 시스템을 지우고 축소합니다.\n shrinkonly: 모든 디스크를 축소합니다.\n wipe <위치>: 지정된 위치에서 파일 시스템을 지웁니다.\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "자세한 내용을 보려면 '%1$s %2$s%3$s%4$s'을(를) 시도해 보십시오.\n" help.info = "%1$s: 호스트에서 게스트 정보 업데이트\n사용법: %2$s %3$s 업데이트 <정보 클래스>\n\n하위 명령:\n update <정보 클래스>: <정보 클래스>에서 식별한 정보 업데이트\n<정보 클래스>는 '네트워크'일 수 있음\n" help.logging = "%1$s: 도구 로깅 수정\n사용: %2$s %3$s 수준 \n\n하위 명령:\n 가져오기: 현재 수준 표시\n 설정: 현재 수준 설정\n\n은 vmsvc 또는 vmusr과 같은 지원 서비스일 수 있습니다.\n은 오류, 중요, 경고, 정보, 메시지, 디버그 중 하나일 수 있습니다.\n 기본값은 %4$s입니다.\n" -help.main = "사용법: %1$s <명령> [옵션] [하위 명령]\n특정 명령에 대한 도움말을 보려면 '%2$s %3$s <명령>'을 입력하십시오.\nVMware Tools 버전을 확인하려면 '%4$s -v'를 입력하십시오.\nstdout 출력을 표시하지 않으려면 '-q' 옵션을 사용하십시오.\n대부분의 명령에 하위 명령이 사용됩니다.\n\n사용 가능한 명령:\n config\n device\n disk(일부 운영 체제에서만 사용할 수 있음)\n info\n logging\n script\n stat\n timesync\n upgrade(일부 운영 체제에서만 사용할 수 있음)\n" +help.main = "사용법: %1$s <명령> [옵션] [하위 명령]\n특정 명령에 대한 도움말을 보려면 '%2$s %3$s <명령>'을 입력하십시오.\nVMware Tools 버전을 확인하려면 '%4$s -v'를 입력하십시오.\nstdout 출력을 표시하지 않으려면 '-q' 옵션을 사용하십시오.\n대부분의 명령에 하위 명령이 사용됩니다.\n\n사용 가능한 명령:\n config\n device\n disk(일부 운영 체제에서만 사용할 수 있음)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade(일부 운영 체제에서만 사용할 수 있음)\n" help.script = "%1$s: 전원 작업에 대한 응답으로 실행되는 스크립트를 제어합니다.\n사용법: %2$s %3$s <하위 명령> [인수]\n\n하위 명령:\n enable: 지정된 스크립트가 사용되도록 설정하고 해당 경로를 기본값으로 복원합니다.\n disable: 지정된 스크립트가 사용되지 않도록 설정합니다.\n set <전체 경로>: 지정된 스크립트를 지정된 경로로 설정합니다.\n default: 지정된 스크립트의 기본 경로를 출력합니다.\n current: 지정된 스크립트의 현재 경로를 출력합니다.\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: 게스트 OS의 시간 동기화 제어 기능\n사용법 help.upgrade = "%1$s: VMware Tools 업그레이드와 관련된 기능입니다.\n사용법: %2$s %3$s <하위 명령> [인수]\n하위 명령:\n status: VMware Tools 업그레이드 상태를 확인합니다.\n start: VMware Tools의 자동 업그레이드를 시작합니다.\n\n업그레이드가 수행되려면 VMware Tools 서비스가 실행되어야 합니다.\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "사용 안 함" option.enabled = "사용" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s이(가) 없습니다.\n" script.operation = "작업" diff --git a/open-vm-tools/toolbox/l10n/zh_CN.vmsg b/open-vm-tools/toolbox/l10n/zh_CN.vmsg index 82e3253eb..7000942e5 100644 --- a/open-vm-tools/toolbox/l10n/zh_CN.vmsg +++ b/open-vm-tools/toolbox/l10n/zh_CN.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: 与虚拟机的硬件设备相关的功能\n用法: %2$s %3 help.disk = "%1$s: 执行磁盘压缩操作\n用法: %2$s %3$s <子命令> [参数]\n\n子命令:\n list: 列出可用的位置\n shrink <位置>: 擦除并压缩指定位置的文件系统\n shrinkonly: 压缩所有磁盘\n wipe <位置>: 擦除指定位置的文件系统\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "有关详细信息,请尝试“%1$s %2$s%3$s%4$s”。\n" help.info = "%1$s: 更新主机上的来宾信息\n用法: %2$s %3$s update <信息类>\n\n子命令:\n update <信息类>: 更新由 <信息类> 标识的信息\n<信息类> 可以为“network”\n" help.logging = ""%1$s: 修改 Tools 日志记录\n用法: %2$s %3$s level <子命令> <服务名> <级别>\n\n子命令:\n get <服务名>: 显示当前级别\n set <服务名> <级别>: 设置当前级别\n\n<服务名> 可以是受支持的任何服务,包括 vmsvc 或 vmusr\n<级别> 可以是 error、critical、warning、info、message 或 debug 中的一种\n 默认为 %4$s\n"" -help.main = "用法: %1$s <命令> [选项] [子命令]\n键入“%2$s %3$s <命令>”可获取有关特定命令的帮助。\n键入“%4$s -v”可查看 VMware Tools 版本。\n使用“-q”选项可取消 stdout 输出。\n大多数命令都有子命令。\n\n可用命令:\n config\n device\n disk (并非所有操作系统都支持)\n info\n logging\n script\n stat\n timesync\n upgrade (并非所有操作系统都支持)\n" +help.main = "用法: %1$s <命令> [选项] [子命令]\n键入“%2$s %3$s <命令>”可获取有关特定命令的帮助。\n键入“%4$s -v”可查看 VMware Tools 版本。\n使用“-q”选项可取消 stdout 输出。\n大多数命令都有子命令。\n\n可用命令:\n config\n device\n disk (并非所有操作系统都支持)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade (并非所有操作系统都支持)\n" help.script = "%1$s: 控制脚本运行以响应打开电源操作\n用法: %2$s %3$s <子命令> [参数]\n\n子命令:\n enable: 启用给定脚本,并将其路径恢复为默认值\n disable: 禁用给定脚本\n set <完整路径>: 将给定脚本设置为给定路径\n default: 打印给定脚本的默认路径\n current: 打印给定脚本的当前路径\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: 用于控制来宾操作系统上的时间同步的功能 help.upgrade = "%1$s: 与升级 VMware Tools 相关的功能。\n用法: %2$s %3$s <子命令> [参数]\n子命令:\n status: 检查 VMware Tools 升级状态。\n start: 启动 VMware Tools 自动升级。\n\n要使升级正常进行,需要运行 VMware Tools 服务。\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "已禁用" option.enabled = "已启用" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s 不存在。\n" script.operation = "操作" diff --git a/open-vm-tools/toolbox/l10n/zh_TW.vmsg b/open-vm-tools/toolbox/l10n/zh_TW.vmsg index 9a1d01bb6..fcee7f5b5 100644 --- a/open-vm-tools/toolbox/l10n/zh_TW.vmsg +++ b/open-vm-tools/toolbox/l10n/zh_TW.vmsg @@ -1,5 +1,5 @@ ########################################################## -# Copyright (C) 2010-2017 VMware, Inc. All rights reserved. +# Copyright (C) 2010-2017,2020 VMware, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published @@ -98,13 +98,17 @@ help.device = "%1$s: 與虛擬機器之硬體裝置相關的功能\n使用量: % help.disk = "%1$s: 執行磁碟壓縮作業\n使用量: %2$s %3$s [args]\n\n子命令:\n list: 列出可用位置\n shrink : 抹除和壓縮指定位置的檔案系統\n shrinkonly: 壓縮所有磁碟\n wipe : 抹除指定位置的檔案系統\n" +help.globalconf = "%1$s: Manage global configuration downloads from the GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n enable: Enable the global configuration module. (Tools service is restarted)\n disable: Disable the global configuration module (Tools service is restarted)\n refresh: Trigger a new download of the global configuration from the GuestStore\n status: Print the status of the global configuration module\n" + +help.gueststore = "%1$s: get resource content from GuestStore\nUsage: %2$s %3$s \n\nESX guests only subcommands:\n getcontent : get resource content from GuestStore and save to output file.\n\n starts with / and represents a unique resource in GuestStore.\n is the path of a file to save resource content to.\n" + help.hint = "如需詳細資訊,請嘗試「%1$s%2$s%3$s%4$s」。\n" help.info = "%1$s: 更新主機上的客體資訊\n使用方式: %2$s %3$s update <資訊類別>\n\n子命令:\n update <資訊類別>: 更新依 <資訊類別> 識別之資訊\n<資訊類別> 可為「network」\n" help.logging = "%1$s: 修改工具記錄\n使用量: %2$s %3$s 層級 \n\n子命令:\n 取得 : 顯示目前層級\n 設定 : 設定目前層級\n\n 可為任何受支援服務,例如 vmsvc 或 vmusr\n 可為錯誤、嚴重、警告 、資訊、訊息、偵錯其中一項\n 預設為 %4$s\n" -help.main = "使用量: %1$s <命令> [選項] [子命令]\n輸入「%2$s %3$s <命令>」以取得特定命令的說明。\n輸入「%4$s -v」以查看 VMware Tools 版本。\n使用「-q」選項以隱藏 stdout 輸出。\n大多數命令都有子命令。\n\n可用命令:\n config\n device\n disk (並非所有作業系統皆可使用)\n info\n logging\n script\n stat\n timesync\n upgrade (並非所有作業系統皆可使用)\n" +help.main = "使用量: %1$s <命令> [選項] [子命令]\n輸入「%2$s %3$s <命令>」以取得特定命令的說明。\n輸入「%4$s -v」以查看 VMware Tools 版本。\n使用「-q」選項以隱藏 stdout 輸出。\n大多數命令都有子命令。\n\n可用命令:\n config\n device\n disk (並非所有作業系統皆可使用)\n globalconf (not available on all operating systems)\n gueststore (not available on all operating systems)\n info\n logging\n script\n stat\n timesync\n upgrade (並非所有作業系統皆可使用)\n" help.script = "%1$s: 控制指令碼執行以回應電源作業\n使用量: %2$s %3$s [args]\n\n子命令:\n enable: 啟用指定指令碼,並將其路徑還原為預設值\n disable: 停用指定指令碼\n set : 將指定指令碼設定為指定路徑\n default: 列印指定指令碼的預設路徑\n current: 列印指定指令碼的目前路徑\n" @@ -114,10 +118,28 @@ help.timesync = "%1$s: 用於控制客體作業系統時間同步的功能\n使 help.upgrade = "%1$s: 與升級 VMware Tools 相關的功能。\n使用量: %2$s %3$s [args]\n子命令:\n status: 檢查 VMware Tools 升級狀態。\n start: 啟動 VMware Tools 自動升級。\n\n若要升級作業正常運作,需要執行 VMware Tools 服務。\n" +globalconf.start_vmtools = "%1$s: Starting the %2$s service.\n" + +globalconf.status = "The status of globalconf module is '%1$s'\n" + +globalconf.stop_vmtools = "%1$s: Stopping the %2$s service.\n" + +globalconf.update_config = "%1$s: Updating the Configuration.\n" + +gueststore.content_size = "Content size in bytes: " + +gueststore.error.client_lib = "'%1$s' failed, GuestStore client library error: %2$s.\n" + +gueststore.progress = "\rProgress: %1$d%%" + option.disabled = "已停用" option.enabled = "已啟用" +result.error.failed = "'%1$s' failed, check %2$s log for more information.\n" + +result.succeeded = "'%1$s' succeeded.\n" + script.notfound = "%1$s 不存在。\n" script.operation = "作業" diff --git a/open-vm-tools/toolbox/toolbox-cmd.c b/open-vm-tools/toolbox/toolbox-cmd.c index b0299ab31..9fedfdb45 100644 --- a/open-vm-tools/toolbox/toolbox-cmd.c +++ b/open-vm-tools/toolbox/toolbox-cmd.c @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2008-2019 VMware, Inc. All rights reserved. + * Copyright (C) 2008-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -100,9 +100,6 @@ ToolboxCmdHelp(const char *progName, * The commands table. * Must go after function declarations */ -#if defined(_WIN32) -#include "toolboxCmdTableWin32.h" -#else static CmdTable commands[] = { { "timesync", TimeSync_Command, TRUE, FALSE, TimeSync_Help}, { "script", Script_Command, FALSE, TRUE, Script_Help}, @@ -111,15 +108,19 @@ static CmdTable commands[] = { #endif { "stat", Stat_Command, TRUE, FALSE, Stat_Help}, { "device", Device_Command, TRUE, FALSE, Device_Help}, -#if defined(__linux__) && !defined(OPEN_VM_TOOLS) && !defined(USERWORLD) +#if defined(_WIN32) || \ + (defined(__linux__) && !defined(OPEN_VM_TOOLS) && !defined(USERWORLD)) { "upgrade", Upgrade_Command, TRUE, TRUE, Upgrade_Help}, + { "gueststore", GuestStore_Command, TRUE, FALSE, GuestStore_Help}, +#endif +#if defined(_WIN32) + { "globalconf", GlobalConf_Command, TRUE, TRUE, GlobalConf_Help}, #endif { "logging", Logging_Command, TRUE, TRUE, Logging_Help}, { "info", Info_Command, TRUE, TRUE, Info_Help}, { "config", Config_Command, TRUE, TRUE, Config_Help}, { "help", HelpCommand, FALSE, FALSE, ToolboxCmdHelp}, }; -#endif /* @@ -318,9 +319,6 @@ ToolsCmd_UnknownEntityError(const char *name, // IN: command name (argv[0]) *----------------------------------------------------------------------------- */ -#if defined(_WIN32) -#include "toolboxCmdHelpWin32.h" -#else static void ToolboxCmdHelp(const char *progName, // IN const char *cmd) // IN @@ -334,6 +332,8 @@ ToolboxCmdHelp(const char *progName, // IN " config\n" " device\n" " disk (not available on all operating systems)\n" + " globalconf (not available on all operating systems)\n" + " gueststore (not available on all operating systems)\n" " info\n" " logging\n" " script\n" @@ -342,7 +342,6 @@ ToolboxCmdHelp(const char *progName, // IN " upgrade (not available on all operating systems)\n"), progName, progName, cmd, progName); } -#endif /* diff --git a/open-vm-tools/toolbox/toolboxCmdInt.h b/open-vm-tools/toolbox/toolboxCmdInt.h index c251f4019..d2a868328 100644 --- a/open-vm-tools/toolbox/toolboxCmdInt.h +++ b/open-vm-tools/toolbox/toolboxCmdInt.h @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2008-2019 VMware, Inc. All rights reserved. + * Copyright (C) 2008-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -145,6 +145,11 @@ DECLARE_COMMAND(Config); #if defined(_WIN32) || \ (defined(__linux__) && !defined(OPEN_VM_TOOLS) && !defined(USERWORLD)) DECLARE_COMMAND(Upgrade); +DECLARE_COMMAND(GuestStore); +#endif + +#if defined(_WIN32) +DECLARE_COMMAND(GlobalConf) #endif #endif /*_TOOLBOX_CMD_H_*/