make pull/push progress bar 58/11558/1
authorho.namkoong <ho.namkoong@samsung.com>
Wed, 30 Oct 2013 04:44:23 +0000 (13:44 +0900)
committerho.namkoong <ho.namkoong@samsung.com>
Wed, 30 Oct 2013 04:44:23 +0000 (13:44 +0900)
Change-Id: I4a84b3c3b362eb53b2e489ff7590b56a05c738a2

src/file_sync_client.c

index d37ed7ff2060de69379156e22bdb5353ce4b9ecf..37a1c59f346c9bac8320c671e475c69303fce1f1 100644 (file)
@@ -52,8 +52,24 @@ static __inline__ void finalize(int srcfd, int dstfd, FILE_FUNC* srcF, FILE_FUNC
 static int file_copy(int src_fd, int dst_fd, char* srcp, char* dstp, FILE_FUNC* srcF, FILE_FUNC* dstF, unsigned* total_bytes, struct stat* src_stat, char* copy_flag) {
     D("file is copied from 'fd:%d' '%s' to 'fd:%d' '%s'\n", src_fd, srcp, dst_fd, dstp);
 
-    //unsigned file_byte = src_stat->st_size;
+    unsigned file_byte = src_stat->st_size;
+    char* file_name = get_filename(srcp);
+
+    unsigned flag_size = 1;
+    char byte_flag[3] = {' ', 'B', '\0'};
     unsigned written_byte = 0;
+    int store_byte = 0;
+
+    if(file_byte > 1024 && file_byte <= 1048576) {
+        flag_size = 1024;
+        byte_flag[0] = 'K';
+        byte_flag[1] = 'B';
+    }
+    else if(file_byte > 1048576) {
+        flag_size = 1048576;
+        byte_flag[0] = 'M';
+        byte_flag[1] = 'B';
+    }
 
     src_fd = srcF->readopen(src_fd, srcp, src_stat);
     if(src_fd < 0) {
@@ -102,13 +118,22 @@ static int file_copy(int src_fd, int dst_fd, char* srcp, char* dstp, FILE_FUNC*
             return -1;
         }
         //TODO pull / push progress bar
-        //fprintf(stderr,"%s [%u / %u]: %s -> %s \r", copy_flag, written_byte, file_byte, srcp, dstp);
+        int percent = 0;
+        if( file_byte > 100) {
+            percent = written_byte / (file_byte / 100);
+        }
+        int progress_byte = written_byte / flag_size;
+
+        if(store_byte != progress_byte) {
+            fprintf(stderr,"%s %30s\t%3d%%\t%7d%s\r\r", copy_flag, file_name, percent, progress_byte, byte_flag);
+            store_byte = progress_byte;
+        }
     }
     if(srcF->readclose(src_fd) < 0 || dstF->writeclose(dst_fd, dstp, src_stat) < 0) {
         return -1;
     }
 
-    fprintf(stderr,"%s: %s -> %s \n", copy_flag, srcp, dstp);
+    fprintf(stderr,"%s %30s\t100%%\t%7d%s\n", copy_flag, file_name, file_byte / flag_size, byte_flag);
     *total_bytes = *total_bytes + written_byte;
     return 1;
 }