#include #include #include #include uint8_t gargoyle_from_bool(struct gargoyle_optn *opt, const char *brand, const char *neg, uint16_t neg_sz, gargoyle_flag_type flags) { if(opt->val) { uint8_t *val = opt->val; *val = !gargoyle_cmp(brand, neg, neg_sz, flags); } return GARGOYLE_ERR_SUCCESS; } uint8_t gargoyle_from_rope(struct gargoyle_optn *opt, const char *brand_val, gargoyle_flag_type flags) { if(opt->type & GARGOYLE_TYPE_UINT) { char *end = NULL; uint64_t *val = opt->val; *val = strtoull(brand_val, &end, 10); if(*end) { return GARGOYLE_ERR_INVALID_UINT; } } else if(opt->type & GARGOYLE_TYPE_SINT) { char *end = NULL; int64_t *val = opt->val; *val = strtoll(brand_val, &end, 10); if(*end) { return GARGOYLE_ERR_INVALID_SINT; } } else if(opt->type & GARGOYLE_TYPE_DBLE) { char *end = NULL; double *val = opt->val; *val = strtod(brand_val, &end); if(*end) { return GARGOYLE_ERR_INVALID_DBLE; } } else if(opt->type & GARGOYLE_TYPE_ROPE) { char *val = opt->val; gargoyle_cpy(val, brand_val, opt->val_sz, flags | GARGOYLE_FLG_FILL0); } else { return GARGOYLE_ERR_UNKNOWN_TYPE; } return GARGOYLE_ERR_SUCCESS; }