tools: Avoid leaving extra data at the end of copied files
The copyfile() implementation has strange behaviour if the destination
file already exists. Update it to ensure that any existing data in the
destination file is dropped.
Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/tools/fit_common.c b/tools/fit_common.c
index 4370de2..5ea43f5 100644
--- a/tools/fit_common.c
+++ b/tools/fit_common.c
@@ -134,7 +134,7 @@
goto out;
}
- fd_dst = open(dst, O_WRONLY | O_CREAT, 0666);
+ fd_dst = open(dst, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd_dst < 0) {
printf("Can't open file %s (%s)\n", dst, strerror(errno));
goto out;
diff --git a/tools/fit_common.h b/tools/fit_common.h
index 872d8af..c600dc2 100644
--- a/tools/fit_common.h
+++ b/tools/fit_common.h
@@ -44,6 +44,8 @@
*
* This uses read()/write() to copy file @src to file @dst
*
+ * If @dst exists, it is overwritten and truncated to the correct size.
+ *
* @src: Filename to read from
* @dst: Filename to write to
* @return 0 if OK, -1 on error