static gboolean VmBackupStart(RpcInData *data) { g_debug("*** %s\n", __FUNCTION__); if (gBackupState != NULL) { return RPCIN_SETRETVALS(data, "Quiesce operation already in progress.", FALSE); } gBackupState = g_new0(VmBackupState, 1); if (data->argsSize > 0) { int generateManifests = 0; uint32 index = 0; if (StrUtil_GetNextIntToken(&generateManifests, &index, data->args, " ")) { gBackupState->generateManifests = generateManifests; } gBackupState->quiesceApps = TRUE; gBackupState->quiesceFS = TRUE; gBackupState->allowHWProvider = TRUE; gBackupState->execScripts = TRUE; gBackupState->scriptArg = NULL; gBackupState->timeout = 0; /* get volume uuids if provided */ if (data->args[index] != '\0') { gBackupState->volumes = g_strndup(data->args + index, data->argsSize - index); } } return VmBackupStartCommon(data, FALSE); }
static Bool ParseTtl(const char *option, // IN: option string along with value HgfsMountInfo *mountInfo, // OUT: mount data int *flags) // OUT: mount flags { Bool success = FALSE; unsigned int idx = 0; char *optString; int32 ttl; ASSERT(option); ASSERT(mountInfo); ASSERT(flags); /* Figure where value starts, we don't need result, just index. */ optString = StrUtil_GetNextToken(&idx, option, "="); ASSERT(optString); if (StrUtil_GetNextIntToken(&ttl, &idx, option, "=") && ttl >= 0) { LOG("Setting maximum attribute TTL to %u\n", ttl); mountInfo->ttl = ttl; success = TRUE; } else { LOG("Error getting the value for ttl\n"); } free(optString); return success; }
static Bool ResolutionCanSet(void) { ResolutionInfoX11Type *resInfoX = &resolutionInfoX11; FileIODescriptor fd; FileIOResult res; int64 filePos = 0; Bool keepSearching = TRUE; Bool found = FALSE; char buf[sizeof VERSION_STRING + 10]; // size of VERSION_STRING plus some extra for the version number const char versionString[] = VERSION_STRING; size_t bytesRead; int32 major, minor, level; unsigned int tokPos; /* See if the randr X module is loaded */ if (!XRRQueryVersion(resInfoX->display, &major, &minor) ) { return FALSE; } #ifndef NO_MULTIMON /* * See if RandR >= 1.2 can be used: The extension version is high enough and * all output names match the expected format. */ if (major > 1 || (major == 1 && minor >= 2)) { XRRScreenResources* xrrRes; XRROutputInfo* xrrOutput; unsigned int num; int i; xrrRes = XRRGetScreenResources(resInfoX->display, resInfoX->rootWindow); if (xrrRes) { for (i = 0; i < xrrRes->noutput; i++) { xrrOutput = XRRGetOutputInfo(resInfoX->display, xrrRes, xrrRes->outputs[i]); if (!xrrOutput) { break; } if (sscanf(xrrOutput->name, RR12_OUTPUT_FORMAT, &num) != 1 || num < 1) { XRRFreeOutputInfo(xrrOutput); break; } XRRFreeOutputInfo(xrrOutput); } if (i == xrrRes->noutput) { resInfoX->canUseRandR12 = TRUE; } else { g_debug("RandR >= 1.2 not usable\n"); } XRRFreeScreenResources(xrrRes); } if (resInfoX->canUseRandR12) { return TRUE; } } #endif // ifndef NO_MULTIMON /* * See if the VMWARE_CTRL extension is supported. */ if (resInfoX->canUseVMwareCtrl) { return TRUE; } /* * XXX: This check does not work with XOrg 6.9/7.0 for two reasons: Both * versions now use .so for the driver extension and 7.0 moves the drivers * to a completely different directory. As long as we ship a driver for * 6.9/7.0, we can instead just use the VMWARE_CTRL check. */ buf[sizeof buf - 1] = '\0'; FileIO_Invalidate(&fd); res = FileIO_Open(&fd, VMWAREDRV_PATH_64, FILEIO_ACCESS_READ, FILEIO_OPEN); if (res != FILEIO_SUCCESS) { res = FileIO_Open(&fd, VMWAREDRV_PATH, FILEIO_ACCESS_READ, FILEIO_OPEN); } if (res == FILEIO_SUCCESS) { /* * One of the opens succeeded, so start searching thru the file. */ while (keepSearching) { res = FileIO_Read(&fd, buf, sizeof buf - 1, &bytesRead); if (res != FILEIO_SUCCESS || bytesRead < sizeof buf -1 ) { keepSearching = FALSE; } else { if (Str_Strncmp(versionString, buf, sizeof versionString - 1) == 0) { keepSearching = FALSE; found = TRUE; } } filePos = FileIO_Seek(&fd, filePos+1, FILEIO_SEEK_BEGIN); if (filePos == -1) { keepSearching = FALSE; } } FileIO_Close(&fd); if (found) { /* * We NUL-terminated buf earlier, but Coverity really wants it to * be NUL-terminated after the call to FileIO_Read (because * FileIO_Read doesn't NUL-terminate). So we'll do it again. */ buf[sizeof buf - 1] = '\0'; /* * Try and parse the major, minor and level versions */ tokPos = sizeof versionString - 1; if (!StrUtil_GetNextIntToken(&major, &tokPos, buf, ".- ")) { return FALSE; } if (!StrUtil_GetNextIntToken(&minor, &tokPos, buf, ".- ")) { return FALSE; } if (!StrUtil_GetNextIntToken(&level, &tokPos, buf, ".- ")) { return FALSE; } return ((major > 10) || (major == 10 && minor >= 11)); } } return FALSE; }