> Can you please let me know whether the above change were correct.. I am assuming here that the code you pasted is correct. If so, the read_macro function will only read and return one byte due to the if statement being incorrectly bracketed. If the function is called with a buffer of more than 1 byte (ie. nbytes > 1) the buffer will only contain 1 character rather than the number of characters given in nbytes. I think the code should read: int read_micro (int fd, char* buf, int nbytes) { int i = 0; for (i = 0; i < nbytes; i++) { *(buf + i) = inbyte(); if ((*(buf + i) == '\n' || *(buf + i) == '\r')) { i++; break; } } return i; } Regards, Andrew