patch by Stuart Hughes <seh@zee2.com> and Guenter <lists@gknw.net> to make "0" a special baud rate for getty where it uses this as "leave baud rate unchanged"
diff --git a/loginutils/getty.c b/loginutils/getty.c
index 467316f..0398ea3 100644
--- a/loginutils/getty.c
+++ b/loginutils/getty.c
@@ -163,8 +163,14 @@
 	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");