[Fontconfig] [PATCH 1/2] FcStrPlusPlus: new helper function
Mike Frysinger
vapier at gentoo.org
Mon Nov 7 11:55:15 PST 2011
This is like FcStrPlus, except that it takes an arbitrary number of
additional strings to append.
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
---
fontconfig/fontconfig.h | 3 +++
src/fcstr.c | 32 ++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
index db26b97..465ffa1 100644
--- a/fontconfig/fontconfig.h
+++ b/fontconfig/fontconfig.h
@@ -860,6 +860,9 @@ FcStrCopyFilename (const FcChar8 *s);
FcPublic FcChar8 *
FcStrPlus (const FcChar8 *s1, const FcChar8 *s2);
+
+FcPublic FcChar8 *
+FcStrPlusPlus (const FcChar8 *s1, ...);
FcPublic void
FcStrFree (FcChar8 *s);
diff --git a/src/fcstr.c b/src/fcstr.c
index b712e5d..6dfb1ef 100644
--- a/src/fcstr.c
+++ b/src/fcstr.c
@@ -63,6 +63,38 @@ FcStrPlus (const FcChar8 *s1, const FcChar8 *s2)
return s;
}
+FcChar8 *
+FcStrPlusPlus (const FcChar8 *s1, ...)
+{
+ va_list ap;
+ const FcChar8 *arg;
+ FcChar8 *s;
+ int l;
+ int al;
+
+ va_start (ap, s1);
+ arg = s1;
+ s = NULL;
+ l = 0;
+ do {
+ if (!arg)
+ break;
+ al = strlen ((char *) arg);
+ s = realloc (s, l + al + 1);
+ if (!s)
+ return 0;
+ memcpy (s + l, arg, al + 1);
+ l += al;
+
+ arg = va_arg (ap, const FcChar8 *);
+ } while (1);
+ va_end (ap);
+
+ if (l)
+ FcMemAlloc (FC_MEM_STRING, l + 1);
+ return s;
+}
+
void
FcStrFree (FcChar8 *s)
{
--
1.7.6.1
More information about the Fontconfig
mailing list