Make path retrieval consistent in xkb_compose_table_new_from_locale()
parent
17ad0df14a
commit
ddd1188d97
|
@ -143,10 +143,10 @@ resolve_locale(const char *locale)
|
|||
return alias ? alias : strdup(locale);
|
||||
}
|
||||
|
||||
const char *
|
||||
char *
|
||||
get_xcomposefile_path(void)
|
||||
{
|
||||
return secure_getenv("XCOMPOSEFILE");
|
||||
return strdup_safe(secure_getenv("XCOMPOSEFILE"));
|
||||
}
|
||||
|
||||
char *
|
||||
|
|
|
@ -30,7 +30,7 @@ resolve_locale(const char *locale);
|
|||
const char *
|
||||
get_xlocaledir_path(void);
|
||||
|
||||
const char *
|
||||
char *
|
||||
get_xcomposefile_path(void);
|
||||
|
||||
char *
|
||||
|
|
|
@ -161,8 +161,7 @@ xkb_compose_table_new_from_locale(struct xkb_context *ctx,
|
|||
enum xkb_compose_compile_flags flags)
|
||||
{
|
||||
struct xkb_compose_table *table;
|
||||
char *path = NULL;
|
||||
const char *cpath;
|
||||
char *path;
|
||||
FILE *file;
|
||||
bool ok;
|
||||
|
||||
|
@ -176,48 +175,47 @@ xkb_compose_table_new_from_locale(struct xkb_context *ctx,
|
|||
if (!table)
|
||||
return NULL;
|
||||
|
||||
cpath = get_xcomposefile_path();
|
||||
if (cpath) {
|
||||
file = fopen(cpath, "rb");
|
||||
if (file)
|
||||
goto found_path;
|
||||
}
|
||||
|
||||
cpath = path = get_xdg_xcompose_file_path();
|
||||
path = get_xcomposefile_path();
|
||||
if (path) {
|
||||
file = fopen(path, "rb");
|
||||
if (file)
|
||||
goto found_path;
|
||||
}
|
||||
free(path);
|
||||
path = NULL;
|
||||
|
||||
cpath = path = get_home_xcompose_file_path();
|
||||
path = get_xdg_xcompose_file_path();
|
||||
if (path) {
|
||||
file = fopen(path, "rb");
|
||||
if (file)
|
||||
goto found_path;
|
||||
}
|
||||
free(path);
|
||||
path = NULL;
|
||||
|
||||
cpath = path = get_locale_compose_file_path(table->locale);
|
||||
path = get_home_xcompose_file_path();
|
||||
if (path) {
|
||||
file = fopen(path, "rb");
|
||||
if (file)
|
||||
goto found_path;
|
||||
}
|
||||
free(path);
|
||||
|
||||
path = get_locale_compose_file_path(table->locale);
|
||||
if (path) {
|
||||
file = fopen(path, "rb");
|
||||
if (file)
|
||||
goto found_path;
|
||||
}
|
||||
free(path);
|
||||
path = NULL;
|
||||
|
||||
log_err(ctx, "couldn't find a Compose file for locale \"%s\"\n", locale);
|
||||
xkb_compose_table_unref(table);
|
||||
return NULL;
|
||||
|
||||
found_path:
|
||||
ok = parse_file(table, file, cpath);
|
||||
ok = parse_file(table, file, path);
|
||||
fclose(file);
|
||||
if (!ok) {
|
||||
free(path);
|
||||
xkb_compose_table_unref(table);
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue