improve error handling for copy_attributes :

if nothing is read or an error happens on read, continue with next attribute, same for write. 
Also, use actual written byte count for looping.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18722 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2006-08-31 10:42:32 +00:00
parent 5ebff2e811
commit 2c9ae83ff9
+6 -6
View File
@@ -164,15 +164,15 @@ copy_attributes(int fromFd, int toFd)
ssize_t bytesRead, bytesWritten; ssize_t bytesRead, bytesWritten;
bytesRead = fs_read_attr(fromFd, dirent->d_name, info.type, pos, buffer, sizeof(buffer)); bytesRead = fs_read_attr(fromFd, dirent->d_name, info.type, pos, buffer, sizeof(buffer));
if (bytesRead < 0) if (bytesRead <= 0)
continue; break;
bytesWritten = fs_write_attr(toFd, dirent->d_name, info.type, pos, buffer, bytesRead); bytesWritten = fs_write_attr(toFd, dirent->d_name, info.type, pos, buffer, bytesRead);
if (bytesWritten != bytesRead) if (bytesWritten <= 0)
continue; break;
pos += bytesRead; pos += bytesWritten;
info.size -= bytesRead; info.size -= bytesWritten;
} }
} }