stty: fix option parsing bug (spotted by Sascha Hauer <s.hauer@pengutronix.de>)

This commit is contained in:
Denis Vlasenko 2007-04-19 19:55:54 +00:00
parent 05a6d9cbb2
commit 9ace613406

View File

@ -550,24 +550,25 @@ static const struct control_info *find_control(const char *name)
enum { enum {
param_need_arg = 0x80, param_need_arg = 0x80,
param_line = 1 | 0x80, param_line = 1 | 0x80,
param_rows = 2 | 0x80, param_rows = 2 | 0x80,
param_cols = 3 | 0x80, param_cols = 3 | 0x80,
param_size = 4, param_columns = 4 | 0x80,
param_speed = 5, param_size = 5,
param_ispeed = 6 | 0x80, param_speed = 6,
param_ospeed = 7 | 0x80, param_ispeed = 7 | 0x80,
param_ospeed = 8 | 0x80,
}; };
static int find_param(const char * const name) static int find_param(const char * const name)
{ {
static const char * const params[] = { static const char * const params[] = {
"line", "line", /* 1 */
"rows", "rows", /* 2 */
"cols", "cols", /* 3 */
"columns", "columns", /* 4 */
"size", /* 4 */ "size", /* 5 */
"speed", /* 5 */ "ispeed"+1, /* 6 */
"ispeed", "ispeed",
"ospeed", "ospeed",
NULL NULL
@ -575,9 +576,8 @@ static int find_param(const char * const name)
int i = index_in_str_array(params, name) + 1; int i = index_in_str_array(params, name) + 1;
if (i == 0) if (i == 0)
return 0; return 0;
if (!(i == 4 || i == 5)) if (i != 5 && i != 6)
i |= 0x80; i |= 0x80;
return i; return i;
} }
@ -1014,6 +1014,7 @@ int stty_main(int argc, char **argv)
#ifdef TIOCGWINSZ #ifdef TIOCGWINSZ
case param_rows: case param_rows:
case param_cols: case param_cols:
case param_columns:
xatoul_range_sfx(argnext, 1, INT_MAX, stty_suffixes); xatoul_range_sfx(argnext, 1, INT_MAX, stty_suffixes);
break; break;
case param_size: case param_size: