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