1 /* answerback.c version 0.1
2 * Written by John Newbigin <jn@it.swin.edu.au>
4 * Compile with 'gcc -Wall -o answerback answerback.c'
11 int main(int argc, char **argv)
13 char *name = "ANSWERBACK";
17 sigset_t sig, sigsave;
18 struct termios term, termsave;
24 if((fp = fopen(ctermid(NULL), "r+")) == NULL)
31 sigaddset(&sig, SIGINT);
32 sigaddset(&sig, SIGTSTP);
33 sigprocmask(SIG_BLOCK, &sig, &sigsave);
34 tcgetattr(fileno(fp), &termsave);
36 term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL | ICANON);
38 term.c_cc[VTIME] = 10;
39 tcsetattr(fileno(fp), TCSAFLUSH, &term);
40 write(fileno(fp), &code, 1);
41 memset(buffer, 0, sizeof(buffer));
42 r = read(fileno(fp), buffer, sizeof(buffer) - 1);
43 tcsetattr(fileno(fp), TCSAFLUSH, &termsave);
44 sigprocmask(SIG_SETMASK, &sigsave, NULL);
48 printf("%s='%s'\n", name, buffer);