[Toybox] [PATCH] Fix oneit sysfs console autodetection

Daniel Mentz danielmentz at google.com
Fri Apr 14 15:13:19 PDT 2023


oneit appears to have made the assumption that
/sys/class/tty/console/active provides a list of console names separated
by newline characters. It turned out, though, that individual names are
separated by space characters with a newline character at the very end
of the list.

We previously observed the following error message:

oneit: /dev/ttynull
ttyS0: No such file or directory
---
 toys/other/oneit.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/toys/other/oneit.c b/toys/other/oneit.c
index d154f582..13f58078 100644
--- a/toys/other/oneit.c
+++ b/toys/other/oneit.c
@@ -73,12 +73,13 @@ void oneit_main(void)
   // Autodetect console from sysfs if no -c
   memcpy(toybuf, "/dev/", 5);
   if (!TT.c && (TT.c = readfile("/sys/class/tty/console/active", ss, 4096))) {
-    // Remove null terminator, take last entry
+    // Take last entry, remove newline terminator
     for (;;) {
-      if (!(ss = strchr(TT.c, '\n'))) break;
+      if (!(ss = strchr(TT.c, ' '))) break;
       if (!ss[1]) *ss = 0;
       else TT.c = ++ss;
     }
+    if (ss = strchr(TT.c, '\n')) ss[1] = 0;
     // Ensure /dev prefix
     strstart(&TT.c, "/dev/");
     memmove(toybuf+5, TT.c, strlen(TT.c));
-- 
2.40.0.634.g4ca3ef3211-goog



More information about the Toybox mailing list