diff options
-rw-r--r-- | rin.c | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -0,0 +1,34 @@ +#include <err.h> +#include <fcntl.h> +#include <signal.h> +#include <termios.h> +#include <unistd.h> + +int +main() +{ + int c, n, o, t; + struct termios orig, term; + + t = 0; + + if((o = open("/var/tmp/r.in", O_RDWR)) == -1) + err(1, "/var/tmp/r.in"); + + /* Enter "raw" terminal mode. */ + tcgetattr(t, &orig); + tcgetattr(t, &term); + term.c_lflag &= ~(ICANON|ECHO|ISIG); + tcsetattr(t, TCSANOW, &term); + + while((n = read(t, &c, 1)) > 0){ + if(c == 26) /* ^Z */ + break; + if(c != '\n') + write(t, &c, 1); + write(o, &c, 1); + } + + /* Restore original terminal mode. */ + tcsetattr(t, TCSANOW, &orig); +} |