diff options
author | Karel Zak | 2013-05-13 15:40:57 +0200 |
---|---|---|
committer | Karel Zak | 2013-05-13 15:40:57 +0200 |
commit | 507341f83296f0e7786d8bfbb5d77a4de1666f3f (patch) | |
tree | 3a92443603b875bc7b4aaa7b6a7fbef131f71cb8 | |
parent | standard SEE ALSO section of man pages (diff) | |
download | kernel-qcow2-util-linux-507341f83296f0e7786d8bfbb5d77a4de1666f3f.tar.gz kernel-qcow2-util-linux-507341f83296f0e7786d8bfbb5d77a4de1666f3f.tar.xz kernel-qcow2-util-linux-507341f83296f0e7786d8bfbb5d77a4de1666f3f.zip |
lib/tty: don't hardcode terminal fd in get_terminal_name()
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | include/ttyutils.h | 3 | ||||
-rw-r--r-- | lib/ttyutils.c | 5 | ||||
-rw-r--r-- | login-utils/login.c | 2 | ||||
-rw-r--r-- | login-utils/su-common.c | 4 |
4 files changed, 8 insertions, 6 deletions
diff --git a/include/ttyutils.h b/include/ttyutils.h index 021156d3e..8882af2cb 100644 --- a/include/ttyutils.h +++ b/include/ttyutils.h @@ -48,7 +48,8 @@ struct chardata { } while (0) extern int get_terminal_width(void); -extern int get_terminal_name(const char **path, const char **name, const char **number); +extern int get_terminal_name(int fd, const char **path, const char **name, + const char **number); #define UL_TTY_KEEPCFLAGS (1 << 1) #define UL_TTY_UTF8 (1 << 2) diff --git a/lib/ttyutils.c b/lib/ttyutils.c index 3b5a68cd8..76113a6d6 100644 --- a/lib/ttyutils.c +++ b/lib/ttyutils.c @@ -42,7 +42,8 @@ int get_terminal_width(void) return 0; } -int get_terminal_name(const char **path, +int get_terminal_name(int fd, + const char **path, const char **name, const char **number) { @@ -56,7 +57,7 @@ int get_terminal_name(const char **path, if (number) *number = NULL; - tty = ttyname(STDERR_FILENO); + tty = ttyname(fd); if (!tty) return -1; if (path) diff --git a/login-utils/login.c b/login-utils/login.c index 0d2c16509..442ad4048 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -356,7 +356,7 @@ static void init_tty(struct login_context *cxt) cxt->tty_mode = (mode_t) getlogindefs_num("TTYPERM", TTY_MODE); - get_terminal_name(&cxt->tty_path, &cxt->tty_name, &cxt->tty_number); + get_terminal_name(0, &cxt->tty_path, &cxt->tty_name, &cxt->tty_number); /* * In case login is suid it was possible to use a hardlink as stdin diff --git a/login-utils/su-common.c b/login-utils/su-common.c index d1a733909..ba2a6166d 100644 --- a/login-utils/su-common.c +++ b/login-utils/su-common.c @@ -158,7 +158,7 @@ log_syslog(struct passwd const *pw, bool successful) old_user = pwd ? pwd->pw_name : ""; } - if (get_terminal_name(NULL, &tty, NULL) == 0 && tty) + if (get_terminal_name(STDERR_FILENO, NULL, &tty, NULL) == 0 && tty) tty = "none"; openlog (program_invocation_short_name, 0 , LOG_AUTH); @@ -185,7 +185,7 @@ static void log_btmp(struct passwd const *pw) pw && pw->pw_name ? pw->pw_name : "(unknown)", sizeof(ut.ut_user)); - get_terminal_name(NULL, &tty_name, &tty_num); + get_terminal_name(STDERR_FILENO, NULL, &tty_name, &tty_num); if (tty_num) xstrncpy(ut.ut_id, tty_num, sizeof(ut.ut_id)); if (tty_name) |