On 23/03/04 21:01 +0530, Philip S Tellis wrote:
> Sometime Today, Devdas Bhagat assembled some asciibets to say:
> 
> > /* 
> >  * The OP should tell us why he/she is using read and write instead of
> >  * fread and fwrite, or perhaps rename to move the file instead
> >  */
> 
> irrelevant.  fread/fwrite won't work on file descriptors.  They require 
> FILE pointers.  open/creat/socket return file descriptors.
The whole point is that the OP is copying a file from one place on local
disk to another.
 
> > while (fd) {
> 
> and who sets fd to 0?
> 
> >     if (n < sizeof(buff)) { /* Short read, eof? */
> 
> this is a short read.  it does not mean eof.  eof is signalled by a 
> return value of 0.  n < requested size just means that fewer bytes than 
> requested were available at the time.
Yup. In the current scenario though, this should not happen.
Like I said, bad code sample.

> >             close_check = close(fd);        /* Close file */
> 
> don't close here.  close only if n == 0.  If n < 0, check for errno of 
> EINTR or EAGAIN, and redo the read.
Lots more work to fix that piece of code.

Devdas Bhagat

-- 
http://mm.ilug-bom.org.in/mailman/listinfo/linuxers

Reply via email to