lib/ttyutils: introduce get_terminal_stdfd()
Let's use separate function to detect what is the current terminal. Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
ebd13d3fc5
commit
a6d9d23b5f
|
@ -95,6 +95,8 @@
|
|||
#define _PATH_PROC_GIDMAP "/proc/self/gid_map"
|
||||
#define _PATH_PROC_SETGROUPS "/proc/self/setgroups"
|
||||
|
||||
#define _PATH_PROC_FDDIR "/proc/self/fd"
|
||||
|
||||
#define _PATH_PROC_ATTR_CURRENT "/proc/self/attr/current"
|
||||
#define _PATH_PROC_ATTR_EXEC "/proc/self/attr/exec"
|
||||
#define _PATH_PROC_CAPLASTCAP "/proc/sys/kernel/cap_last_cap"
|
||||
|
|
|
@ -81,6 +81,7 @@ struct chardata {
|
|||
extern int get_terminal_dimension(int *cols, int *lines);
|
||||
extern int get_terminal_width(int default_width);
|
||||
extern int get_terminal_type(const char **type);
|
||||
extern int get_terminal_stdfd(void);
|
||||
extern int get_terminal_name(const char **path, const char **name,
|
||||
const char **number);
|
||||
|
||||
|
|
|
@ -69,6 +69,18 @@ int get_terminal_width(int default_width)
|
|||
return width > 0 ? width : default_width;
|
||||
}
|
||||
|
||||
int get_terminal_stdfd(void)
|
||||
{
|
||||
if (isatty(STDIN_FILENO))
|
||||
return STDIN_FILENO;
|
||||
else if (isatty(STDOUT_FILENO))
|
||||
return STDOUT_FILENO;
|
||||
else if (isatty(STDERR_FILENO))
|
||||
return STDERR_FILENO;
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
int get_terminal_name(const char **path,
|
||||
const char **name,
|
||||
const char **number)
|
||||
|
@ -85,21 +97,18 @@ int get_terminal_name(const char **path,
|
|||
if (number)
|
||||
*number = NULL;
|
||||
|
||||
if (isatty(STDIN_FILENO))
|
||||
fd = STDIN_FILENO;
|
||||
else if (isatty(STDOUT_FILENO))
|
||||
fd = STDOUT_FILENO;
|
||||
else if (isatty(STDERR_FILENO))
|
||||
fd = STDERR_FILENO;
|
||||
else
|
||||
return -1;
|
||||
fd = get_terminal_stdfd();
|
||||
if (fd < 0)
|
||||
return fd; /* error */
|
||||
|
||||
tty = ttyname(fd);
|
||||
if (!tty)
|
||||
return -1;
|
||||
|
||||
if (path)
|
||||
*path = tty;
|
||||
tty = strncmp(tty, "/dev/", 5) == 0 ? tty + 5 : tty;
|
||||
if (name || number)
|
||||
tty = strncmp(tty, "/dev/", 5) == 0 ? tty + 5 : tty;
|
||||
if (name)
|
||||
*name = tty;
|
||||
if (number) {
|
||||
|
|
Loading…
Reference in New Issue