Pull ROM info from build.prop for backup names

Change-Id: I7847fca22b5d4f0a35da41625b15bd677a1e9768
diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index 48a9552..2329972 100644
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -950,3 +950,51 @@
 	}
 	return 0;
 }
+
+string TWFunc::Get_Current_Date() {
+	string Current_Date;
+	time_t seconds = time(0);
+	struct tm *t = localtime(&seconds);
+	char timestamp[255];
+	sprintf(timestamp,"%04d-%02d-%02d--%02d-%02d-%02d",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
+	Current_Date = timestamp;
+	return Current_Date;
+}
+
+void TWFunc::Auto_Generate_Backup_Name() {
+	bool mount_state = PartitionManager.Is_Mounted_By_Path("/system");
+	std::vector<string> buildprop;
+	if (!PartitionManager.Mount_By_Path("/system", true)) {
+		DataManager::SetValue(TW_BACKUP_NAME, Get_Current_Date());
+		return;
+	}
+	if (TWFunc::read_file("/system/build.prop", buildprop) != 0) {
+		LOGINFO("Unable to open /system/build.prop for getting backup name.\n");
+		DataManager::SetValue(TW_BACKUP_NAME, "");
+		if (!mount_state)
+			PartitionManager.UnMount_By_Path("/system", false);
+		return;
+	}
+	int line_count = buildprop.size();
+	int index;
+	size_t start_pos = 0, end_pos;
+	string propname, propvalue;
+	for (index = 0; index < line_count; index++) {
+		end_pos = buildprop.at(index).find("=", start_pos);
+		propname = buildprop.at(index).substr(start_pos, end_pos);
+		if (propname == "ro.build.display.id") {
+			propvalue = buildprop.at(index).substr(end_pos + 1, buildprop.at(index).size());
+			string Backup_Name = Get_Current_Date();
+			Backup_Name += " " + propvalue;
+			if (Backup_Name.size() > MAX_BACKUP_NAME_LEN)
+				Backup_Name.resize(MAX_BACKUP_NAME_LEN);
+			DataManager::SetValue(TW_BACKUP_NAME, Backup_Name);
+			break;
+		}
+	}
+	if (propvalue.empty()) {
+		LOGINFO("ro.build.display.id not found in build.prop\n");
+	}
+	if (!mount_state)
+		PartitionManager.UnMount_By_Path("/system", false);
+}
\ No newline at end of file