diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/idevicerestore.c | 2 | ||||
| -rw-r--r-- | src/ipsw.c | 14 | ||||
| -rw-r--r-- | src/ipsw.h | 1 | 
3 files changed, 13 insertions, 4 deletions
diff --git a/src/idevicerestore.c b/src/idevicerestore.c index 5263c76..43904e5 100644 --- a/src/idevicerestore.c +++ b/src/idevicerestore.c @@ -728,7 +728,7 @@ int idevicerestore_start(struct idevicerestore_client_t* client)  		// Extract filesystem from IPSW  		info("Extracting filesystem from IPSW\n"); -		if (ipsw_extract_to_file(client->ipsw, fsname, filesystem) < 0) { +		if (ipsw_extract_to_file_with_progress(client->ipsw, fsname, filesystem, 1) < 0) {  			error("ERROR: Unable to extract filesystem from IPSW\n");  			if (client->tss)  				plist_free(client->tss); @@ -86,7 +86,8 @@ int ipsw_get_file_size(const char* ipsw, const char* infile, off_t* size) {  	return 0;  } -int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfile) { +int ipsw_extract_to_file_with_progress(const char* ipsw, const char* infile, const char* outfile, int print_progress) +{  	int ret = 0;  	ipsw_archive* archive = ipsw_open(ipsw);  	if (archive == NULL || archive->zip == NULL) { @@ -145,8 +146,10 @@ int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfi  		}  		bytes += size; -		progress = ((double)bytes / (double)zstat.size) * 100.0; -		print_progress_bar(progress); +		if (print_progress) { +			progress = ((double)bytes / (double)zstat.size) * 100.0; +			print_progress_bar(progress); +		}  	}  	fclose(fd); @@ -156,6 +159,11 @@ int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfi  	return ret;  } +int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfile) +{ +	return ipsw_extract_to_file_with_progress(ipsw, infile, outfile, 0); +} +  int ipsw_file_exists(const char* ipsw, const char* infile)  {  	ipsw_archive* archive = ipsw_open(ipsw); @@ -41,6 +41,7 @@ typedef struct {  int ipsw_get_file_size(const char* ipsw, const char* infile, off_t* size);  int ipsw_extract_to_file(const char* ipsw, const char* infile, const char* outfile); +int ipsw_extract_to_file_with_progress(const char* ipsw, const char* infile, const char* outfile, int print_progress);  int ipsw_extract_to_memory(const char* ipsw, const char* infile, unsigned char** pbuffer, unsigned int* psize);  int ipsw_extract_build_manifest(const char* ipsw, plist_t* buildmanifest, int *tss_enabled);  int ipsw_extract_restore_plist(const char* ipsw, plist_t* restore_plist);  | 
