diff --git a/doc/check-missing-doc b/doc/check-missing-doc
index 3eef93a..195ec00 100644
--- a/doc/check-missing-doc
+++ b/doc/check-missing-doc
@@ -21,3 +21,4 @@ fi
echo \
'Library Export Documentation'
diff -y $header $doc | grep '[<>]'
+exit 1
diff --git a/doc/fcobjectset.fncs b/doc/fcobjectset.fncs
index ce1ecae..a15326a 100644
--- a/doc/fcobjectset.fncs
+++ b/doc/fcobjectset.fncs
@@ -51,12 +51,23 @@ Destroys an object set.
@FUNC@ FcObjectSetBuild
@TYPE1@ const char * @ARG1@ first
@TYPE2@ ...
+
@PROTOTYPE+@
@RET+@ FcObjectSet *
@FUNC+@ FcObjectSetVaBuild
@TYPE1+@ const char * @ARG1+@ first
@TYPE2+@ va_list% @ARG2+@ va
+
+@PROTOTYPE++@
+@RET++@ void
+@FUNC++@ FcObjectSetVapBuild
+@TYPE1++@ FcObjectSet * @ARG1++@ result
+@TYPE2++@ const char * @ARG2++@ first
+@TYPE3++@ va_list% @ARG3++@ va
+
@PURPOSE@ Build object set from args
@DESC@
These build an object set from a null-terminated list of property names.
+FcObjectSetVapBuild is a macro version of FcObjectSetVaBuild which returns
+the result in the result variable directly.
@@
diff --git a/doc/fcpattern.fncs b/doc/fcpattern.fncs
index a346cc5..ba04566 100644
--- a/doc/fcpattern.fncs
+++ b/doc/fcpattern.fncs
@@ -273,6 +273,14 @@ in preference to FcPatternGet to provide compile-time typechecking.
@FUNC+@ FcPatternVaBuild
@TYPE1+@ FcPattern * @ARG1+@ orig
@TYPE2+@ va_list% @ARG2+@ va
+
+@PROTOTYPE++@
+@RET++@ void
+@FUNC++@ FcPatternVapBuild
+@TYPE1++@ FcPattern * @ARG1++@ result
+@TYPE2++@ FcPattern * @ARG2++@ orig
+@TYPE3++@ va_list% @ARG3++@ va
+
@PURPOSE@ Create patterns from arguments
@DESC@
Builds a pattern using a list of objects, types and values. Each
@@ -300,7 +308,9 @@ pattern = FcPatternBuild (0, FC_FAMILY, FcTypeString, "Times", (char *) 0);
FcPatternVaBuild is used when the arguments are already in the form of a
-varargs value.
+varargs value. FcPatternVapBuild is a macro version of FcPatternVaBuild
+which returns its result directly in the result
+variable.
@@
@RET@ FcBool
diff --git a/fontconfig/Makefile.am b/fontconfig/Makefile.am
index 7616d8f..72fec33 100644
--- a/fontconfig/Makefile.am
+++ b/fontconfig/Makefile.am
@@ -2,6 +2,7 @@ fontconfigincludedir=$(includedir)/fontconfig
fontconfig_headers= \
fontconfig.h \
- fcfreetype.h
+ fcfreetype.h \
+ fcprivate.h
fontconfiginclude_HEADERS = $(fontconfig_headers)
diff --git a/fontconfig/fcprivate.h b/fontconfig/fcprivate.h
new file mode 100644
index 0000000..9be4c01
--- /dev/null
+++ b/fontconfig/fcprivate.h
@@ -0,0 +1,123 @@
+/*
+ * $RCSId: xc/lib/fontconfig/fontconfig/fcprivate.h,v 1.5 2002/08/19 19:32:04 keithp Exp $
+ *
+ * Copyright © 2001 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef _FCPRIVATE_H_
+#define _FCPRIVATE_H_
+
+/*
+ * I tried this with functions that took va_list* arguments
+ * but portability concerns made me change these functions
+ * into macros (sigh).
+ */
+
+#define FcPatternVapBuild(result, orig, va) \
+{ \
+ FcPattern *__p__ = (orig); \
+ const char *__o__; \
+ FcValue __v__; \
+ \
+ if (!__p__) \
+ { \
+ __p__ = FcPatternCreate (); \
+ if (!__p__) \
+ goto _FcPatternVapBuild_bail0; \
+ } \
+ for (;;) \
+ { \
+ __o__ = va_arg (va, const char *); \
+ if (!__o__) \
+ break; \
+ __v__.type = va_arg (va, FcType); \
+ switch (__v__.type) { \
+ case FcTypeVoid: \
+ goto _FcPatternVapBuild_bail1; \
+ case FcTypeInteger: \
+ __v__.u.i = va_arg (va, int); \
+ break; \
+ case FcTypeDouble: \
+ __v__.u.d = va_arg (va, double); \
+ break; \
+ case FcTypeString: \
+ __v__.u.s = va_arg (va, const FcChar8 *); \
+ break; \
+ case FcTypeBool: \
+ __v__.u.b = va_arg (va, FcBool); \
+ break; \
+ case FcTypeMatrix: \
+ __v__.u.m = va_arg (va, const FcMatrix *); \
+ break; \
+ case FcTypeCharSet: \
+ __v__.u.c = va_arg (va, const FcCharSet *); \
+ break; \
+ case FcTypeFTFace: \
+ __v__.u.f = va_arg (va, FT_Face); \
+ break; \
+ case FcTypeLangSet: \
+ __v__.u.l = va_arg (va, const FcLangSet *); \
+ break; \
+ } \
+ if (!FcPatternAdd (__p__, __o__, __v__, FcTrue)) \
+ goto _FcPatternVapBuild_bail1; \
+ } \
+ result = __p__; \
+ goto _FcPatternVapBuild_return; \
+ \
+_FcPatternVapBuild_bail1: \
+ if (!orig) \
+ FcPatternDestroy (__p__); \
+_FcPatternVapBuild_bail0: \
+ result = (void*)0; \
+ \
+_FcPatternVapBuild_return: \
+ ; \
+}
+
+
+#define FcObjectSetVapBuild(__ret__, __first__, __va__) \
+{ \
+ FcObjectSet *__os__; \
+ const char *__ob__; \
+ \
+ __ret__ = 0; \
+ __os__ = FcObjectSetCreate (); \
+ if (!__os__) \
+ goto _FcObjectSetVapBuild_bail0; \
+ __ob__ = __first__; \
+ while (__ob__) \
+ { \
+ if (!FcObjectSetAdd (__os__, __ob__)) \
+ goto _FcObjectSetVapBuild_bail1; \
+ __ob__ = va_arg (__va__, const char *); \
+ } \
+ __ret__ = __os__; \
+ \
+_FcObjectSetVapBuild_bail1: \
+ if (!__ret__ && __os__) \
+ FcObjectSetDestroy (__os__); \
+_FcObjectSetVapBuild_bail0: \
+ ; \
+}
+
+#endif /* _FCPRIVATE_H_ */
+
diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
index 0a09766..37d6652 100644
--- a/fontconfig/fontconfig.h
+++ b/fontconfig/fontconfig.h
@@ -551,7 +551,7 @@ FcPublic FcBool
FcInitBringUptoDate (void);
/* fclang.c */
-FcStrSet *
+FcPublic FcStrSet *
FcGetLangs (void);
FcPublic const FcCharSet *
diff --git a/src/Makefile.am b/src/Makefile.am
index a4bbc45..e4c203c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -125,7 +125,8 @@ uninstall-local: uninstall-ms-import-lib uninstall-libtool-import-lib
PUBLIC_FILES = \
$(top_srcdir)/fontconfig/fontconfig.h \
$(top_srcdir)/fontconfig/fcfreetype.h \
- $(top_srcdir)/src/fcdeprecate.h
+ $(top_srcdir)/src/fcdeprecate.h \
+ $(top_srcdir)/fontconfig/fcprivate.h
fcaliastail.h: fcalias.h
diff --git a/src/fcint.h b/src/fcint.h
index 62a04b8..922a2df 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -46,6 +46,7 @@
#include
#include
#include
+#include
#include
#include "fcdeprecate.h"
@@ -496,100 +497,6 @@ typedef struct _FcCharMap FcCharMap;
/* watch out; assumes that v is void * -PL */
#define ALIGN(v,type) ((void *)(((uintptr_t)(v) + fc_alignof(type) - 1) & ~(fc_alignof(type) - 1)))
-/*
- * I tried this with functions that took va_list* arguments
- * but portability concerns made me change these functions
- * into macros (sigh).
- */
-
-#define FcPatternVapBuild(result, orig, va) \
-{ \
- FcPattern *__p__ = (orig); \
- const char *__o__; \
- FcValue __v__; \
- \
- if (!__p__) \
- { \
- __p__ = FcPatternCreate (); \
- if (!__p__) \
- goto _FcPatternVapBuild_bail0; \
- } \
- for (;;) \
- { \
- __o__ = va_arg (va, const char *); \
- if (!__o__) \
- break; \
- __v__.type = va_arg (va, FcType); \
- switch (__v__.type) { \
- case FcTypeVoid: \
- goto _FcPatternVapBuild_bail1; \
- case FcTypeInteger: \
- __v__.u.i = va_arg (va, int); \
- break; \
- case FcTypeDouble: \
- __v__.u.d = va_arg (va, double); \
- break; \
- case FcTypeString: \
- __v__.u.s = va_arg (va, const FcChar8 *); \
- break; \
- case FcTypeBool: \
- __v__.u.b = va_arg (va, FcBool); \
- break; \
- case FcTypeMatrix: \
- __v__.u.m = va_arg (va, const FcMatrix *); \
- break; \
- case FcTypeCharSet: \
- __v__.u.c = va_arg (va, const FcCharSet *); \
- break; \
- case FcTypeFTFace: \
- __v__.u.f = va_arg (va, FT_Face); \
- break; \
- case FcTypeLangSet: \
- __v__.u.l = va_arg (va, const FcLangSet *); \
- break; \
- } \
- if (!FcPatternAdd (__p__, __o__, __v__, FcTrue)) \
- goto _FcPatternVapBuild_bail1; \
- } \
- result = __p__; \
- goto _FcPatternVapBuild_return; \
- \
-_FcPatternVapBuild_bail1: \
- if (!orig) \
- FcPatternDestroy (__p__); \
-_FcPatternVapBuild_bail0: \
- result = (void*)0; \
- \
-_FcPatternVapBuild_return: \
- ; \
-}
-
-
-#define FcObjectSetVapBuild(__ret__, __first__, __va__) \
-{ \
- FcObjectSet *__os__; \
- const char *__ob__; \
- \
- __ret__ = 0; \
- __os__ = FcObjectSetCreate (); \
- if (!__os__) \
- goto _FcObjectSetVapBuild_bail0; \
- __ob__ = __first__; \
- while (__ob__) \
- { \
- if (!FcObjectSetAdd (__os__, __ob__)) \
- goto _FcObjectSetVapBuild_bail1; \
- __ob__ = va_arg (__va__, const char *); \
- } \
- __ret__ = __os__; \
- \
-_FcObjectSetVapBuild_bail1: \
- if (!__ret__ && __os__) \
- FcObjectSetDestroy (__os__); \
-_FcObjectSetVapBuild_bail0: \
- ; \
-}
-
/* fcblanks.c */
/* fccache.c */