patch by Stuart Hughes <seh@zee2.com> and Guenter <lists@gknw.net> to make "0" a...
authorMike Frysinger <vapier@gentoo.org>
Thu, 9 Apr 2009 07:08:04 +0000 (07:08 -0000)
committerMike Frysinger <vapier@gentoo.org>
Thu, 9 Apr 2009 07:08:04 +0000 (07:08 -0000)
loginutils/getty.c

index 467316fb80a621ada7ce6d3efa8234c7babee27c..0398ea3f983147d17992a7063061ef1b48fae563 100644 (file)
@@ -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");