summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/util.c20
-rw-r--r--src/util.h1
2 files changed, 14 insertions, 7 deletions
diff --git a/src/util.c b/src/util.c
index a6cdfd5b5a..7450565567 100644
--- a/src/util.c
+++ b/src/util.c
@@ -4402,31 +4402,37 @@ int vtnr_from_tty(const char *tty) {
return i;
}
-const char *default_term_for_tty(const char *tty) {
+bool tty_is_vc_resolve(const char *tty) {
char *active = NULL;
- const char *term;
+ bool b;
assert(tty);
if (startswith(tty, "/dev/"))
tty += 5;
- /* Resolve where /dev/console is pointing when determining
- * TERM */
+ /* Resolve where /dev/console is pointing to */
if (streq(tty, "console"))
if (read_one_line_file("/sys/class/tty/console/active", &active) >= 0) {
/* If multiple log outputs are configured the
* last one is what /dev/console points to */
- if ((tty = strrchr(active, ' ')))
+ tty = strrchr(active, ' ');
+ if (tty)
tty++;
else
tty = active;
}
- term = tty_is_vc(tty) ? "TERM=linux" : "TERM=vt100";
+ b = tty_is_vc(tty);
free(active);
- return term;
+ return b;
+}
+
+const char *default_term_for_tty(const char *tty) {
+ assert(tty);
+
+ return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt100";
}
bool dirent_is_file(const struct dirent *de) {
diff --git a/src/util.h b/src/util.h
index a52ac64ee3..e6ffad6c2e 100644
--- a/src/util.h
+++ b/src/util.h
@@ -411,6 +411,7 @@ char *fstab_node_to_udev_node(const char *p);
void filter_environ(const char *prefix);
bool tty_is_vc(const char *tty);
+bool tty_is_vc_resolve(const char *tty);
int vtnr_from_tty(const char *tty);
const char *default_term_for_tty(const char *tty);