Ryan Bloom wrote: > > > > > - if ((*new)->filedes < 0 && (*new)->filehand == NULL) { > > + if ((*new)->filedes < 0 || (*new)->filehand == NULL) { > > (*new)->filedes = -1; > > (*new)->eof_hit = 1; > > return errno; > > This is wrong. This says that we NEVER open the file correctly. This is > because we only ever set one of the two options, either the filedes or the > filehand, NEVER both.
Yeah but filedes == 0 when you use filehand (which is possibly a bug). > We are checking for the error condition, not the > successful case. Either the filedes or the filehand WILL be not set after > each open. I have serious doubts that the code even works anymore. If > it does, it is only because we aren't checking return code properly. OK, well it didn't work before, and it now does _when_ it is using filehand. I agree this it is still broken, though, but less so than before. Cheers, Ben. -- http://www.apache-ssl.org/ben.html "My grandfather once told me that there are two kinds of people: those who work and those who take the credit. He told me to try to be in the first group; there was less competition there." - Indira Gandhi