static RTEXITCODE tstRTPipe4Child(const char *pszPipe) { int rc = RTR3InitExeNoArguments(0); if (RT_FAILURE(rc)) return RTMsgInitFailure(rc); int64_t iNative; rc = RTStrToInt64Full(pszPipe, 10, &iNative); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTStrToUInt64Full(%s) -> %Rrc\n", pszPipe, rc); RTPIPE hPipe; rc = RTPipeFromNative(&hPipe, (RTHCINTPTR)iNative, RTPIPE_N_WRITE); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTPipeFromNative(,%s,WRITE) -> %Rrc\n", pszPipe, rc); rc = RTPipeWriteBlocking(hPipe, g_szTest4Message, sizeof(g_szTest4Message) - 1, NULL); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTPipeWriteBlocking() -> %Rrc\n", rc); rc = RTPipeClose(hPipe); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTPipeClose() -> %Rrc\n", rc); return RTEXITCODE_SUCCESS; }
DECLINLINE(int) tftpSessionParseAndMarkOption(const char *pcszRawOption, PTFPTPSESSIONOPTDESC pTftpSessionOption) { int rc = VINF_SUCCESS; rc = RTStrToInt64Full(pcszRawOption, 0, (int64_t *)&pTftpSessionOption->u64Value); AssertRCReturn(rc, rc); pTftpSessionOption->fRequested = 1; return rc; }
static int dt_opt_runtime(dtrace_hdl_t *dtp, const char *arg, uintptr_t option) { #ifndef VBOX char *end; #endif dtrace_optval_t val = 0; int i; const struct { char *positive; char *negative; } couples[] = { { "yes", "no" }, { "enable", "disable" }, { "enabled", "disabled" }, { "true", "false" }, { "on", "off" }, { "set", "unset" }, { NULL } }; if (arg != NULL) { if (arg[0] == '\0') { val = DTRACEOPT_UNSET; goto out; } for (i = 0; couples[i].positive != NULL; i++) { if (strcasecmp(couples[i].positive, arg) == 0) { val = 1; goto out; } if (strcasecmp(couples[i].negative, arg) == 0) { val = DTRACEOPT_UNSET; goto out; } } #ifndef VBOX errno = 0; val = strtoull(arg, &end, 0); if (*end != '\0' || errno != 0 || val < 0) return (dt_set_errno(dtp, EDT_BADOPTVAL)); #else i = RTStrToInt64Full(arg, 0, &val); if (i != VINF_SUCCESS) return (dt_set_errno(dtp, EDT_BADOPTVAL)); #endif } out: dtp->dt_options[option] = val; return (0); }
static RTEXITCODE tstRTPipe5Child(const char *pszPipe) { int rc = RTR3InitExeNoArguments(0); if (RT_FAILURE(rc)) return RTMsgInitFailure(rc); int64_t iNative; rc = RTStrToInt64Full(pszPipe, 10, &iNative); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTStrToUInt64Full(%s) -> %Rrc\n", pszPipe, rc); RTPIPE hPipe; rc = RTPipeFromNative(&hPipe, (RTHCINTPTR)iNative, RTPIPE_N_READ); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTPipeFromNative(,%s,READ) -> %Rrc\n", pszPipe, rc); /// char szTmp[1024]; size_t cbRead = 0; rc = RTPipeReadBlocking(hPipe, szTmp, sizeof(szTmp) - 1, &cbRead); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTPipeReadBlocking() -> %Rrc\n", rc); szTmp[cbRead] = '\0'; size_t cbRead2; char szTmp2[4]; rc = RTPipeReadBlocking(hPipe, szTmp2, sizeof(szTmp2), &cbRead2); if (rc != VERR_BROKEN_PIPE) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTPipeReadBlocking() -> %Rrc instead of VERR_BROKEN_PIPE\n", rc); rc = RTPipeClose(hPipe); if (RT_FAILURE(rc)) return RTMsgErrorExit(RTEXITCODE_FAILURE, "RTPipeClose() -> %Rrc\n", rc); if (memcmp(szTmp, g_szTest5Message, sizeof(g_szTest5Message))) return RTMsgErrorExit(RTEXITCODE_FAILURE, "Message mismatch.\n:Expected '%s'\nGot '%s'\n", g_szTest5Message, szTmp); return RTEXITCODE_SUCCESS; }
static int dt_optval_parse(const char *arg, dtrace_optval_t *rval) { dtrace_optval_t mul = 1; size_t len; char *end; #ifdef VBOX int rc; #endif len = strlen(arg); #ifndef VBOX errno = 0; #endif switch (arg[len - 1]) { case 't': case 'T': mul *= 1024; /*FALLTHRU*/ case 'g': case 'G': mul *= 1024; /*FALLTHRU*/ case 'm': case 'M': mul *= 1024; /*FALLTHRU*/ case 'k': case 'K': mul *= 1024; /*FALLTHRU*/ default: break; } #ifndef VBOX errno = 0; *rval = strtoull(arg, &end, 0) * mul; if ((mul > 1 && end != &arg[len - 1]) || (mul == 1 && *end != '\0') || *rval < 0 || errno != 0) return (-1); #else *rval = -1; if (mul == 1) { rc = RTStrToInt64Full(arg, 0, rval); if (rc != VINF_SUCCESS || *rval < 0) return (-1); } else { rc = RTStrToInt64Ex(arg, &end, 0, rval); if ( rc != VWRN_TRAILING_CHARS || end != &arg[len - 1] || *rval < 0) return (-1); *rval *= mul; if (*rval < 0) return (-1); } #endif return (0); }