diff -Paur --no-dereference -- libfontconfig.upstream/fc-blanks/Makefile.in libfontconfig/fc-blanks/Makefile.in --- libfontconfig.upstream/fc-blanks/Makefile.in +++ libfontconfig/fc-blanks/Makefile.in @@ -350,7 +350,8 @@ $(TMPL) \ $(NULL) -DISTCLEANFILES = $(BLANKS_H) +# PATCH: fc-blanks.py doesn't work on Sortix (python2 urllib issues). +DISTCLEANFILES = all: all-am .SUFFIXES: diff -Paur --no-dereference -- libfontconfig.upstream/fontconfig.pc.in libfontconfig/fontconfig.pc.in --- libfontconfig.upstream/fontconfig.pc.in +++ libfontconfig/fontconfig.pc.in @@ -14,5 +14,6 @@ Requires: @PKGCONFIG_REQUIRES@ Requires.private: @PKGCONFIG_REQUIRES_PRIVATELY@ Libs: -L${libdir} -lfontconfig -Libs.private: @EXPAT_LIBS@ @FREETYPE_LIBS@ @ICONV_LIBS@ @LIBXML2_LIBS@ -Cflags: -I${includedir} @EXPAT_CFLAGS@ @FREETYPE_CFLAGS@ @ICONV_CFLAGS@ @LIBXML2_CFLAGS@ +Libs.private: @ICONV_LIBS@ +# PATCH: These were provided by the above Requires and were not cross safe. +Cflags: -I${includedir} @ICONV_CFLAGS@ diff -Paur --no-dereference -- libfontconfig.upstream/Makefile.in libfontconfig/Makefile.in --- libfontconfig.upstream/Makefile.in +++ libfontconfig/Makefile.in @@ -434,7 +434,8 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = fontconfig fc-blanks fc-case fc-lang fc-glyphname src \ +# PATCH: fc-blanks is a python script that doesn't run on Sortix right now. +SUBDIRS = fontconfig fc-case fc-lang fc-glyphname src \ fc-cache fc-cat fc-list fc-match fc-pattern fc-query fc-scan \ fc-validate conf.d test $(am__append_1) ACLOCAL_AMFLAGS = -I m4 diff -Paur --no-dereference -- libfontconfig.upstream/src/fccache.c libfontconfig/src/fccache.c --- libfontconfig.upstream/src/fccache.c +++ libfontconfig/src/fccache.c @@ -38,6 +38,9 @@ #if defined(_WIN32) #include #endif +#if defined(__has_include) && __has_include() +#include +#endif #ifndef O_BINARY #define O_BINARY 0 @@ -1266,7 +1269,11 @@ #if defined(_WIN32) if (_locking (fd, _LK_LOCK, 1) == -1) goto bail; -#else +/* PATCH: Sortix refuses to implement crap file locking. */ +#elif defined(LOCK_EX) + if (flock(fd, LOCK_EX) == -1) + goto bail; +#elif !defined(__sortix__) struct flock fl; fl.l_type = F_WRLCK; @@ -1276,17 +1283,21 @@ fl.l_pid = getpid (); if (fcntl (fd, F_SETLKW, &fl) == -1) goto bail; +#else +#define FcDirCacheLock_NOBAIL #endif break; } } FcStrListDone (list); return fd; +#ifndef FcDirCacheLock_NOBAIL bail: FcStrListDone (list); if (fd != -1) close (fd); return -1; +#endif } void @@ -1296,7 +1307,10 @@ { #if defined(_WIN32) _locking (fd, _LK_UNLCK, 1); -#else +/* PATCH: Sortix refuses to implement crap file locking. */ +#elif defined(LOCK_EX) + flock(fd, LOCK_UN); +#elif !defined(__sortix__) struct flock fl; fl.l_type = F_UNLCK; diff -Paur --no-dereference -- libfontconfig.upstream/src/fccompat.c libfontconfig/src/fccompat.c --- libfontconfig.upstream/src/fccompat.c +++ libfontconfig/src/fccompat.c @@ -164,69 +164,8 @@ int32_t FcRandom(void) { - int32_t result; - -#if HAVE_RANDOM_R - static struct random_data fcrandbuf; - static char statebuf[256]; - static FcBool initialized = FcFalse; -#ifdef _AIX - static char *retval; - long res; -#endif - - if (initialized != FcTrue) - { -#ifdef _AIX - initstate_r (time (NULL), statebuf, 256, &retval, &fcrandbuf); -#else - initstate_r (time (NULL), statebuf, 256, &fcrandbuf); -#endif - initialized = FcTrue; - } - -#ifdef _AIX - random_r (&res, &fcrandbuf); - result = (int32_t)res; -#else - random_r (&fcrandbuf, &result); -#endif -#elif HAVE_RANDOM - static char statebuf[256]; - char *state; - static FcBool initialized = FcFalse; - - if (initialized != FcTrue) - { - state = initstate (time (NULL), statebuf, 256); - initialized = FcTrue; - } - else - state = setstate (statebuf); - - result = random (); - - setstate (state); -#elif HAVE_LRAND48 - result = lrand48 (); -#elif HAVE_RAND_R - static unsigned int seed = time (NULL); - - result = rand_r (&seed); -#elif HAVE_RAND - static FcBool initialized = FcFalse; - - if (initialized != FcTrue) - { - srand (time (NULL)); - initialized = FcTrue; - } - result = rand (); -#else -# error no random number generator function available. -#endif - - return result; + /* PATCH: Use good random. */ + return arc4random_uniform (INT32_MAX); } #ifdef _WIN32 diff -Paur --no-dereference -- libfontconfig.upstream/src/fcname.c libfontconfig/src/fcname.c --- libfontconfig.upstream/src/fcname.c +++ libfontconfig/src/fcname.c @@ -506,17 +506,17 @@ case FcTypeVoid: return FcTrue; case FcTypeInteger: - sprintf ((char *) temp, "%d", v.u.i); + snprintf ((char *) temp, sizeof (temp), "%d", v.u.i); return FcNameUnparseString (buf, temp, 0); case FcTypeDouble: - sprintf ((char *) temp, "%g", v.u.d); + snprintf ((char *) temp, sizeof (temp), "%g", v.u.d); return FcNameUnparseString (buf, temp, 0); case FcTypeString: return FcNameUnparseString (buf, v.u.s, escape); case FcTypeBool: return FcNameUnparseString (buf, v.u.b ? (FcChar8 *) "True" : (FcChar8 *) "False", 0); case FcTypeMatrix: - sprintf ((char *) temp, "%g %g %g %g", + snprintf ((char *) temp, sizeof (temp), "%g %g %g %g", v.u.m->xx, v.u.m->xy, v.u.m->yx, v.u.m->yy); return FcNameUnparseString (buf, temp, 0); case FcTypeCharSet: @@ -526,7 +526,7 @@ case FcTypeFTFace: return FcTrue; case FcTypeRange: - sprintf ((char *) temp, "[%g %g)", v.u.r->begin, v.u.r->end); + snprintf ((char *) temp, sizeof (temp), "[%g %g)", v.u.r->begin, v.u.r->end); return FcNameUnparseString (buf, temp, 0); } return FcFalse; diff -Paur --no-dereference -- libfontconfig.upstream/src/fcobjs.c libfontconfig/src/fcobjs.c --- libfontconfig.upstream/src/fcobjs.c +++ libfontconfig/src/fcobjs.c @@ -24,11 +24,12 @@ #include "fcint.h" +/* TODO: Stick with existing fcobjshash.h regardless of system gperf. */ static unsigned int -FcObjectTypeHash (register const char *str, register FC_GPERF_SIZE_T len); +FcObjectTypeHash (register const char *str, register size_t len); static const struct FcObjectTypeInfo * -FcObjectTypeLookup (register const char *str, register FC_GPERF_SIZE_T len); +FcObjectTypeLookup (register const char *str, register size_t len); #include "fcobjshash.h" diff -Paur --no-dereference -- libfontconfig.upstream/src/Makefile.in libfontconfig/src/Makefile.in --- libfontconfig.upstream/src/Makefile.in +++ libfontconfig/src/Makefile.in @@ -496,7 +496,6 @@ stamp-fcstdint \ fcstdint.h \ stamp-fcobjshash.gperf \ - fcobjshash.h \ fcobjshash.gperf all: $(BUILT_SOURCES) @@ -912,9 +911,10 @@ ' - > $@.tmp && \ mv -f $@.tmp fcobjshash.gperf && touch $@ || ( $(RM) $@.tmp && false ) -fcobjshash.h: Makefile fcobjshash.gperf - $(AM_V_GEN) $(GPERF) --pic -m 100 fcobjshash.gperf > $@.tmp && \ - mv -f $@.tmp $@ || ( $(RM) $@.tmp && false ) +# PATCH: Sortix doesn't have gperf at the moment. +#fcobjshash.h: Makefile fcobjshash.gperf +# $(AM_V_GEN) $(GPERF) --pic -m 100 fcobjshash.gperf > $@.tmp && \ +# mv -f $@.tmp $@ || ( $(RM) $@.tmp && false ) @ENABLE_SHARED_TRUE@install-data-local: install-ms-import-lib install-libtool-import-lib diff -Paur --no-dereference -- libfontconfig.upstream/test/test-migration.c libfontconfig/test/test-migration.c --- libfontconfig.upstream/test/test-migration.c +++ libfontconfig/test/test-migration.c @@ -22,6 +22,8 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ +/* PATCH: Need HAVE_FOO macros.. */ +#include "../config.h" #include #include #include