This function is useful in other places. Move it to a common file.

Signed-off-by: Simon Glass <s...@chromium.org>
---

 tools/fit_common.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++
 tools/fit_common.h | 11 +++++++++
 tools/fit_image.c  | 56 ----------------------------------------------
 3 files changed, 67 insertions(+), 56 deletions(-)

diff --git a/tools/fit_common.c b/tools/fit_common.c
index 52b63296f89..c161f23b0f7 100644
--- a/tools/fit_common.c
+++ b/tools/fit_common.c
@@ -111,3 +111,59 @@ err:
 
        return -1;
 }
+
+int copyfile(const char *src, const char *dst)
+{
+       int fd_src = -1, fd_dst = -1;
+       void *buf = NULL;
+       ssize_t size;
+       size_t count;
+       int ret = -1;
+
+       fd_src = open(src, O_RDONLY);
+       if (fd_src < 0) {
+               printf("Can't open file %s (%s)\n", src, strerror(errno));
+               goto out;
+       }
+
+       fd_dst = open(dst, O_WRONLY | O_CREAT, 0666);
+       if (fd_dst < 0) {
+               printf("Can't open file %s (%s)\n", dst, strerror(errno));
+               goto out;
+       }
+
+       buf = calloc(1, 512);
+       if (!buf) {
+               printf("Can't allocate buffer to copy file\n");
+               goto out;
+       }
+
+       while (1) {
+               size = read(fd_src, buf, 512);
+               if (size < 0) {
+                       printf("Can't read file %s\n", src);
+                       goto out;
+               }
+               if (!size)
+                       break;
+
+               count = size;
+               size = write(fd_dst, buf, count);
+               if (size < 0) {
+                       printf("Can't write file %s\n", dst);
+                       goto out;
+               }
+       }
+
+       ret = 0;
+
+ out:
+       if (fd_src >= 0)
+               close(fd_src);
+       if (fd_dst >= 0)
+               close(fd_dst);
+       if (buf)
+               free(buf);
+
+       return ret;
+}
diff --git a/tools/fit_common.h b/tools/fit_common.h
index 1e81d4c68b6..a76c4001c59 100644
--- a/tools/fit_common.h
+++ b/tools/fit_common.h
@@ -39,4 +39,15 @@ int mmap_fdt(const char *cmdname, const char *fname, size_t 
size_inc,
             void **blobp, struct stat *sbuf, bool delete_on_error,
             bool read_only);
 
+/**
+ * copyfile() - Copy a file
+ *
+ * This uses read()/write() to copy file @src to file @dst
+ *
+ * @src: Filename to read from
+ * @dst: Filename to write to
+ * @return 0 if OK, -1 on error
+ */
+int copyfile(const char *src, const char *dst);
+
 #endif /* _FIT_COMMON_H_ */
diff --git a/tools/fit_image.c b/tools/fit_image.c
index f4f372ba62f..c4f56bb6967 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -654,62 +654,6 @@ err:
        return ret;
 }
 
-static int copyfile(const char *src, const char *dst)
-{
-       int fd_src = -1, fd_dst = -1;
-       void *buf = NULL;
-       ssize_t size;
-       size_t count;
-       int ret = -1;
-
-       fd_src = open(src, O_RDONLY);
-       if (fd_src < 0) {
-               printf("Can't open file %s (%s)\n", src, strerror(errno));
-               goto out;
-       }
-
-       fd_dst = open(dst, O_WRONLY | O_CREAT, 0666);
-       if (fd_dst < 0) {
-               printf("Can't open file %s (%s)\n", dst, strerror(errno));
-               goto out;
-       }
-
-       buf = calloc(1, 512);
-       if (!buf) {
-               printf("Can't allocate buffer to copy file\n");
-               goto out;
-       }
-
-       while (1) {
-               size = read(fd_src, buf, 512);
-               if (size < 0) {
-                       printf("Can't read file %s\n", src);
-                       goto out;
-               }
-               if (!size)
-                       break;
-
-               count = size;
-               size = write(fd_dst, buf, count);
-               if (size < 0) {
-                       printf("Can't write file %s\n", dst);
-                       goto out;
-               }
-       }
-
-       ret = 0;
-
- out:
-       if (fd_src >= 0)
-               close(fd_src);
-       if (fd_dst >= 0)
-               close(fd_dst);
-       if (buf)
-               free(buf);
-
-       return ret;
-}
-
 /**
  * fit_handle_file - main FIT file processing function
  *
-- 
2.34.0.rc1.387.gb447b232ab-goog

Reply via email to