summaryrefslogtreecommitdiffstats
path: root/src/ipsw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipsw.c')
-rw-r--r--src/ipsw.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/ipsw.c b/src/ipsw.c
index ca28596..adbaea0 100644
--- a/src/ipsw.c
+++ b/src/ipsw.c
@@ -20,6 +20,7 @@
*/
#include <zip.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -94,8 +95,10 @@ int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfi
int i = 0;
int size = 0;
+ int bytes = 0;
int count = 0;
- for (i = zstat.size; i > 0; i -= count) {
+ double progress = 0;
+ for(i = zstat.size; i > 0; i -= count) {
if (i < BUFSIZE)
size = i;
else
@@ -108,9 +111,11 @@ int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfi
return -1;
}
fwrite(buffer, 1, count, fd);
- debug(".");
+
+ bytes += size;
+ progress = ((double) bytes/ (double) zstat.size) * 100.0;
+ print_progress_bar("Extracting", progress);
}
- debug("\n");
fclose(fd);
zip_fclose(zfile);
@@ -119,7 +124,7 @@ int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfi
return 0;
}
-int ipsw_extract_to_memory(const char* ipsw, const char* infile, char** pbuffer, int* psize) {
+int ipsw_extract_to_memory(const char* ipsw, const char* infile, char** pbuffer, uint32_t* psize) {
ipsw_archive* archive = ipsw_open(ipsw);
if (archive == NULL || archive->zip == NULL) {
error("ERROR: Invalid archive\n");