/** Check that the string does not contain any non-graphic characters. */ static bool checkGraphic(const char *pcszName, const char *pcszValue) { const char *pcch = pcszValue; for (; *pcch; ++pcch) { if (!RT_C_IS_GRAPH(*pcch)) { RTStrmPrintf(g_pStdErr, "%s: invalid character after \"%.*s\".\n", pcszName, pcch - pcszValue, pcszValue); return false; } } return true; }
static void test3(void) { RTTestISub("> 127"); for (int ch = 128; ch < 2000000; ch++) { RTTESTI_CHECK(!RT_C_IS_CNTRL(ch)); RTTESTI_CHECK(!RT_C_IS_SPACE(ch)); RTTESTI_CHECK(!RT_C_IS_BLANK(ch)); RTTESTI_CHECK(!RT_C_IS_PRINT(ch)); RTTESTI_CHECK(!RT_C_IS_PUNCT(ch)); RTTESTI_CHECK(!RT_C_IS_GRAPH(ch)); RTTESTI_CHECK(!RT_C_IS_DIGIT(ch)); RTTESTI_CHECK(!RT_C_IS_XDIGIT(ch)); RTTESTI_CHECK(!RT_C_IS_ODIGIT(ch)); RTTESTI_CHECK(!RT_C_IS_ALPHA(ch)); RTTESTI_CHECK(!RT_C_IS_UPPER(ch)); RTTESTI_CHECK(!RT_C_IS_LOWER(ch)); } }
static void test2(void) { RTTestISub("< 0"); for (int ch = -1; ch > -2000000; ch--) { RTTESTI_CHECK(!RT_C_IS_CNTRL(ch)); RTTESTI_CHECK(!RT_C_IS_SPACE(ch)); RTTESTI_CHECK(!RT_C_IS_BLANK(ch)); RTTESTI_CHECK(!RT_C_IS_PRINT(ch)); RTTESTI_CHECK(!RT_C_IS_PUNCT(ch)); RTTESTI_CHECK(!RT_C_IS_GRAPH(ch)); RTTESTI_CHECK(!RT_C_IS_DIGIT(ch)); RTTESTI_CHECK(!RT_C_IS_XDIGIT(ch)); RTTESTI_CHECK(!RT_C_IS_ODIGIT(ch)); RTTESTI_CHECK(!RT_C_IS_ALPHA(ch)); RTTESTI_CHECK(!RT_C_IS_UPPER(ch)); RTTESTI_CHECK(!RT_C_IS_LOWER(ch)); } }
RTDECL(RTEXITCODE) RTGetOptPrintError(int ch, PCRTGETOPTUNION pValueUnion) { if (ch == VINF_GETOPT_NOT_OPTION) RTMsgError("Invalid parameter: %s", pValueUnion->psz); else if (ch > 0) { if (RT_C_IS_GRAPH(ch)) RTMsgError("Unhandled option: -%c", ch); else RTMsgError("Unhandled option: %i (%#x)", ch, ch); } else if (ch == VERR_GETOPT_UNKNOWN_OPTION) RTMsgError("Unknown option: '%s'", pValueUnion->psz); else if (pValueUnion->pDef) RTMsgError("%s: %Rrs\n", pValueUnion->pDef->pszLong, ch); else RTMsgError("%Rrs\n", ch); return RTEXITCODE_SYNTAX; }
int GuestEnvironment::Set(const Utf8Str &strKey, const Utf8Str &strValue) { /** @todo Do some validation using regex. */ if (strKey.isEmpty()) return VERR_INVALID_PARAMETER; int rc = VINF_SUCCESS; const char *pszString = strKey.c_str(); while (*pszString != '\0' && RT_SUCCESS(rc)) { if ( !RT_C_IS_ALNUM(*pszString) && !RT_C_IS_GRAPH(*pszString)) rc = VERR_INVALID_PARAMETER; *pszString++; } if (RT_SUCCESS(rc)) mEnvironment[strKey] = strValue; return rc; }
RTDECL(RTEXITCODE) RTGetOptPrintError(int ch, PCRTGETOPTUNION pValueUnion) { if (ch == VINF_GETOPT_NOT_OPTION) RTMsgError("Invalid parameter: %s", pValueUnion->psz); else if (ch > 0) { if (RT_C_IS_GRAPH(ch)) RTMsgError("Unhandled option: -%c", ch); else RTMsgError("Unhandled option: %i (%#x)", ch, ch); } else if (ch == VERR_GETOPT_UNKNOWN_OPTION) RTMsgError("Unknown option: '%s'", pValueUnion->psz); else if (pValueUnion->pDef && ch == VERR_GETOPT_INVALID_ARGUMENT_FORMAT) /** @todo r=klaus not really ideal, as the value isn't available */ RTMsgError("The value given '%s' has an invalid format.", pValueUnion->pDef->pszLong); else if (pValueUnion->pDef) RTMsgError("%s: %Rrs\n", pValueUnion->pDef->pszLong, ch); else RTMsgError("%Rrs\n", ch); return RTEXITCODE_SYNTAX; }
RTDECL(ssize_t) RTGetOptFormatError(char *pszBuf, size_t cbBuf, int ch, PCRTGETOPTUNION pValueUnion) { ssize_t cchRet; if (ch == VINF_GETOPT_NOT_OPTION) cchRet = RTStrPrintf2(pszBuf, cbBuf, "Invalid parameter: %s", pValueUnion->psz); else if (ch > 0) { if (RT_C_IS_GRAPH(ch)) cchRet = RTStrPrintf2(pszBuf, cbBuf, "Unhandled option: -%c", ch); else cchRet = RTStrPrintf2(pszBuf, cbBuf, "Unhandled option: %i (%#x)", ch, ch); } else if (ch == VERR_GETOPT_UNKNOWN_OPTION) cchRet = RTStrPrintf2(pszBuf, cbBuf, "Unknown option: '%s'", pValueUnion->psz); else if (pValueUnion->pDef && ch == VERR_GETOPT_INVALID_ARGUMENT_FORMAT) /** @todo r=klaus not really ideal, as the value isn't available */ cchRet = RTStrPrintf2(pszBuf, cbBuf, "The value given '%s' has an invalid format.", pValueUnion->pDef->pszLong); else if (pValueUnion->pDef) cchRet = RTStrPrintf2(pszBuf, cbBuf, "%s: %Rrs\n", pValueUnion->pDef->pszLong, ch); else cchRet = RTStrPrintf2(pszBuf, cbBuf, "%Rrs\n", ch); return cchRet; }