| diff -aruN a/CFUniChar.c b/CFUniChar.c |
| --- a/CFUniChar.c 2009-02-19 16:25:06.000000000 -0800 |
| +++ b/CFUniChar.c 2016-06-03 16:45:46.707080496 -0700 |
| @@ -67,7 +67,7 @@ |
| #if DEPLOYMENT_TARGET_MACOSX |
| #define __kCFCharacterSetDir "/System/Library/CoreServices" |
| #elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD |
| -#define __kCFCharacterSetDir "/usr/local/share/CoreFoundation" |
| +#define __kCFCharacterSetDir __kCFDataDir "/CoreFoundation" |
| #elif DEPLOYMENT_TARGET_WINDOWS |
| #define __kCFCharacterSetDir "\\Windows\\CoreFoundation" |
| #define MAXPATHLEN MAX_PATH |
| @@ -129,6 +129,26 @@ |
| strlcpy(cpath, _CFDLLPath(), MAXPATHLEN); |
| #else |
| strlcpy(cpath, __kCFCharacterSetDir, MAXPATHLEN); |
| + // For non-absolute paths, prefix them with the path to this executable |
| + if (*cpath != '/') { |
| + int len; |
| + char *lastslash; |
| + |
| + len = readlink("/proc/self/exe", cpath, MAXPATHLEN); |
| + if (len < 0) { |
| + cpath[0] = '\0'; |
| + } else { |
| + cpath[len] = '\0'; |
| + } |
| + |
| + // Would have used dirname(), but it was behaving badly, and this works in place |
| + lastslash = strrchr(cpath, '/'); |
| + if (lastslash != NULL) { |
| + *(lastslash + 1) = '\0'; |
| + } |
| + |
| + strlcat(cpath, __kCFCharacterSetDir, MAXPATHLEN); |
| + } |
| #endif |
| |
| #if DEPLOYMENT_TARGET_WINDOWS || 0 |
| diff -aruN a/configure b/configure |
| --- a/configure 2016-06-03 16:43:52.651387528 -0700 |
| +++ b/configure 2016-06-03 16:44:19.875314281 -0700 |
| @@ -1305,7 +1305,7 @@ |
| |
| # Be sure to have absolute directory names. |
| for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ |
| - datadir sysconfdir sharedstatedir localstatedir includedir \ |
| + sysconfdir sharedstatedir localstatedir includedir \ |
| oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ |
| libdir localedir mandir |
| do |
| diff -aruN a/Makefile.am b/Makefile.am |
| --- a/Makefile.am 2009-03-10 16:31:21.000000000 -0700 |
| +++ b/Makefile.am 2016-06-03 16:44:19.879314270 -0700 |
| @@ -25,7 +25,7 @@ |
| # Unicode character mappings. |
| # |
| |
| -libCoreFoundation_la_datadir = ${datadir}/CoreServices |
| +libCoreFoundation_la_datadir = ${datadir}/CoreFoundation/CharacterSets |
| |
| libCoreFoundation_la_data_DATA = CFCharacterSetBitmaps.bitmap \ |
| CFUniCharPropertyDatabase.data \ |
| @@ -35,7 +35,7 @@ |
| CF_COMMON_CPPFLAGS = $(AM_CPPFLAGS) \ |
| -DU_SHOW_DRAFT_API=1 \ |
| -DCF_BUILDING_CF=1 \ |
| - -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \ |
| + -D__kCFDataDir=\"${datadir}\" \ |
| -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5 \ |
| -I$(top_srcdir)/include \ |
| -I$(top_srcdir)/include/mach_support |
| diff -aruN a/Makefile.in b/Makefile.in |
| --- a/Makefile.in 2009-03-10 23:44:36.000000000 -0700 |
| +++ b/Makefile.in 2016-06-03 16:44:19.879314270 -0700 |
| @@ -535,7 +535,7 @@ |
| # Define where we will install and where CoreFoundation can find its |
| # Unicode character mappings. |
| # |
| -libCoreFoundation_la_datadir = ${datadir}/CoreServices |
| +libCoreFoundation_la_datadir = ${datadir}/CoreFoundation/CharacterSets |
| libCoreFoundation_la_data_DATA = CFCharacterSetBitmaps.bitmap \ |
| CFUniCharPropertyDatabase.data \ |
| CFUnicodeData-B.mapping \ |
| @@ -544,7 +544,7 @@ |
| CF_COMMON_CPPFLAGS = $(AM_CPPFLAGS) \ |
| -DU_SHOW_DRAFT_API=1 \ |
| -DCF_BUILDING_CF=1 \ |
| - -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \ |
| + -D__kCFDataDir=\"${datadir}\" \ |
| -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5 \ |
| -I$(top_srcdir)/include \ |
| -I$(top_srcdir)/include/mach_support |