sysvinit-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] bootlogd: accept any TTY device for isconsole()


From: Matthias Schiffer
Subject: [PATCH] bootlogd: accept any TTY device for isconsole()
Date: Tue, 27 Jul 2021 16:41:09 +0200

Many UART drivers create TTY devices with names like ttymxc%d or
ttyAPP%d. Instead of listing all of them in the list of known prefixes,
just accept any TTY device when no prefix matches.

Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
---
 src/bootlogd.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/bootlogd.c b/src/bootlogd.c
index 787db87..17198aa 100644
--- a/src/bootlogd.c
+++ b/src/bootlogd.c
@@ -212,6 +212,22 @@ int findpty(int *master, int *slave, char *name)
 
        return 0;
 }
+
+static int istty(const char *dev)
+{
+       int fd, ret;
+
+       fd = open(dev, O_RDONLY|O_NONBLOCK);
+       if (fd < 0)
+               return 0;
+
+       ret = isatty(fd);
+
+       close(fd);
+
+       return ret;
+}
+
 /*
  *     See if a console taken from the kernel command line maps
  *     to a character device we know about, and if we can open it.
@@ -239,6 +255,13 @@ int isconsole(char *s, char *res, int rlen)
                        }
                }
        }
+
+       /* Fallback: accept any TTY device */
+       snprintf(res, rlen, "/dev/%s", s);
+       if ((q = strchr(res, ',')) != NULL) *q = 0;
+       if (istty(res))
+               return 1;
+
        return 0;
 }
 
-- 
2.17.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]