const char *imsi = ofono_sim_get_imsi(fs->sim);
enum ofono_sim_phase phase = ofono_sim_get_phase(fs->sim);
unsigned char version;
- struct dirent **entries;
- int len;
- char *path;
if (imsi == NULL || phase == OFONO_SIM_PHASE_UNKNOWN)
return;
if (version == SIM_FS_VERSION)
return;
- path = g_strdup_printf(SIM_CACHE_BASEPATH, imsi, phase);
+ sim_fs_cache_flush(fs);
+
+ version = SIM_FS_VERSION;
+ write_file(&version, 1, SIM_CACHE_MODE, SIM_CACHE_VERSION, imsi, phase);
+}
+
+void sim_fs_cache_flush(struct sim_fs *fs)
+{
+ const char *imsi = ofono_sim_get_imsi(fs->sim);
+ enum ofono_sim_phase phase = ofono_sim_get_phase(fs->sim);
+ char *path = g_strdup_printf(SIM_CACHE_BASEPATH, imsi, phase);
+ struct dirent **entries;
+ int len = scandir(path, &entries, NULL, alphasort);
- ofono_info("Detected old simfs version in %s, removing", path);
- len = scandir(path, &entries, NULL, alphasort);
g_free(path);
if (len > 0) {
g_free(entries);
}
- path = g_strdup_printf(SIM_IMAGE_CACHE_BASEPATH, imsi, phase);
- len = scandir(path, &entries, NULL, alphasort);
+ sim_fs_image_cache_flush(fs);
+}
+
+void sim_fs_cache_flush_file(struct sim_fs *fs, int id)
+{
+ const char *imsi = ofono_sim_get_imsi(fs->sim);
+ enum ofono_sim_phase phase = ofono_sim_get_phase(fs->sim);
+ char *path = g_strdup_printf(SIM_CACHE_PATH, imsi, phase, id);
+
+ remove(path);
g_free(path);
+}
- if (len > 0) {
- /* Remove everything */
- while (len--) {
- remove_imagefile(imsi, phase, entries[len]);
- g_free(entries[len]);
- }
+void sim_fs_image_cache_flush(struct sim_fs *fs)
+{
+ const char *imsi = ofono_sim_get_imsi(fs->sim);
+ enum ofono_sim_phase phase = ofono_sim_get_phase(fs->sim);
+ char *path = g_strdup_printf(SIM_IMAGE_CACHE_BASEPATH, imsi, phase);
+ struct dirent **entries;
+ int len = scandir(path, &entries, NULL, alphasort);
- g_free(entries);
+ g_free(path);
+
+ if (len <= 0)
+ return;
+
+ /* Remove everything */
+ while (len--) {
+ remove_imagefile(imsi, phase, entries[len]);
+ g_free(entries[len]);
}
- version = SIM_FS_VERSION;
- write_file(&version, 1, SIM_CACHE_MODE, SIM_CACHE_VERSION, imsi, phase);
+ g_free(entries);
+}
+
+void sim_fs_image_cache_flush_file(struct sim_fs *fs, int id)
+{
+ const char *imsi = ofono_sim_get_imsi(fs->sim);
+ enum ofono_sim_phase phase = ofono_sim_get_phase(fs->sim);
+ char *path = g_strdup_printf(SIM_IMAGE_CACHE_PATH, imsi, phase, id);
+
+ remove(path);
+ g_free(path);
}