diff options
Diffstat (limited to 'drivers/staging/speakup/main.c')
| -rw-r--r-- | drivers/staging/speakup/main.c | 23 | 
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/staging/speakup/main.c b/drivers/staging/speakup/main.c index 14079c4949a..7de79d59a4c 100644 --- a/drivers/staging/speakup/main.c +++ b/drivers/staging/speakup/main.c @@ -37,8 +37,6 @@  #include <linux/input.h>  #include <linux/kmod.h> -#include <linux/bootmem.h>	/* for alloc_bootmem */ -  /* speakup_*_selection */  #include <linux/module.h>  #include <linux/sched.h> @@ -90,7 +88,7 @@ const struct st_bits_data spk_punc_info[] = {  	{"repeats", "()", CH_RPT},  	{"extended numeric", "", B_EXNUM},  	{"symbols", "", B_SYM}, -	{0, 0} +	{NULL, NULL}  };  static char mark_cut_flag; @@ -1857,8 +1855,9 @@ static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u_short key)  {  	static u_char goto_buf[8];  	static int num; -	int maxlen, go_pos; +	int maxlen;  	char *cp; +  	if (type == KT_SPKUP && ch == SPEAKUP_GOTO)  		goto do_goto;  	if (type == KT_LATIN && ch == '\n') @@ -1893,25 +1892,24 @@ oops:  		spk_special_handler = NULL;  		return 1;  	} -	go_pos = kstrtol(goto_buf, 10, (long *)&cp); -	goto_pos = (u_long) go_pos; + +	goto_pos = simple_strtoul(goto_buf, &cp, 10); +  	if (*cp == 'x') {  		if (*goto_buf < '0')  			goto_pos += spk_x; -		else +		else if (goto_pos > 0)  			goto_pos--; -		if (goto_pos < 0) -			goto_pos = 0; +  		if (goto_pos >= vc->vc_cols)  			goto_pos = vc->vc_cols - 1;  		goto_x = 1;  	} else {  		if (*goto_buf < '0')  			goto_pos += spk_y; -		else +		else if (goto_pos > 0)  			goto_pos--; -		if (goto_pos < 0) -			goto_pos = 0; +  		if (goto_pos >= vc->vc_rows)  			goto_pos = vc->vc_rows - 1;  		goto_x = 0; @@ -2220,6 +2218,7 @@ static void __exit speakup_exit(void)  	unregister_keyboard_notifier(&keyboard_notifier_block);  	unregister_vt_notifier(&vt_notifier_block);  	speakup_unregister_devsynth(); +	speakup_cancel_paste();  	del_timer(&cursor_timer);  	kthread_stop(speakup_task);  	speakup_task = NULL;  | 
