Create a TWRP Disk Usage Class to retain state about a directory and whether we should skip it in other classes like twrpTar.

Moved Get_Folder_Size to this new class.

Change-Id: If0a0220f900eb109581f2eeaf7b76e3f7d6886f1
This commit is contained in:
bigbiff bigbiff
2013-12-01 21:03:45 -05:00
committed by Dees Troy
parent 4d132cabf4
commit 34684ff313
11 changed files with 220 additions and 72 deletions
+14 -14
View File
@@ -1,5 +1,5 @@
/*
Copyright 2012 bigbiff/Dees_Troy TeamWin
Copyright 2013 TeamWin
This file is part of TWRP/TeamWin Recovery Project.
TWRP is free software: you can redistribute it and/or modify
@@ -39,6 +39,7 @@
#include "twrp-functions.hpp"
#include "twrpDigest.hpp"
#include "twrpTar.hpp"
#include "twrpDU.hpp"
extern "C" {
#include "mtdutils/mtdutils.h"
#include "mtdutils/mounts.h"
@@ -811,7 +812,7 @@ bool TWPartition::Find_Partition_Size(void) {
sscanf(line, "%s %lx %*lx %*lu %s", label, &size, device);
// Skip header, annotation and blank lines
// Skip header, annotation and blank lines
if ((strncmp(device, "/dev/", 5) != 0) || (strlen(line) < 8))
continue;
@@ -1514,7 +1515,7 @@ bool TWPartition::Wipe_Data_Without_Wiping_Media() {
if (d != NULL) {
struct dirent* de;
while ((de = readdir(d)) != NULL) {
if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) continue;
if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) continue;
// The media folder is the "internal sdcard"
// The .layout_version file is responsible for determining whether 4.2 decides up upgrade
// the media folder for multi-user.
@@ -1555,7 +1556,10 @@ bool TWPartition::Backup_Tar(string backup_folder) {
DataManager::GetValue(TW_USE_COMPRESSION_VAR, use_compression);
tar.use_compression = use_compression;
//exclude Google Music Cache
tar.setexcl("/data/data/com.google.android.music/files");
vector<string> excludedirs = du.get_absolute_dirs();
for (int i = 0; i < excludedirs.size(); ++i) {
tar.setexcl(excludedirs.at(i));
}
#ifndef TW_EXCLUDE_ENCRYPTED_BACKUPS
DataManager::GetValue("tw_encrypt_backup", use_encryption);
if (use_encryption && Can_Encrypt_Backup) {
@@ -1772,16 +1776,12 @@ bool TWPartition::Update_Size(bool Display_Error) {
if (Has_Data_Media) {
if (Mount(Display_Error)) {
unsigned long long data_media_used, actual_data;
Used = TWFunc::Get_Folder_Size("/data", Display_Error);
data_media_used = TWFunc::Get_Folder_Size("/data/media", Display_Error);
actual_data = Used - data_media_used;
Backup_Size = actual_data;
int bak = (int)(Backup_Size / 1048576LLU);
int total = (int)(Size / 1048576LLU);
int us = (int)(Used / 1048576LLU);
du.add_relative_dir("media");
Used = du.Get_Folder_Size("/data");
Backup_Size = Used;
int bak = (int)(Used / 1048576LLU);
int fre = (int)(Free / 1048576LLU);
int datmed = (int)(data_media_used / 1048576LLU);
LOGINFO("Data backup size is %iMB, size: %iMB, used: %iMB, free: %iMB, in data/media: %iMB.\n", bak, total, us, fre, datmed);
LOGINFO("Data backup size is %iMB, free: %iMB.\n", bak, fre);
} else {
if (!Was_Already_Mounted)
UnMount(false);
@@ -1789,7 +1789,7 @@ bool TWPartition::Update_Size(bool Display_Error) {
}
} else if (Has_Android_Secure) {
if (Mount(Display_Error))
Backup_Size = TWFunc::Get_Folder_Size(Backup_Path, Display_Error);
Backup_Size = du.Get_Folder_Size(Backup_Path);
else {
if (!Was_Already_Mounted)
UnMount(false);