135766Smarc #include <sys/types.h> 235766Smarc #include <sys/errno.h> 335766Smarc #include <sys/termios.h> 435766Smarc #include <sys/tty.h> 535766Smarc #include <stdio.h> 635766Smarc 735766Smarc tcgetattr(fd, t) 835766Smarc int fd; 935766Smarc struct termios *t; 1035766Smarc { 1135766Smarc extern errno; 1235766Smarc 1335766Smarc return(ioctl(fd, TIOCGETA, t)); 1435766Smarc } 1535766Smarc 1635766Smarc tcsetattr(fd, opt, t) 1735766Smarc int fd, opt; 1835766Smarc struct termios *t; 1935766Smarc { 2035766Smarc long code; 2135766Smarc int ret; 2235766Smarc extern errno; 2335766Smarc 2435766Smarc switch (opt) { 2535766Smarc case TCSANOW: 2635766Smarc code = TIOCSETA; 2735766Smarc break; 2835766Smarc case TCSADRAIN: 2935766Smarc code = TIOCSETAW; 3035766Smarc break; 3135766Smarc case TCSADFLUSH: 3235766Smarc code = TIOCSETAF; 3335766Smarc break; 3435766Smarc case TCSANOW | TCSASOFT: 3535766Smarc code = TIOCSETAS; 3635766Smarc break; 3735766Smarc case TCSADRAIN | TCSASOFT: 3835766Smarc code = TIOCSETAWS; 3935766Smarc break; 4035766Smarc case TCSADFLUSH | TCSASOFT: 4135766Smarc code = TIOCSETAFS; 4235766Smarc break; 4335766Smarc default: 4435766Smarc errno = EINVAL; 4535766Smarc return(-1); 4635766Smarc } 4735766Smarc return(ioctl(fd, code, t)); 4835766Smarc } 4935766Smarc 5035766Smarc tcsetpgrp(fd, pgrp) 5135766Smarc { 5235766Smarc return(ioctl(fd, TIOCSPGRP, &pgrp)); 5335766Smarc } 5435766Smarc 5535766Smarc tcgetpgrp(fd) 5635766Smarc { 5735766Smarc int pgrp; 5835766Smarc 5935766Smarc if (ioctl(fd, TIOCGPGRP, &pgrp) < 0) 6035766Smarc return(-1); 6135766Smarc return(pgrp); 6235766Smarc } 6335766Smarc 6435766Smarc cfgetospeed(t) 6535766Smarc struct termios *t; 6635766Smarc { 6735766Smarc return(t->c_ospeed); 6835766Smarc } 6935766Smarc 7035766Smarc cfgetispeed(t) 7135766Smarc struct termios *t; 7235766Smarc { 7335766Smarc return(t->c_ispeed); 7435766Smarc } 7535766Smarc 7635766Smarc cfsetospeed(t, speed) 7735766Smarc struct termios *t; 7835766Smarc { 7935766Smarc t->c_ospeed = speed; 8035766Smarc } 8135766Smarc 8235766Smarc cfsetispeed(t, speed) 8335766Smarc struct termios *t; 8435766Smarc { 8535766Smarc t->c_ispeed = speed; 8635766Smarc } 8735766Smarc 8835766Smarc cfsetspeed(t, speed) 8935766Smarc struct termios *t; 9035766Smarc { 9135766Smarc t->c_ispeed = t->c_ospeed = speed; 9235766Smarc } 9335766Smarc 9435766Smarc cfmakeraw(t) 9535766Smarc struct termios *t; 9635766Smarc { 97*38596Skarels t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|INLCR|IGNCR|ICRNL|IXON); 9835766Smarc t->c_oflag &= ~(ONLCR|OXTABS); 99*38596Skarels t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); 10035766Smarc /* set MIN/TIME */ 10135766Smarc } 102