diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2021-10-15 08:56:29 +0100 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2021-10-15 08:56:29 +0100 |
commit | c63b005b925d234898f4be04e2e64bfa985506fe (patch) | |
tree | 6ee0c751bd304c072b386c6b7533a573eb3c5542 | |
parent | 512a6e5d9184cdca28bbfa3b39665e818e14d2cc (diff) | |
download | enlightenment-c63b005b925d234898f4be04e2e64bfa985506fe.tar.gz |
e - exec - recent - fix loading of prevous recent data on append first
-rw-r--r-- | src/bin/e_exec.c | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/src/bin/e_exec.c b/src/bin/e_exec.c index 13ae1ed3b2..a3ce5f823d 100644 --- a/src/bin/e_exec.c +++ b/src/bin/e_exec.c @@ -117,6 +117,36 @@ _e_exec_cb_recent_idler(void *data EINA_UNUSED) } static void +_e_exec_recent_load(void) +{ + FILE *f; + char buf[4096]; + long long timi; + + if (_e_exec_recent) return; + + e_user_dir_snprintf(buf, sizeof(buf), "recent-files.txt"); + f = fopen(buf, "r"); + if (!f) return; + while (fscanf(f, "%lli %4095[^\n]\n", &timi, buf) == 2) + { + E_Exec_Recent_File *fl = calloc(1, sizeof(E_Exec_Recent_File)); + + if (!fl) free(fl); + if (!_e_exec_recent) _e_exec_recent = calloc(1, sizeof(E_Exec_Recent)); + if (!_e_exec_recent) + { + free(fl); + break; + } + fl->file = eina_stringshare_add(buf); + fl->timestamp = (double)timi / 100.0; + _e_exec_recent->files = eina_list_prepend(_e_exec_recent->files, fl); + } + fclose(f); +} + +static void _e_exec_recent_file_append(const char *file, double tim) { Eina_List *l; @@ -124,6 +154,7 @@ _e_exec_recent_file_append(const char *file, double tim) E_Exec_Recent_File *fl2; if (!fl) return; + _e_exec_recent_load(); if (!_e_exec_recent) _e_exec_recent = calloc(1, sizeof(E_Exec_Recent)); if (!_e_exec_recent) @@ -215,36 +246,7 @@ e_exec_executor_set(E_Exec_Instance *(*func)(void *data, E_Zone * zone, Efreet_D E_API const Eina_List * e_exec_recent_files_get(void) { - if (!_e_exec_recent) - { - FILE *f; - char buf[4096]; - - e_user_dir_snprintf(buf, sizeof(buf), "recent-files.txt"); - f = fopen(buf, "r"); - if (f) - { - long long timi; - - while (fscanf(f, "%lli %4095[^\n]\n", &timi, buf) == 2) - { - E_Exec_Recent_File *fl = calloc(1, sizeof(E_Exec_Recent_File)); - - if (!fl) free(fl); - if (!_e_exec_recent) - _e_exec_recent = calloc(1, sizeof(E_Exec_Recent)); - if (!_e_exec_recent) - { - free(fl); - break; - } - fl->file = eina_stringshare_add(buf); - fl->timestamp = (double)timi / 100.0; - _e_exec_recent->files = eina_list_prepend(_e_exec_recent->files, fl); - } - fclose(f); - } - } + _e_exec_recent_load(); if (!_e_exec_recent) return NULL; return _e_exec_recent->files; } |