X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibposix.so_src%2Ftermios.c;h=d3aaefac8f5f063c69d662ce43deaa50f901787f;hb=2238e69eea50d2274553926f3f294822c1972ff0;hp=57b1b421a1198fc4a9cfdf653b9c4379ab5b0848;hpb=1e276c7ef5da2e87cf413e1563f339de7fba8449;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libposix.so_src/termios.c b/Usermode/Libraries/libposix.so_src/termios.c index 57b1b421..d3aaefac 100644 --- a/Usermode/Libraries/libposix.so_src/termios.c +++ b/Usermode/Libraries/libposix.so_src/termios.c @@ -12,6 +12,11 @@ #include // === CODE === +speed_t cfgetospeed(const struct termios *termios_p) +{ + return termios_p->c_oflag & CBAUD; +} + int tcgetattr(int fd, struct termios *termios_p) { if( fd == -1 ) { @@ -59,6 +64,8 @@ int tcsetattr(int fd, int optional_actions, const struct termios *termios_p) errno = EINVAL; return -1; } + _SysDebug("*termios_p = {%x,%x,%x,%x}", + termios_p->c_iflag, termios_p->c_oflag, termios_p->c_cflag, termios_p->c_lflag); // Double-check `fd` describes a terminal if( _SysIOCtl(fd, DRV_IOCTL_TYPE, NULL) != DRV_TYPE_TERMINAL ) { @@ -66,15 +73,14 @@ int tcsetattr(int fd, int optional_actions, const struct termios *termios_p) return -1; } - struct ptymode mode = {0}; + struct ptymode mode = {0,0}; if(termios_p->c_lflag & ICANON) mode.InputMode |= PTYIMODE_CANON; if(termios_p->c_lflag & ECHO) mode.InputMode |= PTYIMODE_ECHO; - _SysDebug("*termios_p = {%x,%x,%x,%x}", - termios_p->c_iflag, termios_p->c_oflag, termios_p->c_cflag, termios_p->c_lflag); + _SysIOCtl(fd, PTY_IOCTL_SETMODE, &mode); return 0; }