#include "toolboxCmdInt.h"
#include "toolboxcmd_version.h"
#include "system.h"
+#include "vmware/tools/guestrpc.h"
#include "vmware/tools/i18n.h"
#include "vmware/tools/utils.h"
{ 0, 0, 0, 0 } };
#endif
+static gboolean gQuiet = FALSE;
static const char *options = "hqv";
/*
{ "disk", Disk_Command, TRUE, TRUE, Disk_Help},
{ "stat", Stat_Command, TRUE, FALSE, Stat_Help},
{ "device", Device_Command, TRUE, FALSE, Device_Help},
+#if (defined(_WIN32) || defined(linux)) && !defined(OPEN_VM_TOOLS)
+ { "upgrade", Upgrade_Command, TRUE, FALSE, Upgrade_Help},
+#endif
{ "help", HelpCommand, FALSE, FALSE, ToolboxCmdHelp},
};
}
+/*
+ *-----------------------------------------------------------------------------
+ *
+ * ToolsCmd_Print --
+ *
+ * Prints a message to stdout unless quiet output was requested.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+void
+ToolsCmd_Print(const char *fmt,
+ ...)
+{
+ if (!gQuiet) {
+ gchar *str;
+ va_list args;
+
+ va_start(args, fmt);
+ g_vasprintf(&str, fmt, args);
+ va_end(args);
+
+ g_print(str);
+ g_free(str);
+ }
+}
+
+
+/*
+ *-----------------------------------------------------------------------------
+ *
+ * ToolsCmd_PrintErr --
+ *
+ * Prints a message to stderr unless quiet output was requested.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+void
+ToolsCmd_PrintErr(const char *fmt,
+ ...)
+{
+ if (!gQuiet) {
+ gchar *str;
+ va_list args;
+
+ va_start(args, fmt);
+ g_vasprintf(&str, fmt, args);
+ va_end(args);
+
+ g_printerr(str);
+ g_free(str);
+ }
+}
+
+
+/*
+ *-----------------------------------------------------------------------------
+ *
+ * ToolsCmd_SendRPC --
+ *
+ * Sends an RPC message to the host.
+ *
+ * Results:
+ * The return value from the RPC.
+ *
+ * Side effects:
+ * None.
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+gboolean
+ToolsCmd_SendRPC(const char *rpc, // IN
+ size_t rpcLen, // IN
+ char **result, // OUT
+ size_t *resultLen) // OUT
+{
+ RpcChannel *chan = BackdoorChannel_New();
+ gboolean ret = RpcChannel_Start(chan);
+
+ if (!ret) {
+ g_warning("Error starting RPC channel.");
+ goto exit;
+ }
+
+ ret = RpcChannel_Send(chan, (char *) rpc, rpcLen, result, resultLen);
+
+exit:
+ RpcChannel_Destroy(chan);
+ return ret;
+}
+
+
/*
*-----------------------------------------------------------------------------
*
" disk\n"
" script\n"
" stat\n"
- " timesync\n\n"
+ " timesync\n"
+ " upgrade (not available on all operating systems)\n"
+ "\n"
"For additional information please visit http://www.vmware.com/support/\n\n"),
progName, progName, cmd, progName);
}
CmdTable *cmd = NULL;
int c;
int retval;
- gboolean quiet = FALSE;
setlocale(LC_ALL, "");
VMTools_ConfigLogging("toolboxcmd", NULL, FALSE, FALSE);
break;
case 'q':
- quiet = TRUE;
+ gQuiet = TRUE;
break;
case '?':
ToolsCmd_MissingEntityError(argv[0], SU_(arg.subcommand, "subcommand"));
retval = EX_USAGE;
} else {
- retval = cmd->func(argv, argc, quiet);
+ retval = cmd->func(argv, argc, gQuiet);
}
if (retval == EX_USAGE && (cmd == NULL || strcmp(cmd->command, "help"))) {
#include "toolboxCmdInt.h"
#include "rpcout.h"
+#include "vmware/guestrpc/tclodefs.h"
#include "vmware/tools/i18n.h"
#ifndef _WIN32
char *result;
size_t resultLen;
- if (RpcOut_sendOne(&result, &resultLen, "disk.shrink")) {
+ if (ToolsCmd_SendRPC(DISK_SHRINK_CMD, sizeof DISK_SHRINK_CMD - 1,
+ &result, &resultLen)) {
if (!quiet) {
printf("\nDisk shrinking complete\n");
}
goto out;
}
- fprintf(stderr, "%s\n", result);
+ fprintf(stderr, "\n%s\n", result);
}
fprintf(stderr, "Shrinking not completed\n");