Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a48f88b authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Greg Kroah-Hartman
Browse files

staging: speakup: use native error codes



The mapping as follows:
	E_RANGE		-> ERANGE
	E_UNDEF		-> ENODATA
	E_TOOLONG	-> E2BIG
	SET_DEFAULT	-> ERESTART

As a side effect it fixes a bug in spk_var_store() where return code was
mistakenly compared to negative value instead of positive.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1627ab92
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -619,7 +619,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
			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,
@@ -637,7 +637,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
		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;
@@ -670,7 +670,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
	}
	spk_unlock(flags);

	if (ret == SET_DEFAULT)
	if (ret == -ERESTART)
		pr_info("%s reset to default value\n", attr->attr.name);
	return count;
}
+0 −5
Original line number Diff line number Diff line
@@ -44,11 +44,6 @@
#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);
+13 −13
Original line number Diff line number Diff line
@@ -184,19 +184,19 @@ int spk_set_num_var(int input, struct st_var_header *var, int how)
	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
			return -ERANGE;
		var_data->u.n.default_val = input;
		return ret;
		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;
@@ -207,7 +207,7 @@ int spk_set_num_var(int input, struct st_var_header *var, int how)
		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) {
@@ -246,25 +246,25 @@ int spk_set_num_var(int input, struct st_var_header *var, int how)

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,