I find the recent changes in status code checking extremely worrying. Are you 110% sure there is just not a difference between streams and libc's read/write?