|
@@ -41,40 +41,41 @@ int tcgetattr (int fd, struct termios *termios_p)
|
|
int retval;
|
|
int retval;
|
|
|
|
|
|
retval = ioctl (fd, TCGETS, &k_termios);
|
|
retval = ioctl (fd, TCGETS, &k_termios);
|
|
-
|
|
+ if(likely(retval == 0)) {
|
|
- termios_p->c_iflag = k_termios.c_iflag;
|
|
+ termios_p->c_iflag = k_termios.c_iflag;
|
|
- termios_p->c_oflag = k_termios.c_oflag;
|
|
+ termios_p->c_oflag = k_termios.c_oflag;
|
|
- termios_p->c_cflag = k_termios.c_cflag;
|
|
+ termios_p->c_cflag = k_termios.c_cflag;
|
|
- termios_p->c_lflag = k_termios.c_lflag;
|
|
+ termios_p->c_lflag = k_termios.c_lflag;
|
|
- termios_p->c_line = k_termios.c_line;
|
|
+ termios_p->c_line = k_termios.c_line;
|
|
#ifdef _HAVE_C_ISPEED
|
|
#ifdef _HAVE_C_ISPEED
|
|
- termios_p->c_ispeed = k_termios.c_ispeed;
|
|
+ termios_p->c_ispeed = k_termios.c_ispeed;
|
|
#endif
|
|
#endif
|
|
#ifdef _HAVE_C_OSPEED
|
|
#ifdef _HAVE_C_OSPEED
|
|
- termios_p->c_ospeed = k_termios.c_ospeed;
|
|
+ termios_p->c_ospeed = k_termios.c_ospeed;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
|
|
- if (sizeof (cc_t) == 1 || _POSIX_VDISABLE == 0
|
|
+ if (sizeof (cc_t) == 1 || _POSIX_VDISABLE == 0
|
|
- || (unsigned char) _POSIX_VDISABLE == (unsigned char) -1)
|
|
+ || (unsigned char) _POSIX_VDISABLE == (unsigned char) -1)
|
|
- {
|
|
+ {
|
|
- memset (mempcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
|
|
+ memset (mempcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
|
|
- __KERNEL_NCCS * sizeof (cc_t)),
|
|
+ __KERNEL_NCCS * sizeof (cc_t)),
|
|
- _POSIX_VDISABLE, (NCCS - __KERNEL_NCCS) * sizeof (cc_t));
|
|
+ _POSIX_VDISABLE, (NCCS - __KERNEL_NCCS) * sizeof (cc_t));
|
|
#if 0
|
|
#if 0
|
|
- memset ( (memcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
|
|
+ memset ( (memcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
|
|
- __KERNEL_NCCS * sizeof (cc_t)) + (__KERNEL_NCCS * sizeof (cc_t))) ,
|
|
+ __KERNEL_NCCS * sizeof (cc_t)) + (__KERNEL_NCCS * sizeof (cc_t))) ,
|
|
- _POSIX_VDISABLE, (NCCS - __KERNEL_NCCS) * sizeof (cc_t));
|
|
+ _POSIX_VDISABLE, (NCCS - __KERNEL_NCCS) * sizeof (cc_t));
|
|
#endif
|
|
#endif
|
|
- } else {
|
|
+ } else {
|
|
- size_t cnt;
|
|
+ size_t cnt;
|
|
|
|
|
|
- memcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
|
|
+ memcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
|
|
- __KERNEL_NCCS * sizeof (cc_t));
|
|
+ __KERNEL_NCCS * sizeof (cc_t));
|
|
|
|
|
|
- for (cnt = __KERNEL_NCCS; cnt < NCCS; ++cnt)
|
|
+ for (cnt = __KERNEL_NCCS; cnt < NCCS; ++cnt)
|
|
- termios_p->c_cc[cnt] = _POSIX_VDISABLE;
|
|
+ termios_p->c_cc[cnt] = _POSIX_VDISABLE;
|
|
- }
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
return retval;
|
|
return retval;
|
|
}
|
|
}
|