diff options
| author | Ethan Sommer <e5ten.arch@gmail.com> | 2020-04-27 16:50:56 -0400 | 
|---|---|---|
| committer | Rob Landley <rob@landley.net> | 2020-05-08 15:28:45 -0500 | 
| commit | 9c72f3136e9f5840a429a839da1313554bcc6c81 (patch) | |
| tree | 7e31ee8c9ca9585677c2c34c528eab20253b04c7 | |
| parent | 4761d756dde03e62de0c3f3d7f25067a4f207fa3 (diff) | |
| download | toybox-9c72f3136e9f5840a429a839da1313554bcc6c81.tar.gz | |
stty.c: fix interpreting output of stty -g
move case checking for stty -g output as input above case checking for
an int argument, so atoi doesn't cause "500:5:bf:8a3b:3"... to be
considered an int argument of 500
| -rw-r--r-- | toys/pending/stty.c | 26 | 
1 files changed, 13 insertions, 13 deletions
| diff --git a/toys/pending/stty.c b/toys/pending/stty.c index df12526b..4ab6b805 100644 --- a/toys/pending/stty.c +++ b/toys/pending/stty.c @@ -332,18 +332,6 @@ static void do_stty()        else if (!strcmp(arg, "line")) new.c_line = get_arg(&i, N_TTY, NR_LDISCS);        else if (!strcmp(arg, "min")) new.c_cc[VMIN] = get_arg(&i, 0, 255);        else if (!strcmp(arg, "time")) new.c_cc[VTIME] = get_arg(&i, 0, 255); -      else if (atoi(arg) > 0) { -        int new_speed = speed(atolx_range(arg, 0, 4000000)); - -        cfsetispeed(&new, new_speed); -        cfsetospeed(&new, new_speed); -      } else if (!strcmp(arg, "ispeed")) -        cfsetispeed(&new, speed(get_arg(&i, 0, 4000000))); -      else if (!strcmp(arg, "ospeed")) -        cfsetospeed(&new, speed(get_arg(&i, 0, 4000000))); -      else if (!strcmp(arg, "rows")) set_size(1, get_arg(&i, 0, USHRT_MAX)); -      else if (!strcmp(arg, "cols") || !strcmp(arg, "columns")) -        set_size(0, get_arg(&i, 0, USHRT_MAX));        else if (sscanf(arg, "%x:%x:%x:%x:%n", &new.c_iflag, &new.c_oflag,                          &new.c_cflag, &new.c_lflag, &n) == 4)        { @@ -355,7 +343,19 @@ static void do_stty()            new.c_cc[j] = value;            arg += n+1;          } -      } else if (set_special_character(&new, &i, arg)); +      } else if (atoi(arg) > 0) { +        int new_speed = speed(atolx_range(arg, 0, 4000000)); + +        cfsetispeed(&new, new_speed); +        cfsetospeed(&new, new_speed); +      } else if (!strcmp(arg, "ispeed")) +        cfsetispeed(&new, speed(get_arg(&i, 0, 4000000))); +      else if (!strcmp(arg, "ospeed")) +        cfsetospeed(&new, speed(get_arg(&i, 0, 4000000))); +      else if (!strcmp(arg, "rows")) set_size(1, get_arg(&i, 0, USHRT_MAX)); +      else if (!strcmp(arg, "cols") || !strcmp(arg, "columns")) +        set_size(0, get_arg(&i, 0, USHRT_MAX)); +      else if (set_special_character(&new, &i, arg));          // Already done as a side effect.        else if (!strcmp(arg, "cooked"))          set_options(&new, "brkint", "ignpar", "istrip", "icrnl", "ixon", | 
