diff --git a/agetty-on-s390-on-dev-3270-tty1-line.patch b/agetty-on-s390-on-dev-3270-tty1-line.patch index b8ac68a..f40d71a 100644 --- a/agetty-on-s390-on-dev-3270-tty1-line.patch +++ b/agetty-on-s390-on-dev-3270-tty1-line.patch @@ -1,28 +1,29 @@ --- term-utils/agetty.c -+++ term-utils/agetty.c 2014-02-04 08:50:09.798235374 +0000 -@@ -571,6 +571,7 @@ static void login_options_to_argv(char * ++++ 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) { -+ char *ptr; - int c; - - enum { -@@ -745,8 +746,16 @@ static void parse_args(int argc, char ** - usage(stderr); +@@ -746,7 +748,7 @@ static void parse_args(int argc, char ** } -+ c = asprintf(&ptr, "/dev/%s", argv[optind]); -+ if (c < 0) -+ log_err(_("failed to allocate memory: %m")); -+ -+ c = access(ptr, F_OK); -+ free(ptr); -+ errno = 0; -+ /* Accept "tty", "baudrate tty", and "tty baudrate". */ - if ('0' <= argv[optind][0] && argv[optind][0] <= '9') { -+ if (c < 0) { ++ 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");