diff --git a/ipmitool/src/plugins/serial/serial_basic.c b/ipmitool/src/plugins/serial/serial_basic.c index 55681ab..4b8f112 100644 --- a/ipmitool/src/plugins/serial/serial_basic.c +++ b/ipmitool/src/plugins/serial/serial_basic.c @@ -266,8 +266,14 @@ serial_bm_open(struct ipmi_intf * intf) /* no flow control */ ti.c_cflag &= ~CRTSCTS; - ti.c_iflag &= ~(IGNBRK | IGNCR | INLCR | ICRNL | IUCLC | INPCK | ISTRIP + ti.c_iflag &= ~(IGNBRK | IGNCR | INLCR | ICRNL | INPCK | ISTRIP | IXON | IXOFF | IXANY); +#ifdef IUCLC + /* Only disable uppercase-to-lowercase mapping on input for + platforms supporting the flag. */ + ti.c_iflag &= ~(IUCLC) +#endif + ti.c_oflag &= ~(OPOST); ti.c_lflag &= ~(ICANON | ISIG | ECHO | ECHONL | NOFLSH); diff --git a/ipmitool/src/plugins/serial/serial_terminal.c b/ipmitool/src/plugins/serial/serial_terminal.c index 10ed942..27413c8 100644 --- a/ipmitool/src/plugins/serial/serial_terminal.c +++ b/ipmitool/src/plugins/serial/serial_terminal.c @@ -211,8 +211,13 @@ ipmi_serial_term_open(struct ipmi_intf * intf) /* no flow control */ ti.c_cflag &= ~CRTSCTS; - ti.c_iflag &= ~(IGNBRK | IGNCR | INLCR | ICRNL | IUCLC | INPCK | ISTRIP + ti.c_iflag &= ~(IGNBRK | IGNCR | INLCR | ICRNL | INPCK | ISTRIP | IXON | IXOFF | IXANY); +#ifdef IUCLC + /* Only disable uppercase-to-lowercase mapping on input for + platforms supporting the flag. */ + ti.c_iflag &= ~(IUCLC) +#endif ti.c_oflag &= ~(OPOST); ti.c_lflag &= ~(ICANON | ISIG | ECHO | ECHONL | NOFLSH);