[packages/fontconfig] - rel 4; small fixes from gitg

arekm arekm at pld-linux.org
Sat Dec 21 19:51:08 CET 2013


commit 38de32ca832712400549795c677899a20ae879a6
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sat Dec 21 19:51:03 2013 +0100

    - rel 4; small fixes from gitg

 fontconfig-git.patch | 755 +++++++++++++++++++++++++++++++++++++++++++++++++++
 fontconfig.spec      |   4 +-
 2 files changed, 758 insertions(+), 1 deletion(-)
---
diff --git a/fontconfig.spec b/fontconfig.spec
index bf55179..3ce6315 100644
--- a/fontconfig.spec
+++ b/fontconfig.spec
@@ -9,7 +9,7 @@ Summary(pl.UTF-8):	Narzędzia do konfigurowania fontów
 Summary(pt_BR.UTF-8):	Ferramentas para configuração e customização do acesso a fontes
 Name:		fontconfig
 Version:	2.11.0
-Release:	3
+Release:	4
 Epoch:		1
 License:	MIT
 Group:		Libraries
@@ -17,6 +17,7 @@ Source0:	http://fontconfig.org/release/%{name}-%{version}.tar.bz2
 # Source0-md5:	000bd4baf7aefa828e03414d0c8c7dc5
 Source1:	%{name}-lcd-filter.conf
 Patch0:		%{name}-bitstream-cyberbit.patch
+Patch1:		%{name}-git.patch
 URL:		http://fontconfig.org/
 BuildRequires:	autoconf >= 2.61
 BuildRequires:	automake >= 1:1.11
@@ -127,6 +128,7 @@ Este pacote contém a biblioteca estática do fontconfig
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 
 %build
 %{__libtoolize}
diff --git a/fontconfig-git.patch b/fontconfig-git.patch
new file mode 100644
index 0000000..a8f7aec
--- /dev/null
+++ b/fontconfig-git.patch
@@ -0,0 +1,755 @@
+diff --git a/conf.d/10-no-sub-pixel.conf b/conf.d/10-no-sub-pixel.conf
+index cf12465..635847c 100644
+--- a/conf.d/10-no-sub-pixel.conf
++++ b/conf.d/10-no-sub-pixel.conf
+@@ -1,7 +1,7 @@
+ <?xml version="1.0"?>
+ <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+ <fontconfig>
+-<!--  Enable sub-pixel rendering --> 
++<!--  Disable sub-pixel rendering --> 
+   <match target="pattern">
+     <!--
+       This configuration is available on the major desktop environments.
+diff --git a/conf.d/30-metric-aliases.conf b/conf.d/30-metric-aliases.conf
+index d0d9ea2..49a9602 100644
+--- a/conf.d/30-metric-aliases.conf
++++ b/conf.d/30-metric-aliases.conf
+@@ -22,8 +22,11 @@ Microsoft fonts:  Liberation fonts:       Google CrOS core fonts:  StarOffice fo
+ ================  ======================  =======================  =================  ==============
+ Arial             Liberation Sans         Arimo                    Albany             Albany AMT
+ Arial Narrow      Liberation Sans Narrow
+-Times New Roman   Liberation Serif        Cousine                  Thorndale          Thorndale AMT
+-Courier New       Liberation Mono         Tinos                    Cumberland         Cumberland AMT
++Times New Roman   Liberation Serif        Tinos                    Thorndale          Thorndale AMT
++Courier New       Liberation Mono         Cousine                  Cumberland         Cumberland AMT
++Cambria                                   Caladea
++Calibri                                   Carlito
++Symbol                                    SymbolNeu
+ 
+ Microsoft fonts:  Other fonts:
+ ================  ============
+@@ -307,7 +310,26 @@ but in an order preferring similar designs first.  We do this in three steps:
+ 	  </default>
+ 	</alias>
+ 
++	<alias binding="same">
++	  <family>Caladea</family>
++	  <default>
++	  <family>Cambria</family>
++	  </default>
++	</alias>
+ 
++	<alias binding="same">
++	  <family>Carlito</family>
++	  <default>
++	  <family>Calibri</family>
++	  </default>
++	</alias>
++
++	<alias binding="same">
++	  <family>SymbolNeu</family>
++	  <default>
++	  <family>Symbol</family>
++	  </default>
++  </alias>
+ 
+ <!-- Accept the other group as fallback -->
+ 
+@@ -494,4 +516,25 @@ but in an order preferring similar designs first.  We do this in three steps:
+ 	  </accept>
+ 	</alias>
+ 
++	<alias binding="same">
++	  <family>Cambria</family>
++	  <accept>
++	    <family>Caladea</family>
++	  </accept>
++	</alias>
++
++	<alias binding="same">
++	  <family>Calibri</family>
++	  <accept>
++	    <family>Carlito</family>
++	  </accept>
++  </alias>
++
++	<alias binding="same">
++	  <family>Symbol</family>
++	  <accept>
++	    <family>SymbolNeu</family>
++	  </accept>
++  </alias>
++
+ </fontconfig>
+diff --git a/configure.ac b/configure.ac
+index c3743f4..728a550 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -148,52 +148,42 @@ AC_TYPE_PID_T
+ # Checks for library functions.
+ AC_FUNC_VPRINTF
+ AC_FUNC_MMAP
+-AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs lstat])
++AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r readlink regcomp regerror regexec regfree fstatvfs fstatfs lstat])
+ 
+ dnl AC_CHECK_FUNCS doesn't check for header files.
+ dnl posix_fadvise() may be not available in older libc.
+-fc_saved_CFLAGS="$CFLAGS"
+-CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
+-AC_MSG_CHECKING([for posix_fadvise])
+-AC_LINK_IFELSE([AC_LANG_SOURCE([[
+-	#include <fcntl.h>
+-	int main(void) {
+-	    return posix_fadvise(0, 0, 0, 0);
+-	}
+-	]])],[
+-		AC_MSG_RESULT([yes])
+-		AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the 'posix_fadvise' function.])
+-	],[AC_MSG_RESULT([no])])
++AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0])
++AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadivse' function.])
+ if test "$os_win32" = "no"; then
+ 	AC_MSG_CHECKING([for scandir])
+-	AC_LINK_IFELSE([AC_LANG_SOURCE([[
++	fc_saved_CFLAGS="$CFLAGS"
++	CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
++	AC_TRY_COMPILE([
+ 		#include <dirent.h>
+-		int comp(const struct dirent **, const struct dirent **);
+-		int comp(const struct dirent **a, const struct dirent **b) { return 0; }
+-		int main(void) {
+-		    struct dirent **d;
+-		    return scandir(".", &d, 0, &comp) >= 0;
+-		}
+-		]])],[
++		int main(void);
++	], [
++		int (* comp) (const struct dirent **, const struct dirent **) = 0;
++		struct dirent **d;
++		return scandir(".", &d, 0, comp) >= 0;
++	], [
++		AC_MSG_RESULT([yes])
++		AC_DEFINE([HAVE_SCANDIR], [1], [Define to 1 if you have the 'scandir' function.])
++	], [
++		AC_TRY_COMPILE([
++			#include <dirent.h>
++			int main(void);
++		], [
++			int (* comp) (const void *, const void *) = 0;
++			struct dirent **d;
++			return scandir(".", &d, 0, comp) >= 0;
++		], [
+ 			AC_MSG_RESULT([yes])
+-			AC_DEFINE([HAVE_SCANDIR], [1], [Define to 1 if you have the 'scandir' function.])
++			AC_DEFINE([HAVE_SCANDIR_VOID_P], [1], [Define to 1 if you have the 'scandir' function with int (* compar)(const void *, const void *)])
+ 		],[
+-			AC_LINK_IFELSE([AC_LANG_SOURCE([[
+-				#include <dirent.h>
+-				int comp(const void *, const void *);
+-				int comp(const void *a, const void *b) { return 0; }
+-				int main(void) {
+-				    struct dirent **d;
+-				    return scandir(".", &d, 0, &comp) >= 0;
+-				}
+-			]])],[
+-				AC_MSG_RESULT([yes])
+-				AC_DEFINE([HAVE_SCANDIR_VOID_P], [1], [Define to 1 if you have the 'scandir' function with int (* compar)(const void *, const void *)])
+-			],[
+-				AC_MSG_ERROR([
++			AC_MSG_ERROR([
+ *** No scandir function available.])
+-			])
+ 		])
++	])
+ fi
+ CFLAGS="$fc_saved_CFLAGS"
+ 
+@@ -531,7 +521,7 @@ AC_ARG_WITH(cache-dir,
+ case $fc_cachedir in
+ no|yes)
+ 	if test "$os_win32" = "yes"; then
+-		fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
++		fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
+ 	else
+ 		fc_cachedir='${localstatedir}/cache/${PACKAGE}'
+ 	fi
+diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c
+index af7ba6d..bf3b6b4 100644
+--- a/fc-cache/fc-cache.c
++++ b/fc-cache/fc-cache.c
+@@ -67,7 +67,7 @@
+ const struct option longopts[] = {
+     {"force", 0, 0, 'f'},
+     {"really-force", 0, 0, 'r'},
+-    {"sysroot", 0, 0, 'y'},
++    {"sysroot", required_argument, 0, 'y'},
+     {"system-only", 0, 0, 's'},
+     {"version", 0, 0, 'V'},
+     {"verbose", 0, 0, 'v'},
+@@ -118,7 +118,7 @@ usage (char *program, int error)
+ static FcStrSet *processed_dirs;
+ 
+ static int
+-scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose, FcBool recursive, int *changed)
++scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose, FcBool recursive, int *changed, FcStrSet *updateDirs)
+ {
+     int		    ret = 0;
+     const FcChar8   *dir;
+@@ -137,7 +137,10 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
+     {
+ 	if (verbose)
+ 	{
+-	    printf ("%s: ", dir);
++	    if (!recursive)
++		printf ("Re-scanning %s: ", dir);
++	    else
++		printf ("%s: ", dir);
+ 	    fflush (stdout);
+ 	}
+ 	
+@@ -226,6 +229,8 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
+ 	    }
+ 	    for (i = 0; i < FcCacheNumSubdir (cache); i++)
+ 		FcStrSetAdd (subdirs, FcCacheSubdir (cache, i));
++	    if (updateDirs && FcCacheNumSubdir (cache) > 0)
++		FcStrSetAdd (updateDirs, dir);
+ 	
+ 	    FcDirCacheUnload (cache);
+ 	
+@@ -238,7 +243,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
+ 		continue;
+ 	    }
+ 	    FcStrSetAdd (processed_dirs, dir);
+-	    ret += scanDirs (sublist, config, force, really_force, verbose, recursive, changed);
++	    ret += scanDirs (sublist, config, force, really_force, verbose, recursive, changed, updateDirs);
+ 	    FcStrListDone (sublist);
+ 	}
+ 	else
+@@ -271,7 +276,7 @@ cleanCacheDirectories (FcConfig *config, FcBool verbose)
+ int
+ main (int argc, char **argv)
+ {
+-    FcStrSet	*dirs;
++    FcStrSet	*dirs, *updateDirs;
+     FcStrList	*list;
+     FcBool    	verbose = FcFalse;
+     FcBool	force = FcFalse;
+@@ -369,13 +374,18 @@ main (int argc, char **argv)
+ 	fprintf(stderr, "Cannot malloc\n");
+ 	return 1;
+     }
+-	
++
++    updateDirs = FcStrSetCreate ();
+     changed = 0;
+-    ret = scanDirs (list, config, force, really_force, verbose, FcTrue, &changed);
++    ret = scanDirs (list, config, force, really_force, verbose, FcTrue, &changed, updateDirs);
+     /* Update the directory cache again to avoid the race condition as much as possible */
+-    FcStrListFirst (list);
+-    ret += scanDirs (list, config, FcTrue, really_force, verbose, FcFalse, &changed);
+     FcStrListDone (list);
++    list = FcStrListCreate (updateDirs);
++    if (list)
++    {
++	ret += scanDirs (list, config, FcTrue, really_force, verbose, FcFalse, &changed, NULL);
++	FcStrListDone (list);
++    }
+ 
+     /*
+      * Try to create CACHEDIR.TAG anyway.
+diff --git a/fc-glyphname/fc-glyphname.c b/fc-glyphname/fc-glyphname.c
+index 8402781..078490a 100644
+--- a/fc-glyphname/fc-glyphname.c
++++ b/fc-glyphname/fc-glyphname.c
+@@ -233,7 +233,7 @@ dump (FcGlyphName * const *table, const char *name)
+ int
+ main (int argc FC_UNUSED, char **argv)
+ {
+-    char	*files[MAX_GLYPHFILE];
++    char	*files[MAX_GLYPHFILE + 1];
+     char	line[1024];
+     FILE	*f;
+     int		i;
+diff --git a/fc-lang/fc-lang.c b/fc-lang/fc-lang.c
+index 0f4217f..38fc697 100644
+--- a/fc-lang/fc-lang.c
++++ b/fc-lang/fc-lang.c
+@@ -254,7 +254,7 @@ static int compare (const void *a, const void *b)
+ int
+ main (int argc FC_UNUSED, char **argv)
+ {
+-    static Entry	entries[MAX_LANG];
++    static Entry	entries[MAX_LANG + 1];
+     static FcCharSet	*sets[MAX_LANG];
+     static int		duplicate[MAX_LANG];
+     static int		country[MAX_LANG];
+diff --git a/fonts.dtd b/fonts.dtd
+index 4c38e77..479f2c0 100644
+--- a/fonts.dtd
++++ b/fonts.dtd
+@@ -140,7 +140,7 @@
+     if 'target' is 'font', execute the match on the result of a font
+     selection.
+ -->
+-<!ELEMENT match (test*, edit*)+>
++<!ELEMENT match (test|edit)+>
+ <!ATTLIST match
+ 	  target (pattern|font|scan) "pattern">
+ 
+diff --git a/m4/ac_check_symbol.m4 b/m4/ac_check_symbol.m4
+new file mode 100644
+index 0000000..41c1528
+--- /dev/null
++++ b/m4/ac_check_symbol.m4
+@@ -0,0 +1,48 @@
++dnl @synopsis AC_CHECK_SYMBOL(SYMBOL, HEADER... [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])
++dnl
++dnl a wrapper around AC_EGREP_HEADER the shellvar $ac_found will hold
++dnl the HEADER-name that had been containing the symbol. This value is
++dnl shown to the user.
++dnl
++dnl @category C
++dnl @author Guido U. Draheim <guidod at gmx.de>
++dnl @version 2006-10-13
++dnl @license GPLWithACException
++
++AC_DEFUN([AC_CHECK_SYMBOL],
++[AC_MSG_CHECKING([for $1 in $2])
++AC_CACHE_VAL(ac_cv_func_$1,
++[AC_REQUIRE_CPP()dnl
++changequote(, )dnl
++symbol="[^a-zA-Z_0-9]$1[^a-zA-Z_0-9]"
++changequote([, ])dnl
++ac_found=no
++for ac_header in $2 ; do
++  ac_safe=`echo "$ac_header" | sed 'y%./+-%__p_%' `
++  if test $ac_found != "yes" ; then
++      if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++            AC_EGREP_HEADER( $symbol, $ac_header, [ac_found="$ac_header"] )
++      fi
++  fi
++done
++if test "$ac_found" != "no" ; then
++  AC_MSG_RESULT($ac_found)
++  ifelse([$3], , :, [$3])
++else
++  AC_MSG_RESULT(no)
++  ifelse([$4], , , [$4
++])dnl
++fi
++])])
++
++dnl AC_CHECK_SYMBOLS( symbol..., header... [, action-if-found [, action-if-not-found]])
++AC_DEFUN([AC_CHECK_SYMBOLS],
++[for ac_func in $1
++do
++P4_CHECK_SYMBOL($ac_func, $2,
++[changequote(, )dnl
++  ac_tr_func=HAVE_`echo $ac_func | sed -e 'y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:' -e 's:[[^A-Z0-9]]:_:'`
++changequote([, ])dnl
++  AC_DEFINE_UNQUOTED($ac_tr_func) $2], $3)dnl
++done
++])
+diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4
+index d90de34..e77541c 100644
+--- a/m4/ax_pthread.m4
++++ b/m4/ax_pthread.m4
+@@ -82,7 +82,7 @@
+ #   modified version of the Autoconf Macro, you may extend this special
+ #   exception to the GPL to apply to your modified version as well.
+ 
+-#serial 18
++#serial 21
+ 
+ AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+ AC_DEFUN([AX_PTHREAD], [
+@@ -103,8 +103,8 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+         save_LIBS="$LIBS"
+         LIBS="$PTHREAD_LIBS $LIBS"
+         AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+-        AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
+-        AC_MSG_RESULT($ax_pthread_ok)
++        AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
++        AC_MSG_RESULT([$ax_pthread_ok])
+         if test x"$ax_pthread_ok" = xno; then
+                 PTHREAD_LIBS=""
+                 PTHREAD_CFLAGS=""
+@@ -162,8 +162,27 @@ case ${host_os} in
+         darwin*)
+         ax_pthread_flags="-pthread $ax_pthread_flags"
+         ;;
++	netbsd*)
++	# use libc stubs, don't link against libpthread, to allow
++	# dynamic loading
++	ax_pthread_flags=""
++	;;
+ esac
+ 
++# Clang doesn't consider unrecognized options an error unless we specify
++# -Werror. We throw in some extra Clang-specific options to ensure that
++# this doesn't happen for GCC, which also accepts -Werror.
++
++AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
++save_CFLAGS="$CFLAGS"
++ax_pthread_extra_flags="-Werror"
++CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
++                  [AC_MSG_RESULT([yes])],
++                  [ax_pthread_extra_flags=
++                   AC_MSG_RESULT([no])])
++CFLAGS="$save_CFLAGS"
++
+ if test x"$ax_pthread_ok" = xno; then
+ for flag in $ax_pthread_flags; do
+ 
+@@ -178,7 +197,7 @@ for flag in $ax_pthread_flags; do
+                 ;;
+ 
+                 pthread-config)
+-                AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
++                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
+                 if test x"$ax_pthread_config" = xno; then continue; fi
+                 PTHREAD_CFLAGS="`pthread-config --cflags`"
+                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+@@ -193,7 +212,7 @@ for flag in $ax_pthread_flags; do
+         save_LIBS="$LIBS"
+         save_CFLAGS="$CFLAGS"
+         LIBS="$PTHREAD_LIBS $LIBS"
+-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
+ 
+         # Check for various functions.  We must include pthread.h,
+         # since some functions may be macros.  (On the Sequent, we
+@@ -219,7 +238,7 @@ for flag in $ax_pthread_flags; do
+         LIBS="$save_LIBS"
+         CFLAGS="$save_CFLAGS"
+ 
+-        AC_MSG_RESULT($ax_pthread_ok)
++        AC_MSG_RESULT([$ax_pthread_ok])
+         if test "x$ax_pthread_ok" = xyes; then
+                 break;
+         fi
+@@ -245,9 +264,9 @@ if test "x$ax_pthread_ok" = xyes; then
+                 [attr_name=$attr; break],
+                 [])
+         done
+-        AC_MSG_RESULT($attr_name)
++        AC_MSG_RESULT([$attr_name])
+         if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+-            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
++            AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
+                                [Define to necessary symbol if this constant
+                                 uses a non-standard name on your system.])
+         fi
+@@ -261,45 +280,54 @@ if test "x$ax_pthread_ok" = xyes; then
+             if test "$GCC" = "yes"; then
+                 flag="-D_REENTRANT"
+             else
++                # TODO: What about Clang on Solaris?
+                 flag="-mt -D_REENTRANT"
+             fi
+             ;;
+         esac
+-        AC_MSG_RESULT(${flag})
++        AC_MSG_RESULT([$flag])
+         if test "x$flag" != xno; then
+             PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+         fi
+ 
+         AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
+-            ax_cv_PTHREAD_PRIO_INHERIT, [
+-                AC_LINK_IFELSE([
+-                    AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
++            [ax_cv_PTHREAD_PRIO_INHERIT], [
++                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
++                                                [[int i = PTHREAD_PRIO_INHERIT;]])],
+                     [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                     [ax_cv_PTHREAD_PRIO_INHERIT=no])
+             ])
+         AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
+-            AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
++            [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
+ 
+         LIBS="$save_LIBS"
+         CFLAGS="$save_CFLAGS"
+ 
+-        # More AIX lossage: must compile with xlc_r or cc_r
+-        if test x"$GCC" != xyes; then
+-          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+-        else
+-          PTHREAD_CC=$CC
++        # More AIX lossage: compile with *_r variant
++        if test "x$GCC" != xyes; then
++            case $host_os in
++                aix*)
++                AS_CASE(["x/$CC"],
++                  [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
++                  [#handle absolute path differently from PATH based program lookup
++                   AS_CASE(["x$CC"],
++                     [x/*],
++                     [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
++                     [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
++                ;;
++            esac
+         fi
+-else
+-        PTHREAD_CC="$CC"
+ fi
+ 
+-AC_SUBST(PTHREAD_LIBS)
+-AC_SUBST(PTHREAD_CFLAGS)
+-AC_SUBST(PTHREAD_CC)
++test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
++
++AC_SUBST([PTHREAD_LIBS])
++AC_SUBST([PTHREAD_CFLAGS])
++AC_SUBST([PTHREAD_CC])
+ 
+ # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+ if test x"$ax_pthread_ok" = xyes; then
+-        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
++        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
+         :
+ else
+         ax_pthread_ok=no
+diff --git a/src/fccache.c b/src/fccache.c
+index 3568595..10eacff 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -28,6 +28,7 @@
+ #include <dirent.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/stat.h>
+ #include <assert.h>
+ #if defined(HAVE_MMAP) || defined(__CYGWIN__)
+ #  include <unistd.h>
+@@ -572,7 +573,7 @@ FcDirCacheMapFd (int fd, struct stat *fd_stat, struct stat *dir_stat)
+     {
+ #if defined(HAVE_MMAP) || defined(__CYGWIN__)
+ 	cache = mmap (0, fd_stat->st_size, PROT_READ, MAP_SHARED, fd, 0);
+-#ifdef HAVE_POSIX_FADVISE
++#if (HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED)
+ 	posix_fadvise (fd, 0, fd_stat->st_size, POSIX_FADV_WILLNEED);
+ #endif
+ 	if (cache == MAP_FAILED)
+diff --git a/src/fcdefault.c b/src/fcdefault.c
+index d1b917f..4beda7c 100644
+--- a/src/fcdefault.c
++++ b/src/fcdefault.c
+@@ -149,7 +149,7 @@ retry:
+ #else
+ # if defined (HAVE_GETEXECNAME)
+ 	const char *p = getexecname ();
+-# else
++# elif defined (HAVE_READLINK)
+ 	char buf[PATH_MAX + 1];
+ 	int len;
+ 	char *p = NULL;
+@@ -160,6 +160,8 @@ retry:
+ 	    buf[len] = '\0';
+ 	    p = buf;
+ 	}
++# else
++	char *p = NULL;
+ # endif
+ 	if (p)
+ 	{
+@@ -219,7 +221,7 @@ FcDefaultSubstitute (FcPattern *pattern)
+     int	    i;
+ 
+     if (FcPatternObjectGet (pattern, FC_WEIGHT_OBJECT, 0, &v) == FcResultNoMatch )
+-	FcPatternObjectAddInteger (pattern, FC_WEIGHT_OBJECT, FC_WEIGHT_MEDIUM);
++	FcPatternObjectAddInteger (pattern, FC_WEIGHT_OBJECT, FC_WEIGHT_NORMAL);
+ 
+     if (FcPatternObjectGet (pattern, FC_SLANT_OBJECT, 0, &v) == FcResultNoMatch)
+ 	FcPatternObjectAddInteger (pattern, FC_SLANT_OBJECT, FC_SLANT_ROMAN);
+diff --git a/src/fcmatch.c b/src/fcmatch.c
+index 627aa1a..93e013f 100644
+--- a/src/fcmatch.c
++++ b/src/fcmatch.c
+@@ -743,6 +743,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
+ {
+     FcBool ret = FcFalse;
+     FcCharSet *cs;
++    int i;
+ 
+     cs = 0;
+     if (trim || csp)
+@@ -752,7 +753,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
+ 	    goto bail;
+     }
+ 
+-    while (nnode--)
++    for (i = 0; i < nnode; i++)
+     {
+ 	FcSortNode	*node = *n++;
+ 	FcBool		adds_chars = FcFalse;
+@@ -776,7 +777,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
+ 	 * If this font isn't a subset of the previous fonts,
+ 	 * add it to the list
+ 	 */
+-	if (!trim || adds_chars)
++	if (!i || !trim || adds_chars)
+ 	{
+ 	    FcPatternReference (node->pattern);
+ 	    if (FcDebug () & FC_DBG_MATCHV)
+diff --git a/src/fcname.c b/src/fcname.c
+index 712b2fa..f302948 100644
+--- a/src/fcname.c
++++ b/src/fcname.c
+@@ -420,6 +420,8 @@ FcNameParse (const FcChar8 *name)
+ 		if ((c = FcNameGetConstant (save)))
+ 		{
+ 		    t = FcNameGetObjectType ((char *) c->object);
++		    if (t == NULL)
++			goto bail2;
+ 		    switch ((int) t->type) {
+ 		    case FcTypeInteger:
+ 		    case FcTypeDouble:
+diff --git a/src/fcstr.c b/src/fcstr.c
+index 5707172..024dae3 100644
+--- a/src/fcstr.c
++++ b/src/fcstr.c
+@@ -924,12 +924,16 @@ FcStrBuildFilename (const FcChar8 *path,
+ 		    ...)
+ {
+     va_list ap;
+-    FcStrSet *sset = FcStrSetCreate ();
++    FcStrSet *sset;
+     FcStrList *list;
+     FcChar8 *s, *ret = NULL, *p;
+     size_t len = 0;
+ 
+-    if (!sset || !path)
++    if (!path)
++	return NULL;
++
++    sset = FcStrSetCreate ();
++    if (!sset)
+ 	return NULL;
+ 
+     if (!FcStrSetAdd (sset, path))
+diff --git a/src/fcxml.c b/src/fcxml.c
+index 8ff10b6..91d166f 100644
+--- a/src/fcxml.c
++++ b/src/fcxml.c
+@@ -610,11 +610,11 @@ FcTypecheckValue (FcConfigParse *parse, FcType value, FcType type)
+ 	if ((value == FcTypeLangSet && type == FcTypeString) ||
+ 	    (value == FcTypeString && type == FcTypeLangSet))
+ 	    return;
+-	if (type == (FcType) -1)
++	if (type ==  FcTypeUnknown)
+ 	    return;
+ 	/* It's perfectly fine to use user-define elements in expressions,
+ 	 * so don't warn in that case. */
+-	if (value == (FcType) -1)
++	if (value == FcTypeUnknown)
+ 	    return;
+ 	FcConfigMessage (parse, FcSevereWarning, "saw %s, expected %s",
+ 			 FcTypeName (value), FcTypeName (type));
+@@ -2566,6 +2566,11 @@ FcParseMatch (FcConfigParse *parse)
+ 	}
+ 	FcVStackPopAndDestroy (parse);
+     }
++    if (!rule)
++    {
++	FcConfigMessage (parse, FcSevereWarning, "No <test> nor <edit> elements in <match>");
++	return;
++    }
+     if (!FcConfigAddRule (parse->config, rule, kind))
+ 	FcConfigMessage (parse, FcSevereError, "out of memory");
+ }
+diff --git a/test/Makefile.am b/test/Makefile.am
+index 52c63dc..f270b50 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -16,7 +16,7 @@ TESTDATA=4x6.pcf 8x16.pcf out.expected fonts.conf.in
+ 
+ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir)
+ 
+-check_PROGRAMS = test-migration
++check_PROGRAMS =
+ if HAVE_PTHREAD
+ check_PROGRAMS += test-pthread
+ test_pthread_LDADD = $(top_builddir)/src/libfontconfig.la
+@@ -26,7 +26,10 @@ test_pthread_LDADD = $(top_builddir)/src/libfontconfig.la
+ endif
+ noinst_PROGRAMS = $(check_PROGRAMS)
+ 
++if !OS_WIN32
++check_PROGRAMS += test-migration
+ test_migration_LDADD = $(top_builddir)/src/libfontconfig.la
++endif
+ 
+ EXTRA_DIST=$(check_SCRIPTS) $(TESTDATA)
+ 
+diff --git a/test/test-migration.c b/test/test-migration.c
+index a0ab839..f127e27 100644
+--- a/test/test-migration.c
++++ b/test/test-migration.c
+@@ -4,8 +4,26 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <dirent.h>
++#ifndef HAVE_STRUCT_DIRENT_D_TYPE
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <unistd.h>
++#endif
+ #include <fontconfig/fontconfig.h>
+ 
++#ifdef HAVE_MKDTEMP
++#define fc_mkdtemp	mkdtemp
++#else
++char *
++fc_mkdtemp (char *template)
++{
++    if (!mktemp (template) || mkdir (template, 0700))
++	return NULL;
++
++    return template;
++}
++#endif
++
+ FcBool
+ mkdir_p(const char *dir)
+ {
+@@ -36,6 +54,9 @@ unlink_dirs(const char *dir)
+     size_t len = strlen (dir);
+     char *n = NULL;
+     FcBool ret = FcTrue;
++#ifndef HAVE_STRUCT_DIRENT_D_TYPE
++    struct stat statb;
++#endif
+ 
+     if (!d)
+ 	return FcFalse;
+@@ -53,7 +74,17 @@ unlink_dirs(const char *dir)
+ 	strcpy (n, dir);
+ 	n[len] = '/';
+ 	strcpy (&n[len + 1], e->d_name);
++#ifdef HAVE_STRUCT_DIRENT_D_TYPE
+ 	if (e->d_type == DT_DIR)
++#else
++	if (stat (n, &statb) == -1)
++	{
++		fprintf (stderr, "E: %s\n", n);
++		ret = FcFalse;
++		break;
++	}
++	if (S_ISDIR (statb.st_mode))
++#endif
+ 	{
+ 	    if (!unlink_dirs (n))
+ 	    {
+@@ -89,7 +120,7 @@ int
+ main(void)
+ {
+     char template[32] = "fontconfig-XXXXXXXX";
+-    char *tmp = mkdtemp (template);
++    char *tmp = fc_mkdtemp (template);
+     size_t len = strlen (tmp), xlen, dlen;
+     char xdg[256], confd[256], fn[256], nfn[256], ud[256], nud[256];
+     int ret = -1;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/fontconfig.git/commitdiff/38de32ca832712400549795c677899a20ae879a6



More information about the pld-cvs-commit mailing list