* This should recreate 0 byte attributes, and therefore fix bug #4015.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31000 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2009-06-09 20:25:20 +00:00
parent fd070b419d
commit 50977465d0
+10 -8
View File
@@ -153,15 +153,17 @@ copy_attributes(int fromFd, int toFd)
if (fs_stat_attr(fromFd, dirent->d_name, &info) != 0)
continue;
while (info.size > 0) {
while (info.size >= 0) {
ssize_t bytesRead, bytesWritten;
bytesRead = fs_read_attr(fromFd, dirent->d_name, info.type, pos, buffer, sizeof(buffer));
if (bytesRead <= 0)
bytesRead = fs_read_attr(fromFd, dirent->d_name, info.type, pos,
buffer, sizeof(buffer));
if (bytesRead < 0)
break;
bytesWritten = fs_write_attr(toFd, dirent->d_name, info.type, pos, buffer, bytesRead);
if (bytesWritten != bytesRead)
bytesWritten = fs_write_attr(toFd, dirent->d_name, info.type, pos,
buffer, bytesRead);
if (bytesWritten != bytesRead || bytesRead == 0)
break;
pos += bytesWritten;
@@ -189,7 +191,7 @@ copy_attributes_by_name(const char *from, const char *to, int resolveLinks)
}
result = copy_attributes(fromFd, toFd);
close(fromFd);
close(toFd);