diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2011-01-10 12:01:31 +0100 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-01-12 14:07:09 -0600 |
commit | 2cec48fb1ce9c790dc83e73295ecc54c957dd812 (patch) | |
tree | 004c4bc6e06e7b7ae09af7b70d6bc14e9b29973c /src/simfs.c | |
parent | 5213119ac514428edb1547e0e2f49eadc60ec111 (diff) | |
download | ofono-2cec48fb1ce9c790dc83e73295ecc54c957dd812.tar.bz2 |
simfs: Add cache flushing functions
Diffstat (limited to 'src/simfs.c')
-rw-r--r-- | src/simfs.c | 68 |
1 files changed, 51 insertions, 17 deletions
diff --git a/src/simfs.c b/src/simfs.c index 617af149..b77e1dc0 100644 --- a/src/simfs.c +++ b/src/simfs.c @@ -907,9 +907,6 @@ void sim_fs_check_version(struct sim_fs *fs) 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; @@ -918,10 +915,20 @@ void sim_fs_check_version(struct sim_fs *fs) 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) { @@ -934,20 +941,47 @@ void sim_fs_check_version(struct sim_fs *fs) 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); } |