|
@@ -74,8 +74,15 @@ bool copy_file(const String& src_path, const String& dst_path, const struct stat
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (src_stat.st_size > 0) {
|
|
|
|
+ if (ftruncate(dst_fd, src_stat.st_size) < 0) {
|
|
|
|
+ perror("cp: ftruncate");
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
for (;;) {
|
|
for (;;) {
|
|
- char buffer[BUFSIZ];
|
|
|
|
|
|
+ char buffer[32768];
|
|
ssize_t nread = read(src_fd, buffer, sizeof(buffer));
|
|
ssize_t nread = read(src_fd, buffer, sizeof(buffer));
|
|
if (nread < 0) {
|
|
if (nread < 0) {
|
|
return false;
|
|
return false;
|
|
@@ -130,4 +137,4 @@ String get_duplicate_name(const String& path, int duplicate_count)
|
|
}
|
|
}
|
|
return duplicated_name.build();
|
|
return duplicated_name.build();
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+}
|