]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - lib/ttyutils.c
lib/ttyutils: introduce get_terminal_stdfd()
[thirdparty/util-linux.git] / lib / ttyutils.c
index 00a7903caba5ac88ed99382adaf98edcda0cbcd1..166e49e11a1e0e975aa02d441856e52617ce9960 100644 (file)
@@ -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) {