diff options
author | Ethan Yonker <dees_troy@teamw.in> | 2016-02-25 20:47:30 +0100 |
---|---|---|
committer | Dees Troy <dees_troy@teamw.in> | 2016-03-31 16:44:24 +0200 |
commit | 472f506817bb1af2fceb039ba148d15723944562 (patch) | |
tree | 187516086121c42b1b671f69b4fc252fe5498b1c /tarWrite.c | |
parent | DataManager Updates (diff) | |
download | android_bootable_recovery-472f506817bb1af2fceb039ba148d15723944562.tar android_bootable_recovery-472f506817bb1af2fceb039ba148d15723944562.tar.gz android_bootable_recovery-472f506817bb1af2fceb039ba148d15723944562.tar.bz2 android_bootable_recovery-472f506817bb1af2fceb039ba148d15723944562.tar.lz android_bootable_recovery-472f506817bb1af2fceb039ba148d15723944562.tar.xz android_bootable_recovery-472f506817bb1af2fceb039ba148d15723944562.tar.zst android_bootable_recovery-472f506817bb1af2fceb039ba148d15723944562.zip |
Diffstat (limited to '')
-rw-r--r-- | tarWrite.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tarWrite.c b/tarWrite.c index 98fa14cad..98461452a 100644 --- a/tarWrite.c +++ b/tarWrite.c @@ -28,6 +28,8 @@ unsigned char *write_buffer; unsigned buffer_size = 4096; unsigned buffer_loc = 0; int buffer_status = 0; +int prog_pipe = -1; +const unsigned long long progress_size = (unsigned long long)(T_BLOCKSIZE); void reinit_libtar_buffer(void) { flush = 0; @@ -36,18 +38,20 @@ void reinit_libtar_buffer(void) { buffer_status = 1; } -void init_libtar_buffer(unsigned new_buff_size) { +void init_libtar_buffer(unsigned new_buff_size, int pipe_fd) { if (new_buff_size != 0) buffer_size = new_buff_size; reinit_libtar_buffer(); write_buffer = (unsigned char*) malloc(sizeof(char *) * buffer_size); + prog_pipe = pipe_fd; } void free_libtar_buffer(void) { if (buffer_status > 0) free(write_buffer); buffer_status = 0; + prog_pipe = -1; } ssize_t write_libtar_buffer(int fd, const void *buffer, size_t size) { @@ -79,6 +83,8 @@ ssize_t write_libtar_buffer(int fd, const void *buffer, size_t size) { buffer_loc = 0; return -1; } else { + unsigned long long fs = (unsigned long long)(buffer_loc); + write(prog_pipe, &fs, sizeof(fs)); buffer_loc = 0; return size; } @@ -94,3 +100,14 @@ void flush_libtar_buffer(int fd) { if (buffer_status) buffer_status = 2; } + +void init_libtar_no_buffer(int pipe_fd) { + buffer_size = T_BLOCKSIZE; + prog_pipe = pipe_fd; + buffer_status = 0; +} + +ssize_t write_libtar_no_buffer(int fd, const void *buffer, size_t size) { + write(prog_pipe, &progress_size, sizeof(progress_size)); + return write(fd, buffer, size); +} |