diff options
Diffstat (limited to 'da.c')
-rw-r--r-- | da.c | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -0,0 +1,43 @@ +/* + * da prints the device attributes of the current terminal + * to standard output as a string of comma-separated integers. + * + * If run inside GNU screen, it will print the device attributes + * of GNU screen itself and not those of the real terminal. + */ + +#include <err.h> +#include <fcntl.h> +#include <stdio.h> +#include <termios.h> +#include <unistd.h> + +int +main() +{ + char c; + int r, ttyfd; + struct termios term, restore; + + if((ttyfd = open("/dev/tty", O_RDWR))==-1) + err(1, "open"); + + tcgetattr(ttyfd, &restore); + tcgetattr(ttyfd, &term); + term.c_lflag &= ~(ICANON|ECHO); + tcsetattr(ttyfd, TCSANOW, &term); + + write(ttyfd, "\033[>c", 4); + while(r = read(ttyfd, &c, 1)){ + if(r==-1){ + warn("read"); + goto end; + } + if(c=='c') break; + printf("%d,", c); + } + printf("99\n"); + +end: + tcsetattr(ttyfd, TCSANOW, &restore); +} |