diff options
-rw-r--r-- | .cvsignore | 6 | ||||
-rw-r--r-- | Makefile.am | 6 | ||||
-rw-r--r-- | libxklavier.spec.in | 1 | ||||
-rw-r--r-- | libxklavier/Makefile.am | 2 | ||||
-rw-r--r-- | libxklavier/xklavier_config.c | 11 |
5 files changed, 23 insertions, 3 deletions
@@ -24,4 +24,10 @@ libxklavier.pc autom4te.cache .tm_project.cache stamp-h2 +COPYING +INSTALL +depcomp +install-sh +missing +mkinstalldirs diff --git a/Makefile.am b/Makefile.am index 2408119..875840e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,8 +1,12 @@ SUBDIRS = libxklavier doc +config_xml_DATA = xfree86.xml +config_xmldir = $(datadir)/$(PACKAGE) + EXTRA_DIST = libxklavier.spec libxklavier.spec.in \ Doxyfile Doxyfile.in autogen.sh \ - CREDITS libxklavier.pc.in + CREDITS libxklavier.pc.in \ + $(config_xml_DATA) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libxklavier.pc diff --git a/libxklavier.spec.in b/libxklavier.spec.in index 4825858..ab6a982 100644 --- a/libxklavier.spec.in +++ b/libxklavier.spec.in @@ -67,4 +67,5 @@ rm -rf $RPM_BUILD_DIR/%{name}-%{version} %doc doc/html/*.html doc/html/*.png doc/html/*.css %{_libdir}/pkgconfig/*.pc %{_libdir}/*a +%{_datadir}/libxklavier %{_includedir}/* diff --git a/libxklavier/Makefile.am b/libxklavier/Makefile.am index f905e1a..7a918e9 100644 --- a/libxklavier/Makefile.am +++ b/libxklavier/Makefile.am @@ -1,4 +1,4 @@ -INCLUDES = -I. -I$(includedir) $(XML_CFLAGS) +CFLAGS = -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" -I. -I$(includedir) $(XML_CFLAGS) lib_LTLIBRARIES = libxklavier.la noinst_HEADERS = xklavier_private.h diff --git a/libxklavier/xklavier_config.c b/libxklavier/xklavier_config.c index 9c705e3..6b37911 100644 --- a/libxklavier/xklavier_config.c +++ b/libxklavier/xklavier_config.c @@ -18,6 +18,9 @@ #define XML_CFG_PATH ( XKB_BASE "/rules/xfree86.xml" ) +// For "bad" X servers we hold our own copy +#define XML_CFG_FALLBACK_PATH ( DATA_DIR "/xfree86.xml" ) + #define MULTIPLE_LAYOUTS_CHECK_PATH ( XKB_BASE "/symbols/pc/en_US" ) #define XK_XKB_KEYS @@ -452,7 +455,13 @@ void XklConfigTerm( void ) Bool XklConfigLoadRegistry( void ) { - theRegistry.doc = xmlParseFile( XML_CFG_PATH ); + struct stat statBuf; + + const char* fileName = XML_CFG_PATH; + if ( stat( XML_CFG_PATH, &statBuf ) != 0 ) + fileName = XML_CFG_FALLBACK_PATH; + + theRegistry.doc = xmlParseFile( fileName ); if( theRegistry.doc == NULL ) { theRegistry.xpathContext = NULL; |