len = E_SET;
value = simple_strtol(cp, NULL, 10);
ret = spk_set_num_var(value, param, len);
- if (ret == E_RANGE) {
+ if (ret == -ERANGE) {
var_data = param->data;
pr_warn("value for %s out of range, expect %d to %d\n",
attr->attr.name,
cp = (char *) buf;
cp[len] = '\0';
ret = spk_set_string_var(buf, param, len);
- if (ret == E_TOOLONG)
+ if (ret == -E2BIG)
pr_warn("value too long for %s\n",
attr->attr.name);
break;
}
spk_unlock(flags);
- if (ret == SET_DEFAULT)
+ if (ret == -ERESTART)
pr_info("%s reset to default value\n", attr->attr.name);
return count;
}
#define IS_CHAR(x, type) (spk_chartab[((u_char)x)]&type)
#define IS_TYPE(x, type) ((spk_chartab[((u_char)x)]&type) == type)
-#define SET_DEFAULT -4
-#define E_RANGE -3
-#define E_TOOLONG -2
-#define E_UNDEF -1
-
extern int speakup_thread(void *data);
extern void spk_reset_default_chars(void);
extern void spk_reset_default_chartab(void);
char buf[32];
char *cp;
struct var_t *var_data = var->data;
+
if (var_data == NULL)
- return E_UNDEF;
+ return -ENODATA;
if (how == E_NEW_DEFAULT) {
if (input < var_data->u.n.low || input > var_data->u.n.high)
- ret = E_RANGE;
- else
- var_data->u.n.default_val = input;
- return ret;
+ return -ERANGE;
+ var_data->u.n.default_val = input;
+ return 0;
}
if (how == E_DEFAULT) {
val = var_data->u.n.default_val;
- ret = SET_DEFAULT;
+ ret = -ERESTART;
} else {
if (how == E_SET)
val = input;
else if (how == E_DEC)
val -= input;
if (val < var_data->u.n.low || val > var_data->u.n.high)
- return E_RANGE;
+ return -ERANGE;
}
var_data->u.n.value = val;
if (var->var_type == VAR_TIME && p_val != NULL) {
int spk_set_string_var(const char *page, struct st_var_header *var, int len)
{
- int ret = 0;
struct var_t *var_data = var->data;
+
if (var_data == NULL)
- return E_UNDEF;
+ return -ENODATA;
if (len > MAXVARLEN)
- return -E_TOOLONG;
+ return -E2BIG;
if (!len) {
if (!var_data->u.s.default_val)
return 0;
- ret = SET_DEFAULT;
if (!var->p_val)
var->p_val = var_data->u.s.default_val;
if (var->p_val != var_data->u.s.default_val)
strcpy((char *)var->p_val, var_data->u.s.default_val);
+ return -ERESTART;
} else if (var->p_val)
strcpy((char *)var->p_val, page);
else
- return -E_TOOLONG;
- return ret;
+ return -E2BIG;
+ return 0;
}
/* spk_set_mask_bits sets or clears the punc/delim/repeat bits,