diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2014-09-23 02:45:42 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2014-09-23 03:05:01 +0200 |
commit | c0cc27c55517f9c3db2370819fc6bc81b80f2eee (patch) | |
tree | ff7d80f3ae802ce59b120d6d28069f9d64d6ef7c | |
parent | 75d3388a351f011fc928ab12168818a5c5f5236f (diff) | |
download | termo-c0cc27c55517f9c3db2370819fc6bc81b80f2eee.tar.gz termo-c0cc27c55517f9c3db2370819fc6bc81b80f2eee.tar.xz termo-c0cc27c55517f9c3db2370819fc6bc81b80f2eee.zip |
Introduce isatty(3)
-rw-r--r-- | driver-ti.c | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/driver-ti.c b/driver-ti.c index ce2a820..ee9104a 100644 --- a/driver-ti.c +++ b/driver-ti.c @@ -15,8 +15,6 @@ #include <stdio.h> #include <string.h> #include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> /* To be efficient at lookups, we store the byte sequence => keyinfo mapping * in a trie. This avoids a slow linear search through a flat list of @@ -309,25 +307,16 @@ static int start_driver (termkey_t *tk, void *info) { termkey_ti_t *ti = info; - struct stat statbuf; char *start_string = ti->start_string; size_t len; - if (tk->fd == -1 || !start_string) + if (tk->fd == -1 || !isatty (tk->fd) || !start_string) return 1; /* The terminfo database will contain keys in application cursor key mode. * We may need to enable that mode */ - // FIXME: isatty() should suffice - /* There's no point trying to write() to a pipe */ - if (fstat (tk->fd, &statbuf) == -1) - return 0; - - if (S_ISFIFO (statbuf.st_mode)) - return 1; - // Can't call putp or tputs because they suck and don't give us fd control len = strlen (start_string); while (len) @@ -346,18 +335,10 @@ static int stop_driver (termkey_t *tk, void *info) { termkey_ti_t *ti = info; - struct stat statbuf; char *stop_string = ti->stop_string; size_t len; - if (tk->fd == -1 || !stop_string) - return 1; - - /* There's no point trying to write() to a pipe */ - if (fstat (tk->fd, &statbuf) == -1) - return 0; - - if (S_ISFIFO (statbuf.st_mode)) + if (tk->fd == -1 || !isatty (tk->fd) || !stop_string) return 1; /* The terminfo database will contain keys in application cursor key mode. |