On 23/03/04 03:44 -0800, Linux User wrote:
<snip>
> while(n = read(fd,buff,sizeof(buff)) > 0){
This will be parsed as
while (n = (read(fd, buff, sizeof(buff)) > 0)) {
The result of the bracket around read is 1, since the return value of
read is > 0 and hence the condition evaluates to true.
/* Bad code follows */
/*
* 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
*/
while (fd) {
n = read(fd, buff, sizeof(buff));
if (n = -1) {
perror("Read failed: ");
exit(n);
}
if (n < sizeof(buff)) { /* Short read, eof? */
close_check = close(fd); /* Close file */
/*
* We had an error while closing the file
* Alert to see if the disk is full, or corrupted.
*/
if (close_check = -1) {
perror("File close failed, disk full?: ");
}
}
/* Insert code for writes here */
}
Devdas Bhagat
--
http://mm.ilug-bom.org.in/mailman/listinfo/linuxers