diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 4995ddd57c..2771c9f265 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,10 @@ +2006-03-07 Till Strauman + + PR 830/filesystem + * libcsupport/src/termios.c: termios ioctl(FIONREAD) reported wrong + number of characters. So add chars in low-level/raw buffer to total + count. + 2006-03-07 Steven Johnson PR 850/rtems diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c index 4586654fdd..1917c68735 100644 --- a/cpukit/libcsupport/src/termios.c +++ b/cpukit/libcsupport/src/termios.c @@ -613,8 +613,13 @@ rtems_termios_ioctl (void *arg) break; #endif case FIONREAD: + { + int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head; + if ( rawnc < 0 ) + rawnc += tty->rawInBuf.Size; /* Half guess that this is the right operation */ - *(int *)args->buffer = tty->ccount - tty->cindex; + *(int *)args->buffer = tty->ccount - tty->cindex + rawnc; + } break; } rtems_semaphore_release (tty->osem);