forked from pool/util-linux
30 lines
938 B
Diff
30 lines
938 B
Diff
--- term-utils/agetty.c
|
|
+++ term-utils/agetty.c 2014-02-04 09:28:32.564461786 +0000
|
|
@@ -568,6 +568,8 @@ static void login_options_to_argv(char *
|
|
*argc = i;
|
|
}
|
|
|
|
+#define is_speed(str) (strlen((str)) == strspn((str), "0123456789,"))
|
|
+
|
|
/* Parse command-line arguments. */
|
|
static void parse_args(int argc, char **argv, struct options *op)
|
|
{
|
|
@@ -746,7 +748,7 @@ static void parse_args(int argc, char **
|
|
}
|
|
|
|
/* Accept "tty", "baudrate tty", and "tty baudrate". */
|
|
- if ('0' <= argv[optind][0] && argv[optind][0] <= '9') {
|
|
+ if (is_speed(argv[optind])) {
|
|
/* Assume BSD style speed. */
|
|
parse_speeds(op, argv[optind++]);
|
|
if (argc < optind + 1) {
|
|
@@ -758,7 +760,7 @@ static void parse_args(int argc, char **
|
|
op->tty = argv[optind++];
|
|
if (argc > optind) {
|
|
char *v = argv[optind++];
|
|
- if ('0' <= *v && *v <= '9')
|
|
+ if (is_speed(*v))
|
|
parse_speeds(op, v);
|
|
else
|
|
op->speeds[op->numspeed++] = bcode("9600");
|