/* * 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 #include #include #include #include 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); }