in reply to can some elaborate the difference between sysread/read sysseek/seek

sysread doesn't buffer. read buffers. On the rare occasions you need unbuffered IO (e.g. you want to use select), you need to use sysread and sysseek. (As such, sysread will always return as soon as data is available, if is there is data available than requested.) The rest of the time, you want to use read and seek.