Fix output-delay and input-mode line combination bug

This commit is contained in:
yabu76 2025-09-20 10:56:11 +09:00
parent 3922ce3447
commit 6a590bd598

View file

@ -259,13 +259,14 @@ ssize_t tty_write(int fd, const void *buffer, size_t count)
{ {
ssize_t retval = 0, bytes_written = 0; ssize_t retval = 0, bytes_written = 0;
size_t i; size_t i;
unsigned char *cbuf = (unsigned char *)buffer;
if (option.map_o_ltu) if (option.map_o_ltu)
{ {
// Convert lower case to upper case // Convert lower case to upper case
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
*((unsigned char*)buffer+i) = toupper(*((unsigned char*)buffer+i)); cbuf[i] = toupper(cbuf[i]);
} }
} }
@ -274,7 +275,7 @@ ssize_t tty_write(int fd, const void *buffer, size_t count)
// Write byte by byte with output delay // Write byte by byte with output delay
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
retval = write(fd, buffer, 1); retval = write(fd, &cbuf[i], 1);
if (retval < 0) if (retval < 0)
{ {
// Error // Error
@ -286,7 +287,7 @@ ssize_t tty_write(int fd, const void *buffer, size_t count)
fsync(fd); fsync(fd);
tcdrain(fd); tcdrain(fd);
if (option.output_line_delay && *(unsigned char*)buffer == '\n') if (option.output_line_delay && cbuf[i] == '\n')
{ {
delay(option.output_line_delay); delay(option.output_line_delay);
} }