int str_check(const char *str, int allowed) { int i, n; if (!str) return 1; n = str_len(str); for (i = 0; i < n; i++) { if (allowed & CC_ALNUM && char_isalnum (str[i])) continue; if (allowed & CC_ALPHA && char_isalpha (str[i])) continue; if (allowed & CC_ASCII && char_isascii (str[i])) continue; if (allowed & CC_BLANK && char_isblank (str[i])) continue; if (allowed & CC_CNTRL && char_iscntrl (str[i])) continue; if (allowed & CC_DIGIT && char_isdigit (str[i])) continue; if (allowed & CC_GRAPH && char_isgraph (str[i])) continue; if (allowed & CC_LOWER && char_islower (str[i])) continue; if (allowed & CC_PRINT && char_isprint (str[i])) continue; if (allowed & CC_PUNCT && char_ispunct (str[i])) continue; if (allowed & CC_SPACE && char_isspace (str[i])) continue; if (allowed & CC_UPPER && char_isupper (str[i])) continue; if (allowed & CC_XDIGIT && char_isxdigit(str[i])) continue; return 0; } return 1; }
static int str_8bit_ispunct (const char *text) { return char_ispunct (text[0]); }