summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cvsignore6
-rw-r--r--Makefile.am6
-rw-r--r--libxklavier.spec.in1
-rw-r--r--libxklavier/Makefile.am2
-rw-r--r--libxklavier/xklavier_config.c11
5 files changed, 23 insertions, 3 deletions
diff --git a/.cvsignore b/.cvsignore
index ad62422..521af6e 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -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;