The readv() and writev() support was implemented in terms of multiple
calls to the read and write handlers. This imposes a problem on device
files which use an IO vector as single request entity. For example a
low-level network device (e.g. BPF(4)) may use an IO vector to create
one frame from multiple protocol layers each with its own IO vector
entry.
It is now the responsibility of the read() and write() handler to update
the offset field of the IO descriptor (rtems_libio_t). This change
makes it possible to protect the IO descriptor from concurrent access by
per file locks.
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
PR 1839/filesystem
* libcsupport/include/rtems/libio_.h, libcsupport/src/fchdir.c,
libcsupport/src/fdatasync.c, libcsupport/src/fpathconf.c,
libcsupport/src/fsync.c, libcsupport/src/ftruncate.c,
libcsupport/src/read.c, libcsupport/src/readv.c,
libcsupport/src/write.c, libcsupport/src/writev.c: Some calls did not
return proper status for permission errors or incorrectly permissions
at all.
Coverity Id 93/NO_EFFECT
Coverity Id 94/NO_EFFECT
* libcsupport/src/readv.c, libcsupport/src/writev.c: size_t is unsigned
so it is useless to check for < 0.
PR 1262/filesystem
* libcsupport/Makefile.am, libnetworking/libc/herror.c,
libnetworking/libc/res_send.c, libnetworking/sys/uio.h,
telnetd/Makefile.am, telnetd/README, telnetd/preinstall.am,
telnetd/pty.c, telnetd/telnetd.c: Add support for readv() and
writev() including documentation and test case.
* libcsupport/src/readv.c, libcsupport/src/writev.c: New files.