* 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) if (fs_stat_attr(fromFd, dirent->d_name, &info) != 0)
continue; continue;
while (info.size > 0) { while (info.size >= 0) {
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,
if (bytesRead <= 0) buffer, sizeof(buffer));
if (bytesRead < 0)
break; 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,
if (bytesWritten != bytesRead) buffer, bytesRead);
if (bytesWritten != bytesRead || bytesRead == 0)
break; break;
pos += bytesWritten; pos += bytesWritten;
@@ -189,7 +191,7 @@ copy_attributes_by_name(const char *from, const char *to, int resolveLinks)
} }
result = copy_attributes(fromFd, toFd); result = copy_attributes(fromFd, toFd);
close(fromFd); close(fromFd);
close(toFd); close(toFd);