summaryrefslogtreecommitdiffstats
path: root/src/ipsw.c
diff options
context:
space:
mode:
authorGravatar Joshua Hill2010-07-08 23:40:26 -0400
committerGravatar Joshua Hill2010-07-08 23:40:26 -0400
commit4bc0f4d97a767d1291ac9f09780198d5680f3e3f (patch)
tree62b132e669be7319d749635a9b6d8fb842401810 /src/ipsw.c
parent38c965c16625d26915b3d4998a8a7e790c834d89 (diff)
parent4090b98d9e8cdaada701ac320e20f7c8b0cf88f6 (diff)
downloadidevicerestore-4bc0f4d97a767d1291ac9f09780198d5680f3e3f.tar.gz
idevicerestore-4bc0f4d97a767d1291ac9f09780198d5680f3e3f.tar.bz2
Merge branch 'martin'
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..f08e2fd 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(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");