summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/powerstats/PowerStatsDataStorage.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/powerstats/PowerStatsDataStorage.java b/services/core/java/com/android/server/powerstats/PowerStatsDataStorage.java
index 98293570507c..c9595c2eec2b 100644
--- a/services/core/java/com/android/server/powerstats/PowerStatsDataStorage.java
+++ b/services/core/java/com/android/server/powerstats/PowerStatsDataStorage.java
@@ -177,8 +177,28 @@ public class PowerStatsDataStorage {
// filename, so any files that don't match the current version number can be deleted.
File[] files = mDataStorageDir.listFiles();
for (int i = 0; i < files.length; i++) {
- if (!files[i].getName().matches(dataStorageFilename + "(.*)")) {
- files[i].delete();
+ // Meter and model files are stored in the same directory.
+ //
+ // The format of filenames on disk is:
+ // log.powerstats.meter.version.timestamp
+ // log.powerstats.model.version.timestamp
+ //
+ // The format of dataStorageFilenames is:
+ // log.powerstats.meter.version
+ // log.powerstats.model.version
+ //
+ // A PowerStatsDataStorage object is created for meter and model data. Strip off
+ // the version and check that the current file we're checking starts with the stem
+ // (log.powerstats.meter or log.powerstats.model). If the stem matches and the
+ // version number is different, delete the old file.
+ int versionDot = dataStorageFilename.lastIndexOf('.');
+ String beforeVersionDot = dataStorageFilename.substring(0, versionDot);
+ // Check that the stems match.
+ if (files[i].getName().startsWith(beforeVersionDot)) {
+ // Check that the version number matches. If not, delete the old file.
+ if (!files[i].getName().startsWith(dataStorageFilename)) {
+ files[i].delete();
+ }
}
}