summaryrefslogtreecommitdiff
path: root/src/context.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2020-07-10 08:50:02 +1000
committerRan Benita <ran@unusedvar.com>2020-08-30 21:49:41 +0300
commitd7b39f6ffbe9b46181c5597b0d0e7373eb2e9070 (patch)
tree9cc4b5e240b5532c822a5f9106a983a3a8d84425 /src/context.c
parent05d6efc41723601d4d38e0c43129d2ab9d53fa48 (diff)
downloadxorg-lib-libxkbcommon-d7b39f6ffbe9b46181c5597b0d0e7373eb2e9070.tar.gz
Add /etc/xkb as extra lookup path for system data files
This completes the usual triplet of configuration locations available for most processes: - vendor-provided data files in /usr/share/X11/xkb - system-specific data files in /etc/xkb - user-specific data files in $XDG_CONFIG_HOME/xkb The default lookup order user, system, vendor, just like everything else that uses these conventions. For include directives in rules files, the '%E' resolves to that path. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src/context.c')
-rw-r--r--src/context.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/context.c b/src/context.c
index ef9b774..2abaa9b 100644
--- a/src/context.c
+++ b/src/context.c
@@ -84,6 +84,13 @@ err:
}
const char *
+xkb_context_include_path_get_extra_path(struct xkb_context *ctx)
+{
+ const char *extra = secure_getenv("XKB_CONFIG_EXTRA_PATH");
+ return extra ? extra : DFLT_XKB_CONFIG_EXTRA_PATH;
+}
+
+const char *
xkb_context_include_path_get_system_path(struct xkb_context *ctx)
{
const char *root = secure_getenv("XKB_CONFIG_ROOT");
@@ -96,7 +103,7 @@ xkb_context_include_path_get_system_path(struct xkb_context *ctx)
XKB_EXPORT int
xkb_context_include_path_append_default(struct xkb_context *ctx)
{
- const char *home, *xdg, *root;
+ const char *home, *xdg, *root, *extra;
char *user_path;
int ret = 0;
@@ -126,6 +133,8 @@ xkb_context_include_path_append_default(struct xkb_context *ctx)
}
}
+ extra = xkb_context_include_path_get_extra_path(ctx);
+ ret |= xkb_context_include_path_append(ctx, extra);
root = xkb_context_include_path_get_system_path(ctx);
ret |= xkb_context_include_path_append(ctx, root);