summaryrefslogtreecommitdiff
path: root/tools/tools-common.h
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2020-07-08 12:51:54 +1000
committerRan Benita <ran@unusedvar.com>2020-07-25 11:05:14 +0300
commited57fb8b869ba1edd226b55953ace0719fe8e1c1 (patch)
tree00cf3c08e52080de2953db61ac999c5f46aa08da /tools/tools-common.h
parent1b796a7209b4962db69a9de2096464d117d9b0ef (diff)
downloadxorg-lib-libxkbcommon-ed57fb8b869ba1edd226b55953ace0719fe8e1c1.tar.gz
tools: add a xkbcli tool as entry point for the various tools we have
This is the base tool, no subtools are currently connected so you only get help and version for now. The goal here is to have a git-like infrastructure where /usr/bin/xkbcli is the main tool, anything else will hide in libexec. The infrastructure for this is copied from libinput. Tools themselves will will be installed in $prefix/libexec/xkbcommon and the xkbcli tool forks off whatever argv[1] is after modifying the PATH to include the libexec dir. libinput has additional code for checking whether we're running this from the builddir but it's a bit iffy and it's usefulness is limited - if you're in the builddir anyway you can just run ./builddir/xkbcli-<toolname> directly. So for this code here, running ./builddir/xkbcli <toolname> will execute the one in the prefix/libexecdir. Since we want that tool available everywhere even where some of the subtools aren't present, we need to ifdef the getopt handling. man page generation is handled via ronn which is a ruby program but allows markdown for the sources. It's hidden behind a meson option to disable where downloading ronn isn't an option. The setup is generic enough that we can add other man-pages by just appending to the array. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'tools/tools-common.h')
-rw-r--r--tools/tools-common.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/tools/tools-common.h b/tools/tools-common.h
index f0faa34..bc6fa38 100644
--- a/tools/tools-common.h
+++ b/tools/tools-common.h
@@ -49,6 +49,9 @@ tools_disable_stdin_echo(void);
void
tools_enable_stdin_echo(void);
+int
+tools_exec_command(const char *prefix, int argc, char **argv);
+
#ifdef _MSC_VER
#define setenv(varname, value, overwrite) _putenv_s((varname), (value))
#define unsetenv(varname) _putenv_s(varname, "")