The two new commands both imply that a (simple) progress bar
display is requested. "multi[write]" allows to upload a group
of files with a single command, resulting in their transfer
showing a common, 'overall' progress status.

Signed-off-by: Bernhard Nortmann <bernhard.nortm...@web.de>
---
 fel.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/fel.c b/fel.c
index c9081b6..13565f3 100644
--- a/fel.c
+++ b/fel.c
@@ -1271,6 +1271,9 @@ int main(int argc, char **argv)
                        "       exe[cute] address               Call function 
address\n"
                        "       read address length file        Write memory 
contents into file\n"
                        "       write address file              Store file 
contents into memory\n"
+                       "       write-with-progress addr file   \"write\" with 
progress bar\n"
+                       "       multi[write] # addr file ...    
\"write-with-progress\" multiple files,\n"
+                       "                                       sharing a 
common progress status\n"
                        "       ver[sion]                       Show BROM 
version\n"
                        "       clear address length            Clear memory\n"
                        "       fill address length value       Fill memory\n"
@@ -1338,6 +1341,34 @@ int main(int argc, char **argv)
                                file_upload(handle, argv[3], strtoul(argv[2], 
NULL, 0));
                        }
                        skip=3;
+               } else if (strcmp(argv[1], "write-with-progress") == 0 && argc 
> 3) {
+                       size_t size = file_size(argv[3]);
+                       if (size > 0) {
+                               progress_start(progress_bar, size);
+                               file_upload(handle, argv[3], strtoul(argv[2], 
NULL, 0));
+                       }
+                       skip=3;
+               } else if ((strcmp(argv[1], "multiwrite") == 0 ||
+                           strcmp(argv[1], "multi") == 0) && argc > 4) {
+                       size_t count = strtoul(argv[2], NULL, 0); /* file count 
*/
+                       skip = 2;
+                       if (count > 0) {
+                               unsigned int i;
+
+                               /* get all file sizes, keeping track of total 
bytes */
+                               size_t total_bytes = 0;
+                               for (i = 0; i < count; i++)
+                                       total_bytes += file_size(argv[4 + i*2]);
+
+                               progress_start(progress_bar, total_bytes);
+
+                               /* now transfer each file in turn */
+                               for (i = 0; i < count; i++)
+                                       file_upload(handle, argv[4 + i*2],
+                                                   strtoul(argv[3 + i*2], 
NULL, 0));
+
+                               skip += count * 2;
+                       }
                } else if (strcmp(argv[1], "read") == 0 && argc > 4) {
                        size_t size = strtoul(argv[3], NULL, 0);
                        void *buf = malloc(size);
-- 
2.4.6

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to