staging: speakup: i18n.c: Refactor conditionals in spk_msg_set
Reduce the indentation level in spk_msg_set and remove unnecessary return variable. Signed-off-by: Narcisa Ana Maria Vasile <narcisaanamaria12@gmail.com> Acked-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
eaeab71f27
commit
38081c7185
@ -541,34 +541,30 @@ static bool fmt_validate(char *template, char *user)
|
||||
*/
|
||||
ssize_t spk_msg_set(enum msg_index_t index, char *text, size_t length)
|
||||
{
|
||||
int rc = 0;
|
||||
char *newstr = NULL;
|
||||
unsigned long flags;
|
||||
|
||||
if ((index >= MSG_FIRST_INDEX) && (index < MSG_LAST_INDEX)) {
|
||||
newstr = kmalloc(length + 1, GFP_KERNEL);
|
||||
if (newstr) {
|
||||
memcpy(newstr, text, length);
|
||||
newstr[length] = '\0';
|
||||
if (index >= MSG_FORMATTED_START &&
|
||||
index <= MSG_FORMATTED_END &&
|
||||
!fmt_validate(speakup_default_msgs[index],
|
||||
newstr)) {
|
||||
kfree(newstr);
|
||||
return -EINVAL;
|
||||
}
|
||||
spin_lock_irqsave(&speakup_info.spinlock, flags);
|
||||
if (speakup_msgs[index] != speakup_default_msgs[index])
|
||||
kfree(speakup_msgs[index]);
|
||||
speakup_msgs[index] = newstr;
|
||||
spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
||||
} else {
|
||||
rc = -ENOMEM;
|
||||
}
|
||||
} else {
|
||||
rc = -EINVAL;
|
||||
if ((index < MSG_FIRST_INDEX) || (index >= MSG_LAST_INDEX))
|
||||
return -EINVAL;
|
||||
|
||||
newstr = kmalloc(length + 1, GFP_KERNEL);
|
||||
if (!newstr)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(newstr, text, length);
|
||||
newstr[length] = '\0';
|
||||
if (index >= MSG_FORMATTED_START &&
|
||||
index <= MSG_FORMATTED_END &&
|
||||
!fmt_validate(speakup_default_msgs[index], newstr)) {
|
||||
kfree(newstr);
|
||||
return -EINVAL;
|
||||
}
|
||||
return rc;
|
||||
spin_lock_irqsave(&speakup_info.spinlock, flags);
|
||||
if (speakup_msgs[index] != speakup_default_msgs[index])
|
||||
kfree(speakup_msgs[index]);
|
||||
speakup_msgs[index] = newstr;
|
||||
spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user