Makefile.am | 11 ++++++++-- configure.ac | 5 ---- doc/Makefile.am | 14 ++++++++----- fc-case/Makefile.am | 8 ------- fc-glyphname/Makefile.am | 9 +++----- fc-glyphname/fc-glyphname.c | 46 ++++++++++++++++++++++---------------------- fc-lang/Makefile.am | 9 ++------ src/Makefile.am | 1 src/fcatomic.h | 9 ++------ src/fccache.c | 2 - src/fccfg.c | 19 ++++++------------ src/fcdefault.c | 6 ++--- src/fcint.h | 16 +++------------ src/fclist.c | 6 ++--- src/fcmutex.h | 5 +--- src/fcname.c | 2 - src/fcobjs.c | 14 +++++++++---- src/fcobjshash.gperf.h | 2 - src/fcpat.c | 25 ++--------------------- src/fcstat.c | 3 -- src/fcstr.c | 14 ------------- src/fcwindows.h | 44 ++++++++++++++++++++++++++++++++++++++++++ src/fcxml.c | 28 +++++++++++++------------- 23 files changed, 148 insertions(+), 150 deletions(-) New commits: commit 538f1579e86fdcf471cea58945bf8c674d5b91e7 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Jan 2 18:07:13 2013 -0600 Trying to fix distcheck Doesn't work though :(. Building docs is very fragile... At least, if docbook is present, distcheck passes now. diff --git a/Makefile.am b/Makefile.am index cbc3df0..6aee88a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,10 +21,15 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -DOCSRC=@DOCSRC@ SUBDIRS=fontconfig fc-case fc-lang fc-glyphname src \ fc-cache fc-cat fc-list fc-match fc-pattern fc-query fc-scan \ - conf.d $(DOCSRC) test + conf.d test +if ENABLE_DOCS +SUBDIRS += doc +DIST_SUBDIRS = $(SUBDIRS) +else +DIST_SUBDIRS = $(SUBDIRS) doc +endif AUTOMAKE_OPTIONS = dist-bzip2 ACLOCAL_AMFLAGS = -I m4 @@ -149,4 +154,6 @@ debuild-dirs: distdir cp -a $(distdir) $(distdir).orig $(RM) -r $(distdir).orig/debian +DISTCHECK_CONFIGURE_FLAGS = + -include $(top_srcdir)/git.mk diff --git a/configure.ac b/configure.ac index 3a89e7e..3f0ffbf 100644 --- a/configure.ac +++ b/configure.ac @@ -633,7 +633,6 @@ AC_ARG_ENABLE(docs, AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes) if test "x$enable_docs" = xyes; then - DOCSRC="doc" tmp=funcs.$$ cat $srcdir/doc/*.fncs | awk ' /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } } @@ -643,11 +642,8 @@ if test "x$enable_docs" = xyes; then echo DOCMAN3 $DOCMAN3 rm -f $tmp else - DOCSRC="" DOCMAN3="" fi - -AC_SUBST(DOCSRC) AC_SUBST(DOCMAN3) diff --git a/doc/Makefile.am b/doc/Makefile.am index cf1fb89..c6b095c 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -199,10 +199,18 @@ all-local: $(BUILT_DOCS) $(HTML_DIR)/* clean-local: $(RM) -r $(HTML_DIR) devel-man [ "x$(builddir)" != "x$(srcdir)" ] && $(RM) $(builddir)/*.sgml || : +dist-local-check-docs-enabled: + @true else htmldoc_DATA += $(srcdir)/$(HTML_DIR)/* all-local: clean-local: +dist-local-check-docs-enabled: + @echo "*** --enable-man must be used in order to make dist" + @false endif +# force doc rebulid after configure +dist-hook-local: dist-local-check-docs-enabled + -include $(top_srcdir)/git.mk commit 46ab96b8fa029fbc8ccf69a6f2fda89866e3ac9c Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Jan 2 17:52:00 2013 -0600 Fix more warnings. Linux build and mingw32 cross build warning-free now. diff --git a/src/fcobjs.c b/src/fcobjs.c index b3bb200..1aa4a77 100644 --- a/src/fcobjs.c +++ b/src/fcobjs.c @@ -24,15 +24,21 @@ #include "fcint.h" +static unsigned int +FcObjectTypeHash (register const char *str, register unsigned int len); + +static const struct FcObjectTypeInfo * +FcObjectTypeLookup (register const char *str, register unsigned int len); + #include "fcobjshash.h" #include <string.h> -static int next_id = FC_MAX_BASE_OBJECT + 1; +static fc_atomic_int_t next_id = FC_MAX_BASE_OBJECT + 1; struct FcObjectOtherTypeInfo { struct FcObjectOtherTypeInfo *next; FcObjectType object; - int id; + FcObject id; } *other_types; static FcObjectType * diff --git a/src/fcobjshash.gperf.h b/src/fcobjshash.gperf.h index 94002b1..dafac1b 100644 --- a/src/fcobjshash.gperf.h +++ b/src/fcobjshash.gperf.h @@ -4,7 +4,7 @@ CUT_OUT_BEGIN CUT_OUT_END %} %struct-type -%language=C +%language=ANSI-C %includes %enum %readonly-tables commit 558b3c65f91b4b2dd65ce2242e1a21ace621e44b Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Jan 2 17:49:41 2013 -0600 Use CC_FOR_BUILD to generate source files Previously we were failing if CROSS_COMPILING and the generated headers were not present. It works just fine now. One caveat: the fix is not fully correct since config.h is being included in the files built with CC_FOR_BUILD, but config.h has config for the host system, not the build system. Should be fine though. diff --git a/configure.ac b/configure.ac index fda5650..3a89e7e 100644 --- a/configure.ac +++ b/configure.ac @@ -105,6 +105,7 @@ AC_SUBST(WARN_CFLAGS) dnl ========================================================================== +AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler]) AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes") diff --git a/doc/Makefile.am b/doc/Makefile.am index ad68c09..cf1fb89 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -118,6 +118,7 @@ noinst_PROGRAMS = \ edit_sgml_SOURCES = \ edit-sgml.c \ $(NULL) +edit_sgml_CC = $(CC_FOR_BUILD) # check_SCRIPTS = \ check-missing-doc \ @@ -150,14 +151,9 @@ noinst_PROGRAMS += \ htmldoc_DATA += $(HTML_DIR)/* ## -if CROSS_COMPILING -.fncs.sgml: - @echo Warning: cannot rebuild $@ when cross-compiling -else .fncs.sgml: $(AM_V_GEN) $(RM) $@; \ $(builddir)/edit-sgml$(EXEEXT) $(srcdir)/func.sgml < '$(srcdir)/$*.fncs' > $*.sgml -endif .sgml.txt: $(AM_V_GEN) $(RM) $@; \ $(DOC2TXT) $*.sgml diff --git a/fc-case/Makefile.am b/fc-case/Makefile.am index 9bab1c7..c56e657 100644 --- a/fc-case/Makefile.am +++ b/fc-case/Makefile.am @@ -33,18 +33,13 @@ noinst_PROGRAMS=fc-case noinst_HEADERS=$(TARG) -fc_case_SOURCES= \ - fc-case.c +fc_case_CC = $(CC_FOR_BUILD) CASEFOLDING=CaseFolding.txt SCASEFOLDING=${top_srcdir}/fc-case/CaseFolding.txt EXTRA_DIST = $(TARG) $(TMPL) $(CASEFOLDING) -if CROSS_COMPILING -$(TARG): $(STMPL) fc-case.c $(SCASEFOLDING) - @echo Warning: cannot rebuild $(TARG) when cross-compiling -else ## BUILT_SOURCES doesn't effect to 'distcheck' ## so $(ALIAS_FILES) has to be appeared prior to fc-case$(EXEEXT) ## to make sure availability. @@ -52,7 +47,6 @@ $(TARG): $(STMPL) $(ALIAS_FILES) fc-case$(EXEEXT) $(SCASEFOLDING) $(AM_V_GEN) $(RM) $(TARG); \ ./fc-case$(EXEEXT) $(SCASEFOLDING) < $(STMPL) > $(TARG).tmp && \ mv $(TARG).tmp $(TARG) -endif ALIAS_FILES = fcalias.h fcaliastail.h diff --git a/fc-glyphname/Makefile.am b/fc-glyphname/Makefile.am index f6aeea7..3ddd53a 100644 --- a/fc-glyphname/Makefile.am +++ b/fc-glyphname/Makefile.am @@ -31,15 +31,15 @@ TARG=fcglyphname.h noinst_PROGRAMS=fc-glyphname +noinst_HEADERS=$(TARG) + +fc_glyphname_CC = $(CC_FOR_BUILD) + GLYPHNAME=zapfdingbats.txt SGLYPHNAME=${top_srcdir}/fc-glyphname/zapfdingbats.txt EXTRA_DIST = $(TARG) $(TMPL) $(GLYPHNAME) -if CROSS_COMPILING -$(TARG): $(STMPL) fc-glyphname.c $(SGLYPHNAME) - @echo Warning: cannot rebuild $(TARG) when cross-compiling -else ## BUILT_SOURCES doesn't effect to 'distcheck' ## so $(ALIAS_FILES) has to be appeared prior to fc-glyphname$(EXEEXT) ## to make sure availability. @@ -47,7 +47,6 @@ $(TARG): $(STMPL) $(ALIAS_FILES) fc-glyphname$(EXEEXT) $(SGLYPHNAME) $(AM_V_GEN) $(RM) $(TARG); \ ./fc-glyphname$(EXEEXT) $(SGLYPHNAME) < $(STMPL) > $(TARG).tmp && \ mv $(TARG).tmp $(TARG) -endif ALIAS_FILES = fcalias.h fcaliastail.h diff --git a/fc-lang/Makefile.am b/fc-lang/Makefile.am index 35e94e5..536cff2 100644 --- a/fc-lang/Makefile.am +++ b/fc-lang/Makefile.am @@ -31,14 +31,12 @@ TARG=fclang.h noinst_PROGRAMS=fc-lang -noinst_MANS=fc-lang.man +noinst_HEADERS=$(TARG) + +fc_lang_CC = $(CC_FOR_BUILD) EXTRA_DIST = $(TARG) $(TMPL) $(ORTH) -if CROSS_COMPILING -$(TARG):$(ORTH) fc-lang.c $(STMPL) - @echo Warning: cannot rebuild $(TARG) when cross-compiling -else ## BUILT_SOURCES doesn't effect to 'distcheck' ## so $(ALIAS_FILES) has to be appeared prior to fc-lang$(EXEEXT) ## to make sure availability. @@ -46,7 +44,6 @@ $(TARG):$(ORTH) $(ALIAS_FILES) fc-lang${EXEEXT} $(STMPL) $(AM_V_GEN) $(RM) $(TARG); \ ./fc-lang${EXEEXT} -d ${srcdir} $(ORTH) < $(STMPL) > $(TARG).tmp && \ mv $(TARG).tmp $(TARG) -endif ALIAS_FILES = fcalias.h fcaliastail.h commit ec8a40d2381014ad2e72b5da0e6357a85f078f9f Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Jan 2 17:35:56 2013 -0600 Fix build and warnings on win32 diff --git a/src/Makefile.am b/src/Makefile.am index da1358c..c32c6f3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -148,6 +148,7 @@ libfontconfig_la_SOURCES = \ fcserialize.c \ fcstat.c \ fcstr.c \ + fcwindows.h \ fcxml.c \ ftglue.h \ ftglue.c diff --git a/src/fcatomic.h b/src/fcatomic.h index 71c0491..073809e 100644 --- a/src/fcatomic.h +++ b/src/fcatomic.h @@ -3,9 +3,7 @@ * * Copyright © 2007 Chris Wilson * Copyright © 2009,2010 Red Hat, Inc. - * Copyright © 2011,2012 Google, Inc. - * - * This is part of HarfBuzz, a text shaping library. + * Copyright © 2011,2012,2013 Google, Inc. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this @@ -48,8 +46,7 @@ #elif !defined(FC_NO_MT) && defined(_MSC_VER) || defined(__MINGW32__) -#define WIN32_LEAN_AND_MEAN -#include <windows.h> +#include "fcwindows.h" /* mingw32 does not have MemoryBarrier. * MemoryBarrier may be defined as a macro or a function. @@ -63,7 +60,7 @@ static inline void HBMemoryBarrier (void) { } #endif -typedef int fc_atomic_int_t; +typedef LONG fc_atomic_int_t; #define fc_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V)) #define fc_atomic_ptr_get(P) (HBMemoryBarrier (), (void *) *(P)) diff --git a/src/fccache.c b/src/fccache.c index 2f0f5d7..2f1104f 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -77,7 +77,7 @@ FcCacheIsMmapSafe (int fd) status = use ? MMAP_USE : MMAP_DONT_USE; else status = MMAP_CHECK_FS; - fc_atomic_ptr_cmpexch (&static_status, NULL, (void *) status); + (void) fc_atomic_ptr_cmpexch (&static_status, NULL, (void *) status); } if (status == MMAP_CHECK_FS) diff --git a/src/fccfg.c b/src/fccfg.c index bc408db..877a4f5 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -28,12 +28,6 @@ #include <dirent.h> #include <sys/types.h> -#if defined (_WIN32) && (defined (PIC) || defined (DLL_EXPORT)) -#define STRICT -#include <windows.h> -#undef STRICT -#endif - #if defined (_WIN32) && !defined (R_OK) #define R_OK 4 #endif @@ -270,7 +264,7 @@ FcConfigDestroy (FcConfig *config) if (FcRefDec (&config->ref) != 1) return; - fc_atomic_ptr_cmpexch (&_fcConfig, config, NULL); + (void) fc_atomic_ptr_cmpexch (&_fcConfig, config, NULL); FcStrSetDestroy (config->configDirs); FcStrSetDestroy (config->fontDirs); @@ -1737,10 +1731,6 @@ FcConfigSubstitute (FcConfig *config, #if defined (_WIN32) -# define WIN32_LEAN_AND_MEAN -# define WIN32_EXTRA_LEAN -# include <windows.h> - static FcChar8 fontconfig_path[1000] = ""; /* MT-dontcare */ # if (defined (PIC) || defined (DLL_EXPORT)) @@ -1748,6 +1738,11 @@ static FcChar8 fontconfig_path[1000] = ""; /* MT-dontcare */ BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, + LPVOID lpvReserved); + +BOOL WINAPI +DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, LPVOID lpvReserved) { FcChar8 *p; diff --git a/src/fcint.h b/src/fcint.h index 9520be3..38bd9bb 100644 --- a/src/fcint.h +++ b/src/fcint.h @@ -53,12 +53,7 @@ #endif #ifdef _WIN32 -# ifndef _WIN32_WINNT -# define _WIN32_WINNT 0x0500 -# endif -# define WIN32_LEAN_AND_MEAN -# define STRICT -# include <windows.h> +# include "fcwindows.h" typedef UINT (WINAPI *pfnGetSystemWindowsDirectory)(LPSTR, UINT); typedef HRESULT (WINAPI *pfnSHGetFolderPathA)(HWND, int, HANDLE, DWORD, LPSTR); extern pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory; diff --git a/src/fcmutex.h b/src/fcmutex.h index b10572c..556a05e 100644 --- a/src/fcmutex.h +++ b/src/fcmutex.h @@ -3,7 +3,7 @@ * * Copyright © 2007 Chris Wilson * Copyright © 2009,2010 Red Hat, Inc. - * Copyright © 2011,2012 Google, Inc. + * Copyright © 2011,2012,2013 Google, Inc. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this @@ -48,8 +48,7 @@ #elif !defined(FC_NO_MT) && defined(_MSC_VER) || defined(__MINGW32__) -#define WIN32_LEAN_AND_MEAN -#include <windows.h> +#include "fcwindows.h" typedef CRITICAL_SECTION fc_mutex_impl_t; #define FC_MUTEX_IMPL_INIT { NULL, 0, 0, NULL, NULL, 0 } #define fc_mutex_impl_init(M) InitializeCriticalSection (M) diff --git a/src/fcstat.c b/src/fcstat.c index d1730fd..9763c21 100644 --- a/src/fcstat.c +++ b/src/fcstat.c @@ -44,9 +44,6 @@ #endif #ifdef _WIN32 - -#include <windows.h> - #ifdef __GNUC__ typedef long long INT64; #define EPOCH_OFFSET 11644473600ll diff --git a/src/fcstr.c b/src/fcstr.c index 34093a0..cdab383 100644 --- a/src/fcstr.c +++ b/src/fcstr.c @@ -29,9 +29,6 @@ #ifdef HAVE_REGEX_H #include <regex.h> #endif -#ifdef _WIN32 -#include <windows.h> -#endif /* Objects MT-safe for readonly access. */ diff --git a/src/fcwindows.h b/src/fcwindows.h new file mode 100644 index 0000000..02489d9 --- /dev/null +++ b/src/fcwindows.h @@ -0,0 +1,44 @@ +/* + * fontconfig/src/fcwindows.h + * + * Copyright © 2013 Google, Inc. + * + * 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 the author(s) not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. The authors make no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE AUTHOR(S) 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. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef _FCWINDOWS_H_ +#define _FCWINDOWS_H_ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef _WIN32 +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0500 +# endif +# define WIN32_LEAN_AND_MEAN +# define WIN32_EXTRA_LEAN +# define STRICT +# include <windows.h> +#endif + +#endif /* _FCWINDOWS_H_ */ diff --git a/src/fcxml.c b/src/fcxml.c index 1f068ce..b234e43 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -1419,7 +1419,7 @@ static void FcParseRange (FcConfigParse *parse) { FcVStack *vstack; - FcRange r; + FcRange r = {0, 0}; FcChar32 n; int count = 1; @@ -1961,7 +1961,7 @@ FcParseDir (FcConfigParse *parse) #ifdef _WIN32 if (strcmp ((const char *) data, "CUSTOMFONTDIR") == 0) { - char *p; + FcChar8 *p; data = buffer; if (!GetModuleFileName (NULL, (LPCH) buffer, sizeof (buffer) - 20)) { @@ -1976,11 +1976,11 @@ FcParseDir (FcConfigParse *parse) */ p = _mbsrchr (data, '\\'); if (p) *p = '\0'; - strcat (data, "\\fonts"); + strcat ((char *) data, "\\fonts"); } else if (strcmp ((const char *) data, "APPSHAREFONTDIR") == 0) { - char *p; + FcChar8 *p; data = buffer; if (!GetModuleFileName (NULL, (LPCH) buffer, sizeof (buffer) - 20)) { @@ -1989,7 +1989,7 @@ FcParseDir (FcConfigParse *parse) } p = _mbsrchr (data, '\\'); if (p) *p = '\0'; - strcat (data, "\\..\\share\\fonts"); + strcat ((char *) data, "\\..\\share\\fonts"); } else if (strcmp ((const char *) data, "WINDOWSFONTDIR") == 0) { @@ -2002,8 +2002,8 @@ FcParseDir (FcConfigParse *parse) goto bail; } if (data [strlen ((const char *) data) - 1] != '\\') - strcat (data, "\\"); - strcat (data, "fonts"); + strcat ((char *) data, "\\"); + strcat ((char *) data, "fonts"); } #endif if (strlen ((char *) data) == 0) @@ -2072,8 +2072,8 @@ FcParseCacheDir (FcConfigParse *parse) goto bail; } if (data [strlen ((const char *) data) - 1] != '\\') - strcat (data, "\\"); - strcat (data, "fontconfig\\cache"); + strcat ((char *) data, "\\"); + strcat ((char *) data, "fontconfig\\cache"); } else if (strcmp ((const char *) data, "LOCAL_APPDATA_FONTCONFIG_CACHE") == 0) { commit 5c0a4f2726fd1440bf3ec4bb375e5e4d146bd989 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Jan 2 02:27:57 2013 -0600 Minor diff --git a/fc-glyphname/fc-glyphname.c b/fc-glyphname/fc-glyphname.c index b790d98..9085f2d 100644 --- a/fc-glyphname/fc-glyphname.c +++ b/fc-glyphname/fc-glyphname.c @@ -58,12 +58,12 @@ FcAllocGlyphName (FcChar32 ucs, FcChar8 *name) return gn; } -static void +static void fatal (const char *file, int lineno, const char *msg) { if (lineno) fprintf (stderr, "%s:%d: %s\n", file, lineno, msg); - else + else fprintf (stderr, "%s: %s\n", file, msg); exit (1); @@ -100,7 +100,7 @@ scan (FILE *f, char *filename) FcGlyphName *gn; int lineno = 0; int len; - + while (fgets (buf, sizeof (buf), f)) { lineno++; @@ -177,7 +177,7 @@ find_hash (void) int h; h = nraw + nraw / 4; - if ((h & 1) == 0) + if ((h & 1) == 0) h++; while (!isprime(h-2) || !isprime(h)) h += 2; @@ -201,12 +201,12 @@ FcHashGlyphName (const FcChar8 *name) static void insert (FcGlyphName *gn, FcGlyphName **table, FcChar32 h) { - int i, r = 0; + unsigned int i, r = 0; i = (int) (h % hash); while (table[i]) { - if (!r) r = (int) (h % rehash + 1); + if (!r) r = (h % rehash + 1); i += r; if (i >= hash) i -= hash; @@ -217,8 +217,8 @@ insert (FcGlyphName *gn, FcGlyphName **table, FcChar32 h) static void dump (FcGlyphName * const *table, const char *name) { - int i; - + unsigned int i; + printf ("static const FcGlyphId %s[%d] = {\n", name, hash); for (i = 0; i < hash; i++) @@ -226,7 +226,7 @@ dump (FcGlyphName * const *table, const char *name) printf (" %d,\n", rawindex(table[i])); else printf (" -1,\n"); - + printf ("};\n"); } @@ -237,8 +237,8 @@ main (int argc, char **argv) char line[1024]; FILE *f; int i; - char *type; - + const char *type; + i = 0; while (argv[i+1]) { @@ -249,7 +249,7 @@ main (int argc, char **argv) } files[i] = 0; qsort (files, i, sizeof (char *), compare_string); - for (i = 0; files[i]; i++) + for (i = 0; files[i]; i++) { f = fopen (files[i], "r"); if (!f) @@ -260,27 +260,27 @@ main (int argc, char **argv) qsort (raw, nraw, sizeof (FcGlyphName *), compare_glyphname); find_hash (); - + for (i = 0; i < nraw; i++) { insert (raw[i], name_to_ucs, FcHashGlyphName (raw[i]->name)); insert (raw[i], ucs_to_name, raw[i]->ucs); } - + /* * Scan the input until the marker is found */ - + while (fgets (line, sizeof (line), stdin)) { if (!strncmp (line, "@@@", 3)) break; fputs (line, stdout); } - + printf ("/* %d glyphnames in %d entries, %d%% occupancy */\n\n", nraw, hash, nraw * 100 / hash); - + printf ("#define FC_GLYPHNAME_HASH %u\n", hash); printf ("#define FC_GLYPHNAME_REHASH %u\n", rehash); printf ("#define FC_GLYPHNAME_MAXLEN %d\n\n", max_name_len); @@ -290,16 +290,16 @@ main (int argc, char **argv) type = "int16_t"; else type = "int32_t"; - + printf ("typedef %s FcGlyphId;\n\n", type); - + /* * Dump out entries */ - + printf ("static const struct { const FcChar32 ucs; const FcChar8 name[%d]; } _fc_glyph_names[%d] = {\n", max_name_len + 1, nraw); - + for (i = 0; i < nraw; i++) printf (" { 0x%lx, \"%s\" },\n", (unsigned long) raw[i]->ucs, raw[i]->name); @@ -311,7 +311,7 @@ main (int argc, char **argv) */ dump (name_to_ucs, "_fc_name_to_ucs"); - + /* * Dump out ucs_to_name table */ @@ -319,7 +319,7 @@ main (int argc, char **argv) while (fgets (line, sizeof (line), stdin)) fputs (line, stdout); - + fflush (stdout); exit (ferror (stdout)); } commit 766bed901f7f4c648387fb403ef6e253be1c45e9 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Jan 2 02:19:04 2013 -0600 Fix compiler warnings diff --git a/src/fcobjs.c b/src/fcobjs.c index 4a1b0a8..b3bb200 100644 --- a/src/fcobjs.c +++ b/src/fcobjs.c @@ -53,7 +53,7 @@ retry: if (!ot) return NULL; - ot->object.object = FcStrdup (str); + ot->object.object = (const char *) FcStrdup (str); ot->object.type = -1; ot->id = fc_atomic_int_add (next_id, +1); ot->next = ots; @@ -74,7 +74,7 @@ FcObject FcObjectLookupBuiltinIdByName (const char *str) { const struct FcObjectTypeInfo *o = FcObjectTypeLookup (str, strlen (str)); - FcObject id; + if (o) return o->id; commit 93fb1d4bab5fefb73393141bb3e96c9dc279e615 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Jan 2 02:06:15 2013 -0600 Remove FcSharedStr* diff --git a/src/fccfg.c b/src/fccfg.c index 1069cd2..bc408db 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -1081,7 +1081,7 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e) case FcOpPlus: v.type = FcTypeString; str = FcStrPlus (vl.u.s, vr.u.s); - v.u.s = FcSharedStr (str); + v.u.s = FcStrdup (str); FcStrFree (str); if (!v.u.s) diff --git a/src/fcdefault.c b/src/fcdefault.c index 0069db2..6937994 100644 --- a/src/fcdefault.c +++ b/src/fcdefault.c @@ -92,7 +92,7 @@ retry: if (!lang) { FcStrSet *langs = FcGetDefaultLangs (); - lang = (FcChar8 *) strdup ((const char *) langs->strs[0]); + lang = FcStrdup (langs->strs[0]); FcStrSetDestroy (langs); if (!fc_atomic_ptr_cmpexch (&default_lang, NULL, lang)) { @@ -195,7 +195,7 @@ FcDefaultSubstitute (FcPattern *pattern) * exact matched "en" has higher score than ll-cc. */ v2.type = FcTypeString; - v2.u.s = FcSharedStr ((FcChar8 *)"en-us"); + v2.u.s = FcStrdup ("en-us"); if (FcPatternObjectGet (pattern, FC_FAMILYLANG_OBJECT, 0, &v) == FcResultNoMatch) { FcPatternObjectAdd (pattern, FC_FAMILYLANG_OBJECT, namelang, FcTrue); @@ -211,7 +211,7 @@ FcDefaultSubstitute (FcPattern *pattern) FcPatternObjectAdd (pattern, FC_FULLNAMELANG_OBJECT, namelang, FcTrue); FcPatternObjectAddWithBinding (pattern, FC_FULLNAMELANG_OBJECT, v2, FcValueBindingWeak, FcTrue); } - FcSharedStrFree ((FcChar8 *) v2.u.s); + FcFree (v2.u.s); } #define __fcdefault__ #include "fcaliastail.h" diff --git a/src/fcint.h b/src/fcint.h index 17298f7..9520be3 100644 --- a/src/fcint.h +++ b/src/fcint.h @@ -115,6 +115,9 @@ typedef enum _FcValueBinding { FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame } FcValueBinding; +#define FcStrdup(s) ((FcChar8 *) strdup ((const char *) (s))) +#define FcFree(s) (free ((FcChar8 *) (s))) + /* * Serialized data structures use only offsets instead of pointers * A low bit of 1 indicates an offset. @@ -969,12 +972,6 @@ FcPatternObjectGetLangSet (const FcPattern *p, FcObject object, int n, FcLangSet FcPrivate FcBool FcPatternAppend (FcPattern *p, FcPattern *s); -FcPrivate const FcChar8 * -FcSharedStr (const FcChar8 *name); - -FcPrivate FcBool -FcSharedStrFree (FcChar8 *name); - FcPrivate FcChar32 FcStringHash (const FcChar8 *s); diff --git a/src/fclist.c b/src/fclist.c index ba68d68..b7ae899 100644 --- a/src/fclist.c +++ b/src/fclist.c @@ -63,14 +63,14 @@ FcObjectSetAdd (FcObjectSet *os, const char *object) low = 0; mid = 0; c = 1; - object = (char *)FcSharedStr ((FcChar8 *)object); + object = strdup (object); while (low <= high) { mid = (low + high) >> 1; c = os->objects[mid] - object; if (c == 0) { - FcSharedStrFree ((FcChar8 *)object); + FcFree (object); return FcTrue; } if (c < 0) @@ -95,7 +95,7 @@ FcObjectSetDestroy (FcObjectSet *os) if (os->objects) { for (i = 0; i < os->nobject; i++) - FcSharedStrFree ((FcChar8 *)os->objects[i]); + FcFree (os->objects[i]); free ((void *) os->objects); } diff --git a/src/fcname.c b/src/fcname.c index 1bfc3b7..2418189 100644 --- a/src/fcname.c +++ b/src/fcname.c @@ -279,7 +279,7 @@ FcNameConvert (FcType type, FcChar8 *string) v.u.i = atoi ((char *) string); break; case FcTypeString: - v.u.s = FcSharedStr (string); + v.u.s = FcStrdup (string); if (!v.u.s) v.type = FcTypeVoid; break; diff --git a/src/fcobjs.c b/src/fcobjs.c index 9336068..4a1b0a8 100644 --- a/src/fcobjs.c +++ b/src/fcobjs.c @@ -53,7 +53,7 @@ retry: if (!ot) return NULL; - ot->object.object = strdup (str); + ot->object.object = FcStrdup (str); ot->object.type = -1; ot->id = fc_atomic_int_add (next_id, +1); ot->next = ots; diff --git a/src/fcpat.c b/src/fcpat.c index c3b90d6..b3b155d 100644 --- a/src/fcpat.c +++ b/src/fcpat.c @@ -45,8 +45,7 @@ FcValueDestroy (FcValue v) { switch ((int) v.type) { case FcTypeString: - if (!FcSharedStrFree (v.u.s)) - FcStrFree ((FcChar8 *) v.u.s); + FcFree (v.u.s); break; case FcTypeMatrix: FcMatrixFree ((FcMatrix *) v.u.m); @@ -93,7 +92,7 @@ FcValueSave (FcValue v) { switch ((int) v.type) { case FcTypeString: - v.u.s = FcSharedStr (v.u.s); + v.u.s = FcStrdup (v.u.s); if (!v.u.s) v.type = FcTypeVoid; break; @@ -132,8 +131,7 @@ FcValueListDestroy (FcValueListPtr l) { switch ((int) l->value.type) { case FcTypeString: - if (!FcSharedStrFree ((FcChar8 *)l->value.u.s)) - FcStrFree ((FcChar8 *)l->value.u.s); + FcFree (l->value.u.s); break; case FcTypeMatrix: FcMatrixFree ((FcMatrix *)l->value.u.m); @@ -1147,23 +1145,6 @@ bail0: } -/* We used to have a shared-str pool. Removed to make thread-safety - * work easier. My measurements show that the extra overhead is not - * significant by any means. */ - -FcBool -FcSharedStrFree (FcChar8 *name) -{ - free (name); - return FcTrue; -} - -const FcChar8 * -FcSharedStr (const FcChar8 *name) -{ - return strdup ((const char *) name); -} - FcBool FcPatternSerializeAlloc (FcSerialize *serialize, const FcPattern *pat) { diff --git a/src/fcstr.c b/src/fcstr.c index f278022..34093a0 100644 --- a/src/fcstr.c +++ b/src/fcstr.c @@ -38,16 +38,7 @@ FcChar8 * FcStrCopy (const FcChar8 *s) { - int len; - FcChar8 *r; - if (!s) - return 0; - len = strlen ((char *) s) + 1; - r = (FcChar8 *) malloc (len); - if (!r) - return 0; - memcpy (r, s, len); - return r; + return FcStrdup (s); } FcChar8 * diff --git a/src/fcxml.c b/src/fcxml.c index 1963cba..1f068ce 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -99,7 +99,7 @@ FcExprCreateString (FcConfig *config, const FcChar8 *s) if (e) { e->op = FcOpString; - e->u.sval = FcSharedStr (s); + e->u.sval = FcStrdup (s); } return e; } @@ -205,7 +205,7 @@ FcExprCreateConst (FcConfig *config, const FcChar8 *constant) if (e) { e->op = FcOpConst; - e->u.constant = FcSharedStr (constant); + e->u.constant = FcStrdup (constant); } return e; } @@ -234,7 +234,7 @@ FcExprDestroy (FcExpr *e) case FcOpDouble: break; case FcOpString: - FcSharedStrFree (e->u.sval); + FcFree (e->u.sval); break; case FcOpMatrix: FcExprMatrixFree (e->u.mexpr); @@ -252,7 +252,7 @@ FcExprDestroy (FcExpr *e) case FcOpField: break; case FcOpConst: - FcSharedStrFree (e->u.constant); + FcFree (e->u.constant); break; case FcOpAssign: case FcOpAssignReplace: @@ -2478,7 +2478,7 @@ FcPopValue (FcConfigParse *parse) switch ((int) vstack->tag) { case FcVStackString: - value.u.s = FcSharedStr (vstack->u.string); + value.u.s = FcStrdup (vstack->u.string); if (value.u.s) value.type = FcTypeString; break;
_______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/fontconfig