src/ibuscomposetable: invalidate cache based on symlink mtime too

When the compose file is a symbolic link, take the link itself's
modification time into account (in addition to its target's) in
determining whether to invalidate the compose cache.

This is useful e.g. on NixOS systems where the compose file might point
to a store path with an irrelevant modification time, and we want the
cache to expire when the symlink itself changes.

BUG=https://github.com/ibus/ibus/pull/2362
This commit is contained in:
Naïm Favier 2021-11-16 00:33:37 +01:00
Родитель d53d31d2db
Коммит cfcc6f194c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 49B07322580B7EE2
1 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -1040,10 +1040,14 @@ ibus_compose_table_load_cache (const gchar *compose_file)
if (!g_file_test (path, G_FILE_TEST_EXISTS))
break;
if (g_stat (compose_file, &original_buf))
break;
if (g_stat (path, &cache_buf))
break;
if (g_lstat (compose_file, &original_buf))
break;
if (original_buf.st_mtime > cache_buf.st_mtime)
break;
if (g_stat (compose_file, &original_buf))
break;
if (original_buf.st_mtime > cache_buf.st_mtime)
break;
if (!g_file_get_contents (path, &contents, &length, &error)) {