VMGuestLibError VMGuestLib_OpenHandle(VMGuestLibHandle *handle) // OUT { VMGuestLibHandleType *data; VMTools_SetGuestSDKMode(); if (!VmCheck_IsVirtualWorld()) { Debug("VMGuestLib_OpenHandle: Not in a VM.\n"); return VMGUESTLIB_ERROR_NOT_RUNNING_IN_VM; } if (NULL == handle) { return VMGUESTLIB_ERROR_INVALID_ARG; } data = Util_SafeCalloc(1, sizeof *data); if (!data) { Debug("VMGuestLib_OpenHandle: Unable to allocate memory\n"); return VMGUESTLIB_ERROR_MEMORY; } *handle = (VMGuestLibHandle)data; return VMGUESTLIB_ERROR_SUCCESS; }
void ToolsCore_Setup(ToolsServiceState *state) { GMainContext *gctx; ToolsServiceProperty ctxProp = { TOOLS_CORE_PROP_CTX }; if (!g_thread_supported()) { g_thread_init(NULL); } ToolsCore_ReloadConfig(state, FALSE); /* * Useful for debugging purposes. Log the vesion and build information. */ g_message("Tools Version: %s (%s)\n", TOOLS_VERSION_EXT_CURRENT_STR, BUILD_NUMBER); /* Initializes the app context. */ gctx = g_main_context_default(); state->ctx.version = TOOLS_CORE_API_V1; state->ctx.name = state->name; state->ctx.errorCode = EXIT_SUCCESS; #if defined(__APPLE__) /* * Mac OS doesn't use g_main_loop_run(), so need to create the loop as * "running". */ state->ctx.mainLoop = g_main_loop_new(gctx, TRUE); #else state->ctx.mainLoop = g_main_loop_new(gctx, FALSE); #endif state->ctx.isVMware = VmCheck_IsVirtualWorld(); g_main_context_unref(gctx); g_type_init(); state->ctx.serviceObj = g_object_new(TOOLSCORE_TYPE_SERVICE, NULL); /* Register the core properties. */ ToolsCoreService_RegisterProperty(state->ctx.serviceObj, &ctxProp); g_object_set(state->ctx.serviceObj, TOOLS_CORE_PROP_CTX, &state->ctx, NULL); ToolsCorePool_Init(&state->ctx); /* Initializes the debug library if needed. */ if (state->debugPlugin != NULL) { ToolsCoreInitializeDebug(state); } }
static Bool HgfsClient_Init(void) { Bool success = FALSE; GKeyFile *conf = NULL; VMTools_LoadConfig(NULL, G_KEY_FILE_NONE, &conf, NULL); VMTools_ConfigLogging("hgfsclient", conf, FALSE, FALSE); if (conf != NULL) { g_key_file_free(conf); conf = NULL; } if (!VmCheck_IsVirtualWorld()) { Warning("This application must be run in a Virtual Machine.\n"); goto out; } /* Setup an HGFS channel and packet buffer. */ gChannel = HgfsBd_GetChannel(); if (gChannel == NULL) { Warning("Failed to create RPC channel\n"); goto out; } gPacketBuffer = HgfsBd_GetBuf(); if (gPacketBuffer == NULL) { Warning("Failed to create packet buffer\n"); goto out; } /* Find out if HGFS is enabled in the VMX. */ if (!HgfsBd_Enabled(gChannel, gPacketBuffer)) { Warning("HGFS is disabled in the host\n"); goto out; } success = TRUE; out: if (!success) { HgfsClient_Cleanup(); } return success; }
main(int argc, // IN: length of command line arguments char **argv) // IN: Command line arguments #endif { Bool show_help = FALSE; Bool show_version = FALSE; CmdTable *cmd = NULL; GKeyFile *conf = NULL; int c; int retval = EXIT_FAILURE; #if defined(_WIN32) char **argv; Unicode_InitW(argc, wargv, NULL, &argv, NULL); #else Unicode_Init(argc, &argv, NULL); #endif setlocale(LC_ALL, ""); VMTools_LoadConfig(NULL, G_KEY_FILE_NONE, &conf, NULL); VMTools_ConfigLogging("toolboxcmd", conf, FALSE, FALSE); VMTools_BindTextDomain(VMW_TEXT_DOMAIN, NULL, NULL); /* * Check if we are in a VM */ if (!VmCheck_IsVirtualWorld()) { g_printerr(SU_(error.novirtual, "%s must be run inside a virtual machine.\n"), argv[0]); goto exit; } /* * Parse the command line optional arguments */ while (1) { int option_index = 0; c = getopt_long(argc, argv, options, long_options, &option_index); /* Detect the end of the options. */ if (c == -1) { break; } switch (c) { case 'h': show_help = TRUE; break; case 'v': show_version = TRUE; break; case 'q': gQuiet = TRUE; break; case '?': /* getopt_long already printed an error message. */ g_printerr(SU_(help.hint, "Try '%s %s%s%s' for more information.\n"), argv[0], "-h", "", ""); goto exit; default: goto exit; } } if (show_version) { g_print("%s (%s)\n", TOOLBOXCMD_VERSION_STRING, BUILD_NUMBER); retval = EXIT_SUCCESS; } else if (show_help) { ToolboxCmdHelp(argv[0], "help"); retval = EXIT_SUCCESS; } else { /* Process any remaining command line arguments (not options), and * execute corresponding command */ if (optind >= argc) { ToolsCmd_MissingEntityError(argv[0], SU_(arg.command, "command")); retval = EX_USAGE; } else if ((cmd = ParseCommand(argv, argc)) == NULL) { ToolsCmd_UnknownEntityError(argv[0], SU_(arg.command, "command"), argv[optind]); retval = EX_USAGE; } else if (cmd->requireRoot && !System_IsUserAdmin()) { #if defined(_WIN32) g_printerr(SU_(error.noadmin.win, "%s: Administrator permissions are needed to perform %s operations.\n" "Use an administrator command prompt to complete these tasks.\n"), argv[0], cmd->command); #else g_printerr(SU_(error.noadmin.posix, "%s: You must be root to perform %s operations.\n"), argv[0], cmd->command); #endif retval = EX_NOPERM; } else if (cmd->requireArguments && ++optind >= argc) { ToolsCmd_MissingEntityError(argv[0], SU_(arg.subcommand, "subcommand")); retval = EX_USAGE; } else { retval = cmd->func(argv, argc, gQuiet); } if (retval == EX_USAGE && (cmd == NULL || strcmp(cmd->command, "help"))) { g_printerr(SU_(help.hint, "Try '%s %s%s%s' for more information.\n"), argv[0], "help", cmd ? " " : "", cmd ? cmd->command : ""); } } exit: if (conf != NULL) { g_key_file_free(conf); } return retval; }