aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--loginutils/getty.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/loginutils/getty.c b/loginutils/getty.c
index 467316fb8..0398ea3f9 100644
--- a/loginutils/getty.c
+++ b/loginutils/getty.c
@@ -163,8 +163,14 @@ static void parse_speeds(struct options *op, char *arg)
debug("entered parse_speeds\n");
while ((cp = strsep(&arg, ",")) != NULL) {
op->speeds[op->numspeed] = bcode(cp);
- if (op->speeds[op->numspeed] <= 0)
+ if (op->speeds[op->numspeed] < 0)
bb_error_msg_and_die("bad speed: %s", cp);
+ else if (op->speeds[op->numspeed] == 0) {
+ struct termios tio;
+ if (tcgetattr(1, &tio) != 0)
+ bb_error_msg_and_die("auto baudrate detection failed");
+ op->speeds[op->numspeed] = cfgetospeed(&tio);
+ }
op->numspeed++;
if (op->numspeed > MAX_SPEED)
bb_error_msg_and_die("too many alternate speeds");