[PATCH weston 6/7] weston.ini: Allow a relative path for input-method

Quentin Glidic sardemff7+wayland at sardemff7.net
Tue Jun 18 00:11:33 PDT 2013


From: Quentin Glidic <sardemff7+git at sardemff7.net>

Signed-off-by: Quentin Glidic <sardemff7+git at sardemff7.net>
---
 man/Makefile.am    | 1 +
 man/weston.ini.man | 3 ++-
 src/text-backend.c | 8 ++++++++
 weston.ini         | 2 +-
 4 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/man/Makefile.am b/man/Makefile.am
index 37174e2..b3a3881 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -6,6 +6,7 @@ endif
 
 MAN_SUBSTS = \
 	-e 's|__weston_native_backend__|$(WESTON_NATIVE_BACKEND)|g' \
+	-e 's|__weston_libexec_dir__|$(pkglibexecdir)|g' \
 	-e 's|__weston_modules_dir__|$(moduledir)|g' \
 	-e 's|__version__|$(PACKAGE_VERSION)|g'
 
diff --git a/man/weston.ini.man b/man/weston.ini.man
index c3e5747..e348c44 100644
--- a/man/weston.ini.man
+++ b/man/weston.ini.man
@@ -290,8 +290,9 @@ be one of the following 8 strings:
 .RE
 .SH "INPUT-METHOD SECTION"
 .TP 7
-.BI "path=" "/usr/libexec/weston-keyboard"
+.BI "path=" "/usr/libexec/weston/weston-keyboard"
 sets the path of the on screen keyboard input method (string).
+May be relative to __weston_libexec_dir__.
 .RE
 .RE
 .SH "KEYBOARD SECTION"
diff --git a/src/text-backend.c b/src/text-backend.c
index e078e3f..316b2c3 100644
--- a/src/text-backend.c
+++ b/src/text-backend.c
@@ -25,6 +25,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
 #include <unistd.h>
 #include <time.h>
 
@@ -916,12 +917,19 @@ static void
 text_backend_configuration(struct text_backend *text_backend)
 {
 	struct weston_config_section *section;
+	char path[PATH_MAX];
 
 	section = weston_config_get_section(text_backend->compositor->config,
 					    "input-method", NULL, NULL);
 	weston_config_section_get_string(section, "path",
 					 &text_backend->input_method.path,
 					 PKGLIBEXECDIR "/weston-keyboard");
+	if (text_backend->input_method.path[0] != '/') {
+		snprintf(path, sizeof path, "%s/%s", PKGLIBEXECDIR, text_backend->input_method.path);
+		free(text_backend->input_method.path);
+		text_backend->input_method.path = strdup(path);
+	}
+	text_backend->input_method.path = path;
 }
 
 static void
diff --git a/weston.ini b/weston.ini
index f2abceb..a9ddbc9 100644
--- a/weston.ini
+++ b/weston.ini
@@ -40,7 +40,7 @@ path=/usr/libexec/weston-screensaver
 duration=600
 
 [input-method]
-path=/usr/libexec/weston-keyboard
+path=weston-keyboard
 
 #[output]
 #name=LVDS1
-- 
1.8.3



More information about the wayland-devel mailing list