diff options
Diffstat (limited to 'nonsystemd/util-linux/0001-agetty-resolve-tty-name-even-if-stdin-is-specified.patch')
-rw-r--r-- | nonsystemd/util-linux/0001-agetty-resolve-tty-name-even-if-stdin-is-specified.patch | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/nonsystemd/util-linux/0001-agetty-resolve-tty-name-even-if-stdin-is-specified.patch b/nonsystemd/util-linux/0001-agetty-resolve-tty-name-even-if-stdin-is-specified.patch deleted file mode 100644 index 4f317b034..000000000 --- a/nonsystemd/util-linux/0001-agetty-resolve-tty-name-even-if-stdin-is-specified.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 47831cc02ac0d71c335caecef1753f4c8861277c Mon Sep 17 00:00:00 2001 -From: tamz <totemz@protonmail.com> -Date: Thu, 6 Jan 2022 11:56:58 +0100 -Subject: [PATCH 1/1] agetty: resolve tty name even if stdin is specified - -[kzak@redhat.com: - use "const" for options->tty (and friends) - as expected by get_terminal_name()] - -Addresses: https://github.com/util-linux/util-linux/issues/1546 -Signed-off-by: tamz <totemz@protonmail.com> -Signed-off-by: Karel Zak <kzak@redhat.com> ---- - term-utils/agetty.c | 26 ++++++++++++++++++-------- - 1 file changed, 18 insertions(+), 8 deletions(-) - -diff --git a/term-utils/agetty.c b/term-utils/agetty.c -index 55d373461..22850786d 100644 ---- a/term-utils/agetty.c -+++ b/term-utils/agetty.c -@@ -190,8 +190,8 @@ struct options { - char *chroot; /* Chroot before the login */ - char *login; /* login program */ - char *logopt; /* options for login program */ -- char *tty; /* name of tty */ -- char *vcline; /* line of virtual console */ -+ const char *tty; /* name of tty */ -+ const char *vcline; /* line of virtual console */ - char *term; /* terminal type */ - char *initstring; /* modem init string */ - char *issue; /* alternative issue file or directory */ -@@ -203,6 +203,7 @@ struct options { - int numspeed; /* number of baud rates to try */ - int clocal; /* CLOCAL_MODE_* */ - int kbmode; /* Keyboard mode if virtual console */ -+ int tty_is_stdin; /* is the tty the standard input stream */ - speed_t speeds[MAX_SPEED]; /* baud rates to be tried */ - }; - -@@ -319,7 +320,7 @@ static void init_special_char(char* arg, struct options *op); - static void parse_args(int argc, char **argv, struct options *op); - static void parse_speeds(struct options *op, char *arg); - static void update_utmp(struct options *op); --static void open_tty(char *tty, struct termios *tp, struct options *op); -+static void open_tty(const char *tty, struct termios *tp, struct options *op); - static void termio_init(struct options *op, struct termios *tp); - static void reset_vc(const struct options *op, struct termios *tp, int canon); - static void auto_baud(struct termios *tp); -@@ -922,6 +923,15 @@ static void parse_args(int argc, char **argv, struct options *op) - } - } - -+ /* resolve the tty path in case it was provided as stdin */ -+ if (strcmp(op->tty, "-") == 0) { -+ op->tty_is_stdin = 1; -+ int fd = get_terminal_name(NULL, &op->tty, NULL); -+ if (fd < 0) { -+ log_warn(_("could not get terminal name: %d"), fd); -+ } -+ } -+ - /* On virtual console remember the line which is used for */ - if (strncmp(op->tty, "tty", 3) == 0 && - strspn(op->tty + 3, "0123456789") == strlen(op->tty+3)) -@@ -962,8 +972,8 @@ static void update_utmp(struct options *op) - time_t t; - pid_t pid = getpid(); - pid_t sid = getsid(0); -- char *vcline = op->vcline; -- char *line = op->tty; -+ const char *vcline = op->vcline; -+ const char *line = op->tty; - struct utmpx *utp; - - /* -@@ -1002,7 +1012,7 @@ static void update_utmp(struct options *op) - str2memcpy(ut.ut_id, vcline, sizeof(ut.ut_id)); - else { - size_t len = strlen(line); -- char * ptr; -+ const char * ptr; - if (len >= sizeof(ut.ut_id)) - ptr = line + len - sizeof(ut.ut_id); - else -@@ -1030,7 +1040,7 @@ static void update_utmp(struct options *op) - #endif /* SYSV_STYLE */ - - /* Set up tty as stdin, stdout & stderr. */ --static void open_tty(char *tty, struct termios *tp, struct options *op) -+static void open_tty(const char *tty, struct termios *tp, struct options *op) - { - const pid_t pid = getpid(); - int closed = 0; -@@ -1040,7 +1050,7 @@ static void open_tty(char *tty, struct termios *tp, struct options *op) - - /* Set up new standard input, unless we are given an already opened port. */ - -- if (strcmp(tty, "-") != 0) { -+ if (!op->tty_is_stdin) { - char buf[PATH_MAX+1]; - struct group *gr = NULL; - struct stat st; --- -2.34.1 - |