diff options
-rw-r--r-- | twrp-functions.cpp | 19 | ||||
-rw-r--r-- | twrp-functions.hpp | 2 |
2 files changed, 6 insertions, 15 deletions
diff --git a/twrp-functions.cpp b/twrp-functions.cpp index 4a5dec273..f2dcf7c64 100644 --- a/twrp-functions.cpp +++ b/twrp-functions.cpp @@ -203,20 +203,17 @@ int TWFunc::Recursive_Mkdir(string Path) { return true; } -unsigned long long TWFunc::Get_Folder_Size(string Path, bool Display_Error) { +unsigned long long TWFunc::Get_Folder_Size(const string& Path, bool Display_Error) { DIR* d; struct dirent* de; struct stat st; - char path2[4096], filename[4096]; unsigned long long dusize = 0; unsigned long long dutemp = 0; - // Make a copy of path in case the data in the pointer gets overwritten later - strcpy(path2, Path.c_str()); - d = opendir(path2); + d = opendir(Path.c_str()); if (d == NULL) { - LOGE("error opening '%s'\n", path2); + LOGE("error opening '%s'\n", Path.c_str()); LOGE("error: %s\n", strerror(errno)); return 0; } @@ -225,19 +222,13 @@ unsigned long long TWFunc::Get_Folder_Size(string Path, bool Display_Error) { { if (de->d_type == DT_DIR && strcmp(de->d_name, ".") != 0 && strcmp(de->d_name, "..") != 0) { - strcpy(filename, path2); - strcat(filename, "/"); - strcat(filename, de->d_name); - dutemp = Get_Folder_Size(filename, Display_Error); + dutemp = Get_Folder_Size((Path + "/" + de->d_name), Display_Error); dusize += dutemp; dutemp = 0; } else if (de->d_type == DT_REG) { - strcpy(filename, path2); - strcat(filename, "/"); - strcat(filename, de->d_name); - stat(filename, &st); + stat((Path + "/" + de->d_name).c_str(), &st); dusize += (unsigned long long)(st.st_size); } } diff --git a/twrp-functions.hpp b/twrp-functions.hpp index 8cd344557..fc2d64787 100644 --- a/twrp-functions.hpp +++ b/twrp-functions.hpp @@ -28,7 +28,7 @@ public: static void htc_dumlock_restore_original_boot(void); // Restores the backup of boot from HTC Dumlock static void htc_dumlock_reflash_recovery_to_boot(void); // Reflashes the current recovery to boot static int Recursive_Mkdir(string Path); // Recursively makes the entire path - static unsigned long long Get_Folder_Size(string Path, bool Display_Error); // Gets the size of a folder and all of its subfolders using dirent and stat + static unsigned long long Get_Folder_Size(const string& Path, bool Display_Error); // Gets the size of a folder and all of its subfolders using dirent and stat static bool Path_Exists(string Path); // Returns true if the path exists static void GUI_Operation_Text(string Read_Value, string Default_Text); // Updates text for display in the GUI, e.g. Backing up %partition name% static void GUI_Operation_Text(string Read_Value, string Partition_Name, string Default_Text); // Same as above but includes partition name |