valType_t val_str2type(const char *str) { wuKeyFlag_t flag = str2flag(str, valTypeDesc); if (flag == WULIB_FLAG_INVALID) return invType; return (valType_t)flag; }
static int ana_flags(int arg_number) { NODE *tmp, *array, *elm, *value; int i; int flag; int flags = 0; array = (NODE *) get_array_argument(arg_number, FALSE); if ( array != NULL ) { for (i = 0; i < array->array_size; i++) { for (elm = array->var_array[i]; elm != NULL; elm = elm->ahnext) { flag = str2flag(elm->hname); if (flag) { value = elm->hvalue; force_string(value); if (value->stptr[0] != '0' && value->stptr[0] != '\0') { flags |= flag; } } } } } else { tmp = (NODE *) get_scalar_argument(arg_number, FALSE); if (tmp->stptr[0] == '\0') { flags |= SA_RESTART; /* システムコールが中止しない */ } else { //TODO; } } return 0; }
uint64_t tokparse(char *caps, uint64_t (*str2flag) (char *inputstr)) { uint64_t flags = 0; char *tok; for (tok = strtok(caps, "|"); tok != NULL; tok = strtok(NULL, "|")) flags |= str2flag(tok); return flags; }
static int tokparse(char *caps, int (*str2flag)(char *, uint64_t *), uint64_t *flags) { uint64_t value; char *tok; int ret; for (tok = strtok(caps, "|"); tok != NULL; tok = strtok(NULL, "|")) { ret = str2flag(tok, &value); if (ret) return ret; *flags |= value; } return 0; }