aboutsummaryrefslogtreecommitdiff
path: root/toys
diff options
context:
space:
mode:
Diffstat (limited to 'toys')
-rw-r--r--toys/Config.in8
-rw-r--r--toys/toylist.h1
-rw-r--r--toys/tty.c13
3 files changed, 22 insertions, 0 deletions
diff --git a/toys/Config.in b/toys/Config.in
index e387d245..0c3cb1e3 100644
--- a/toys/Config.in
+++ b/toys/Config.in
@@ -452,6 +452,14 @@ config TRUE
help
Return zero.
+config TTY
+ bool "tty"
+ default y
+ help
+ Print the filename of the terminal connected to standard input.
+
+ -s Don't print anything, only return an exit status.
+
config WHICH
bool "which"
default y
diff --git a/toys/toylist.h b/toys/toylist.h
index 87bffed7..d7f30dcb 100644
--- a/toys/toylist.h
+++ b/toys/toylist.h
@@ -129,5 +129,6 @@ USE_SYNC(NEWTOY(sync, NULL, TOYFLAG_BIN))
USE_TOUCH(NEWTOY(touch, "l#t:r:mca", TOYFLAG_BIN))
USE_TOYSH(NEWTOY(toysh, "c:i", TOYFLAG_BIN))
USE_TRUE(NEWTOY(true, NULL, TOYFLAG_BIN))
+USE_TTY(NEWTOY(tty, "s", TOYFLAG_BIN))
USE_WHICH(NEWTOY(which, "a", TOYFLAG_USR|TOYFLAG_BIN))
USE_YES(NEWTOY(yes, "", TOYFLAG_USR|TOYFLAG_BIN))
diff --git a/toys/tty.c b/toys/tty.c
new file mode 100644
index 00000000..c6eeac0a
--- /dev/null
+++ b/toys/tty.c
@@ -0,0 +1,13 @@
+#include "toys.h"
+
+int tty_main(void)
+{
+ char *name = ttyname(0);
+ if (!toys.optflags) {
+ if (name)
+ puts(name);
+ else
+ puts("Not a tty");
+ }
+ return !name;
+}