--- 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");