diff options
Diffstat (limited to 'partitionmanager.cpp')
-rw-r--r-- | partitionmanager.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/partitionmanager.cpp b/partitionmanager.cpp index dd2dfd2c4..fb3da5aa1 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -245,7 +245,7 @@ int TWPartitionManager::Mount_By_Path(string Path, bool Display_Error) { bool found = false; string Local_Path = TWFunc::Get_Root_Path(Path); - if (Local_Path == "/tmp") + if (Local_Path == "/tmp" || Local_Path == "/") return true; // Iterate through all partitions @@ -611,6 +611,8 @@ bool TWPartitionManager::Backup_Partition(TWPartition* Part, string Backup_Folde if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == Part->Mount_Point) { if (!(*subpart)->Backup(Backup_Folder)) return false; + sync(); + sync(); if (!Make_MD5(generate_md5, Backup_Folder, (*subpart)->Backup_FileName)) return false; if (Part->Backup_Method == 1) { @@ -1869,3 +1871,25 @@ void TWPartitionManager::Get_Partition_List(string ListType, std::vector<Partiti int TWPartitionManager::Fstab_Processed(void) { return Partitions.size(); } + +void TWPartitionManager::Output_Storage_Fstab(void) { + std::vector<TWPartition*>::iterator iter; + char storage_partition[255]; + string Temp; + FILE *fp = fopen("/cache/recovery/storage.fstab", "w"); + + if (fp == NULL) { + LOGERR("Unable to open '/cache/recovery/storage.fstab'.\n"); + return; + } + + // Iterate through all partitions + for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { + if ((*iter)->Is_Storage) { + Temp = (*iter)->Storage_Path + ";" + (*iter)->Storage_Name + ";\n"; + strcpy(storage_partition, Temp.c_str()); + fwrite(storage_partition, sizeof(storage_partition[0]), strlen(storage_partition) / sizeof(storage_partition[0]), fp); + } + } + fclose(fp); +}
\ No newline at end of file |