summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am7
-rw-r--r--configure.ac6
-rw-r--r--include/X11/fonts/bufio.h2
-rw-r--r--include/X11/fonts/fontmisc.h2
-rw-r--r--include/X11/fonts/fontutil.h2
-rw-r--r--include/X11/fonts/libxfont2.h163
-rw-r--r--include/libxfontint.h130
-rw-r--r--src/FreeType/ft.h2
-rw-r--r--src/FreeType/ftenc.c1
-rw-r--r--src/FreeType/ftfuncs.c1
-rw-r--r--src/FreeType/fttools.c1
-rw-r--r--src/FreeType/xttcap.c1
-rw-r--r--src/Makefile.am8
-rw-r--r--src/bitmap/bdfread.c1
-rw-r--r--src/bitmap/bdfutils.c1
-rw-r--r--src/bitmap/bitmap.c1
-rw-r--r--src/bitmap/bitmapfunc.c1
-rw-r--r--src/bitmap/bitmaputil.c1
-rw-r--r--src/bitmap/bitscale.c4
-rw-r--r--src/bitmap/fontink.c1
-rw-r--r--src/bitmap/pcfread.c1
-rw-r--r--src/bitmap/pcfwrite.c7
-rw-r--r--src/bitmap/snfread.c1
-rw-r--r--src/builtins/dir.c1
-rw-r--r--src/builtins/file.c1
-rw-r--r--src/builtins/fonts.c1
-rw-r--r--src/builtins/fpe.c36
-rw-r--r--src/builtins/render.c1
-rw-r--r--src/fc/fsconvert.c1
-rw-r--r--src/fc/fserve.c138
-rw-r--r--src/fc/fserve.h9
-rw-r--r--src/fc/fsio.c2
-rw-r--r--src/fc/fsio.h2
-rw-r--r--src/fc/fstrans.c2
-rw-r--r--src/fontfile/bitsource.c1
-rw-r--r--src/fontfile/bufio.c3
-rw-r--r--src/fontfile/bunzip2.c1
-rw-r--r--src/fontfile/catalogue.c36
-rw-r--r--src/fontfile/decompress.c1
-rw-r--r--src/fontfile/defaults.c1
-rw-r--r--src/fontfile/dirfile.c1
-rw-r--r--src/fontfile/fileio.c1
-rw-r--r--src/fontfile/filewr.c1
-rw-r--r--src/fontfile/fontdir.c7
-rw-r--r--src/fontfile/fontencc.c3
-rw-r--r--src/fontfile/fontfile.c64
-rw-r--r--src/fontfile/fontscale.c1
-rw-r--r--src/fontfile/gunzip.c1
-rw-r--r--src/fontfile/register.c1
-rw-r--r--src/fontfile/renderers.c3
-rw-r--r--src/stubs/Makefile.am19
-rw-r--r--src/stubs/atom.c224
-rw-r--r--src/stubs/cauthgen.c15
-rw-r--r--src/stubs/csignal.c15
-rw-r--r--src/stubs/delfntcid.c14
-rw-r--r--src/stubs/errorf.c14
-rw-r--r--src/stubs/findoldfnt.c15
-rw-r--r--src/stubs/getcres.c15
-rw-r--r--src/stubs/getdefptsize.c15
-rw-r--r--src/stubs/getnewfntcid.c15
-rw-r--r--src/stubs/gettime.c15
-rw-r--r--src/stubs/initfshdl.c16
-rw-r--r--src/stubs/libxfontstubs.c198
-rw-r--r--src/stubs/regfpefunc.c32
-rw-r--r--src/stubs/rmfshdl.c16
-rw-r--r--src/stubs/servclient.c19
-rw-r--r--src/stubs/setfntauth.c15
-rw-r--r--src/stubs/stfntcfnt.c15
-rw-r--r--src/stubs/stubs.h79
-rw-r--r--src/stubs/stubsinit.c82
-rw-r--r--src/util/Makefile.am1
-rw-r--r--src/util/atom.c250
-rw-r--r--src/util/fontaccel.c1
-rw-r--r--src/util/fontnames.c9
-rw-r--r--src/util/fontutil.c38
-rw-r--r--src/util/fontxlfd.c1
-rw-r--r--src/util/format.c1
-rw-r--r--src/util/miscutil.c23
-rw-r--r--src/util/patcache.c35
-rw-r--r--src/util/private.c5
-rw-r--r--src/util/utilbitmap.c1
-rw-r--r--xfont2.pc.in (renamed from xfont.pc.in)6
82 files changed, 981 insertions, 903 deletions
diff --git a/Makefile.am b/Makefile.am
index 7ec3188..43ccd34 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -23,6 +23,9 @@ SUBDIRS=doc src
libXfontincludedir = $(includedir)/X11/fonts
libXfontinclude_HEADERS = \
+ include/X11/fonts/libxfont2.h
+
+noinst_HEADERS = \
include/X11/fonts/bdfint.h \
include/X11/fonts/bitmap.h \
include/X11/fonts/bufio.h \
@@ -35,13 +38,15 @@ libXfontinclude_HEADERS = \
include/X11/fonts/fontutil.h \
include/X11/fonts/fontxlfd.h \
include/X11/fonts/pcf.h \
+ include/libxfontint.h \
src/FreeType/ft.h \
src/FreeType/ftfuncs.h
+
nodist_libXfontinclude_HEADERS = \
include/X11/fonts/fontconf.h
pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = xfont.pc
+pkgconfig_DATA = xfont2.pc
MAINTAINERCLEANFILES = ChangeLog INSTALL
diff --git a/configure.ac b/configure.ac
index dddef8a..0eb4c55 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,8 +21,8 @@
# Initialize Autoconf
AC_PREREQ([2.60])
-AC_INIT([libXfont], [1.5.1],
- [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXfont])
+AC_INIT([libXfont2], [2.0.0],
+ [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXfont2])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h include/X11/fonts/fontconf.h])
AC_CONFIG_MACRO_DIR([m4])
@@ -253,5 +253,5 @@ AC_CONFIG_FILES([Makefile
src/fc/Makefile
src/util/Makefile
src/stubs/Makefile
- xfont.pc])
+ xfont2.pc])
AC_OUTPUT
diff --git a/include/X11/fonts/bufio.h b/include/X11/fonts/bufio.h
index e7a9f4a..387533d 100644
--- a/include/X11/fonts/bufio.h
+++ b/include/X11/fonts/bufio.h
@@ -66,7 +66,7 @@ extern BufFilePtr BufFilePushBZIP2 ( BufFilePtr );
#endif
extern int BufFileClose ( BufFilePtr, int );
extern int BufFileRead ( BufFilePtr, char*, int );
-extern int BufFileWrite ( BufFilePtr, char*, int );
+extern int BufFileWrite ( BufFilePtr, const char*, int );
#define BufFileGet(f) ((f)->left-- ? *(f)->bufp++ : ((f)->eof = (*(f)->input) (f)))
#define BufFilePut(c,f) (--(f)->left ? *(f)->bufp++ = ((unsigned char)(c)) : (*(f)->output) ((unsigned char)(c),f))
diff --git a/include/X11/fonts/fontmisc.h b/include/X11/fonts/fontmisc.h
index d3926a7..06e49f5 100644
--- a/include/X11/fonts/fontmisc.h
+++ b/include/X11/fonts/fontmisc.h
@@ -54,7 +54,7 @@ in this Software without prior written authorization from The Open Group.
extern Atom MakeAtom ( const char *string, unsigned len, int makeit );
extern int ValidAtom ( Atom atom );
-extern char *NameForAtom (Atom atom);
+extern const char *NameForAtom (Atom atom);
#define lowbit(x) ((x) & (~(x) + 1))
diff --git a/include/X11/fonts/fontutil.h b/include/X11/fonts/fontutil.h
index ed55b89..6e71aa4 100644
--- a/include/X11/fonts/fontutil.h
+++ b/include/X11/fonts/fontutil.h
@@ -3,6 +3,7 @@
#include <X11/fonts/FSproto.h>
+#if 0
extern int FontCouldBeTerminal(FontInfoPtr);
extern int CheckFSFormat(fsBitmapFormat, fsBitmapFormatMask, int *, int *,
int *, int *, int *);
@@ -20,5 +21,6 @@ extern void InitGlyphCaching ( void );
extern void SetGlyphCachingMode ( int newmode );
extern int add_range ( fsRange *newrange, int *nranges, fsRange **range,
Bool charset_subset );
+#endif
#endif /* _FONTUTIL_H_ */
diff --git a/include/X11/fonts/libxfont2.h b/include/X11/fonts/libxfont2.h
new file mode 100644
index 0000000..0ba7419
--- /dev/null
+++ b/include/X11/fonts/libxfont2.h
@@ -0,0 +1,163 @@
+/*
+ * Copyright © 2015 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 the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS 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 _LIBXFONT2_H_
+#define _LIBXFONT2_H_
+
+#include <stdarg.h>
+#include <stdint.h>
+#include <X11/Xfuncproto.h>
+#include <X11/fonts/font.h>
+
+#define XFONT2_FPE_FUNCS_VERSION 1
+
+typedef int (*WakeupFpe) (FontPathElementPtr fpe);
+
+typedef struct _xfont2_fpe_funcs {
+ int version;
+ NameCheckFunc name_check;
+ InitFpeFunc init_fpe;
+ FreeFpeFunc free_fpe;
+ ResetFpeFunc reset_fpe;
+ OpenFontFunc open_font;
+ CloseFontFunc close_font;
+ ListFontsFunc list_fonts;
+ StartLfwiFunc start_list_fonts_with_info;
+ NextLfwiFunc list_next_font_with_info;
+ WakeupFpe wakeup_fpe;
+ ClientDiedFunc client_died;
+ LoadGlyphsFunc load_glyphs;
+ StartLaFunc start_list_fonts_and_aliases;
+ NextLaFunc list_next_font_or_alias;
+ SetPathFunc set_path_hook;
+} xfont2_fpe_funcs_rec, *xfont2_fpe_funcs_ptr;
+
+typedef void (*FontBlockHandlerProcPtr) (void *timeout);
+
+typedef void (*FontFdHandlerProcPtr) (int fd, void *data);
+
+#define XFONT2_CLIENT_FUNCS_VERSION 1
+
+typedef struct _xfont2_client_funcs {
+ int version;
+ int (*client_auth_generation)(ClientPtr client);
+ Bool (*client_signal)(ClientPtr client);
+ void (*delete_font_client_id)(Font id);
+ void (*verrorf)(const char *f, va_list ap) _X_ATTRIBUTE_PRINTF(1,0);
+ FontPtr (*find_old_font)(FSID id);
+ FontResolutionPtr (*get_client_resolutions)(int *num);
+ int (*get_default_point_size)(void);
+ Font (*get_new_font_client_id)(void);
+ uint32_t (*get_time_in_millis)(void);
+ int (*init_fs_handlers)(FontPathElementPtr fpe,
+ FontBlockHandlerProcPtr block_handler);
+ int (*register_fpe_funcs)(const xfont2_fpe_funcs_rec *funcs);
+ void (*remove_fs_handlers)(FontPathElementPtr fpe,
+ FontBlockHandlerProcPtr block_handler,
+ Bool all );
+ void *(*get_server_client)(void);
+ int (*set_font_authorizations)(char **authorizations,
+ int *authlen, void *client);
+ int (*store_font_client_font)(FontPtr pfont, Font id);
+ Atom (*make_atom)(const char *string, unsigned len, int makeit);
+ int (*valid_atom)(Atom atom);
+ const char *(*name_for_atom)(Atom atom);
+ unsigned long (*get_server_generation)(void);
+ int (*add_fs_fd)(int fd, FontFdHandlerProcPtr handler, void *data);
+ void (*remove_fs_fd)(int fd);
+ void (*adjust_fs_wait_for_delay)(void *wt, unsigned long newdelay);
+} xfont2_client_funcs_rec, *xfont2_client_funcs_ptr;
+
+_X_EXPORT int
+xfont2_init(xfont2_client_funcs_rec const *client_funcs);
+
+_X_EXPORT void
+xfont2_query_glyph_extents(FontPtr pFont, CharInfoPtr *charinfo,
+ unsigned long count, ExtentInfoRec *info);
+
+_X_EXPORT Bool
+xfont2_query_text_extents(FontPtr pFont, unsigned long count,
+ unsigned char *chars, ExtentInfoRec *info);
+
+_X_EXPORT Bool
+xfont2_parse_glyph_caching_mode(char *str);
+
+_X_EXPORT void
+xfont2_init_glyph_caching(void);
+
+_X_EXPORT void
+xfont2_set_glyph_caching_mode(int newmode);
+
+_X_EXPORT FontNamesPtr
+xfont2_make_font_names_record(unsigned size);
+
+_X_EXPORT void
+xfont2_free_font_names(FontNamesPtr pFN);
+
+_X_EXPORT int
+xfont2_add_font_names_name(FontNamesPtr names,
+ char *name,
+ int length);
+
+typedef struct _xfont2_pattern_cache *xfont2_pattern_cache_ptr;
+
+_X_EXPORT xfont2_pattern_cache_ptr
+xfont2_make_font_pattern_cache(void);
+
+_X_EXPORT void
+xfont2_free_font_pattern_cache(xfont2_pattern_cache_ptr cache);
+
+_X_EXPORT void
+xfont2_empty_font_pattern_cache(xfont2_pattern_cache_ptr cache);
+
+_X_EXPORT void
+xfont2_cache_font_pattern(xfont2_pattern_cache_ptr cache,
+ const char * pattern,
+ int patlen,
+ FontPtr pFont);
+
+_X_EXPORT FontPtr
+xfont2_find_cached_font_pattern(xfont2_pattern_cache_ptr cache,
+ const char * pattern,
+ int patlen);
+
+_X_EXPORT void
+xfont2_remove_cached_font_pattern(xfont2_pattern_cache_ptr cache,
+ FontPtr pFont);
+
+/* private.c */
+
+_X_EXPORT int
+xfont2_allocate_font_private_index (void);
+
+static inline void *
+xfont2_font_get_private(FontPtr pFont, int n)
+{
+ if (n > pFont->maxPrivate)
+ return NULL;
+ return pFont->devPrivates[n];
+}
+
+_X_EXPORT Bool
+xfont2_font_set_private(FontPtr pFont, int n, void *ptr);
+
+#endif /* _LIBXFONT2_H_ */
diff --git a/include/libxfontint.h b/include/libxfontint.h
new file mode 100644
index 0000000..09772b6
--- /dev/null
+++ b/include/libxfontint.h
@@ -0,0 +1,130 @@
+/*
+ * Copyright © 2015 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 the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS 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 _LIBXFONTINT_H_
+#define _LIBXFONTINT_H_
+
+#include <X11/fonts/FSproto.h>
+
+#define client_auth_generation __libxfont__client_auth_generation
+#define ClientSignal __libxfont__ClientSignal
+#define DeleteFontClientID __libxfont__DeleteFontClientID
+#define ErrorF __libxfont__ErrorF
+#define find_old_font __libxfont__find_old_font
+#define GetClientResolutions __libxfont__GetClientResolutions
+#define GetDefaultPointSize __libxfont__GetDefaultPointSize
+#define GetNewFontClientID __libxfont__GetNewFontClientID
+#define GetTimeInMillis __libxfont__GetTimeInMillis
+#define init_fs_handlers __libxfont__init_fs_handlers
+#define remove_fs_handlers __libxfont__remove_fs_handlers
+#define __GetServerClient __libxfont____GetServerClient
+#define set_font_authorizations __libxfont__set_font_authorizations
+#define StoreFontClientFont __libxfont__StoreFontClientFont
+#define MakeAtom __libxfont__MakeAtom
+#define ValidAtom __libxfont__ValidAtom
+#define NameForAtom __libxfont__NameForAtom
+
+#define add_fs_fd __libxfont_add_fs_fd
+#define remove_fs_fd __libxfont_remove_fs_fd
+#define adjust_fs_wait_for_delay __libxfont_adjust_fs_wait_for_delay
+
+#include <X11/fonts/FS.h>
+#include <X11/fonts/FSproto.h>
+#include <X11/X.h>
+#include <X11/Xos.h>
+#include <X11/fonts/fontmisc.h>
+#include <X11/fonts/fontstruct.h>
+#include <X11/fonts/fontutil.h>
+#include <X11/fonts/fontproto.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
+
+#include <X11/fonts/libxfont2.h>
+
+#ifndef LIBXFONT_SKIP_ERRORF
+void
+ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2);
+#endif
+
+FontPtr
+find_old_font(FSID id);
+
+unsigned long
+GetTimeInMillis (void);
+
+int
+register_fpe_funcs(const xfont2_fpe_funcs_rec *funcs);
+
+void *
+__GetServerClient(void);
+
+int
+set_font_authorizations(char **authorizations, int *authlen, ClientPtr client);
+
+unsigned long
+__GetServerGeneration (void);
+
+int add_fs_fd(int fd, FontFdHandlerProcPtr handler, void *data);
+
+void remove_fs_fd(int fd);
+
+void adjust_fs_wait_for_delay(void *wt, unsigned long newdelay);
+
+int
+init_fs_handlers2(FontPathElementPtr fpe,
+ FontBlockHandlerProcPtr block_handler);
+
+void
+remove_fs_handlers2(FontPathElementPtr fpe,
+ FontBlockHandlerProcPtr blockHandler,
+ Bool all);
+
+Atom
+__libxfont_internal__MakeAtom(const char *string, unsigned len, int makeit);
+
+int
+__libxfont_internal__ValidAtom(Atom atom);
+
+const char *
+__libxfont_internal__NameForAtom(Atom atom);
+
+int
+CheckFSFormat(fsBitmapFormat format,
+ fsBitmapFormatMask fmask,
+ int *bit_order,
+ int *byte_order,
+ int *scan,
+ int *glyph,
+ int *image);
+
+int
+FontCouldBeTerminal(FontInfoPtr);
+
+void
+FontComputeInfoAccelerators(FontInfoPtr);
+
+int
+add_range (fsRange *newrange, int *nranges, fsRange **range,
+ Bool charset_subset);
+
+#endif /* _LIBXFONTINT_H_ */
diff --git a/src/FreeType/ft.h b/src/FreeType/ft.h
index 8cf31d4..7fa86b0 100644
--- a/src/FreeType/ft.h
+++ b/src/FreeType/ft.h
@@ -82,6 +82,4 @@ unsigned FTRemap(FT_Face face, FTMappingPtr, unsigned code);
int FTtoXReturnCode(int);
int FTGetEnglishName(FT_Face, int, char *, int);
-extern void ErrorF(const char*, ...);
-
#endif /* _FT_H_ */
diff --git a/src/FreeType/ftenc.c b/src/FreeType/ftenc.c
index 9e31d75..dfa5cab 100644
--- a/src/FreeType/ftenc.c
+++ b/src/FreeType/ftenc.c
@@ -23,6 +23,7 @@ THE SOFTWARE.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <string.h>
#include <X11/fonts/fntfilst.h>
diff --git a/src/FreeType/ftfuncs.c b/src/FreeType/ftfuncs.c
index df64f5e..bbd4db4 100644
--- a/src/FreeType/ftfuncs.c
+++ b/src/FreeType/ftfuncs.c
@@ -29,6 +29,7 @@ THE SOFTWARE.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <string.h>
diff --git a/src/FreeType/fttools.c b/src/FreeType/fttools.c
index 8c5d08e..7c0bd9b 100644
--- a/src/FreeType/fttools.c
+++ b/src/FreeType/fttools.c
@@ -24,6 +24,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <ctype.h>
#include <string.h>
diff --git a/src/FreeType/xttcap.c b/src/FreeType/xttcap.c
index e30e0f9..f54f76c 100644
--- a/src/FreeType/xttcap.c
+++ b/src/FreeType/xttcap.c
@@ -41,6 +41,7 @@ static char const * const releaseID =
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <string.h>
#include <ctype.h>
diff --git a/src/Makefile.am b/src/Makefile.am
index 33fd135..03c704a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -19,7 +19,7 @@
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-lib_LTLIBRARIES = libXfont.la
+lib_LTLIBRARIES = libXfont2.la
AM_CFLAGS = $(OS_CFLAGS) $(CWARNFLAGS)
@@ -58,11 +58,11 @@ SUBDIRS=\
$(FONTFILE_DIR) $(FREETYPE_DIR) $(BITMAP_DIR) \
$(BUILTINS_DIR) $(FC_DIR) $(UTIL_DIR) $(STUBS_DIR)
-libXfont_la_LIBADD = \
+libXfont2_la_LIBADD = \
$(FONTFILE_LIB) $(FREETYPE_LIB) $(BITMAP_LIB) \
$(BUILTINS_LIB) $(FC_LIB) $(UTIL_LIB) $(STUBS_LIB) \
$(FREETYPE_LIBS) $(Z_LIBS) $(MATH_LIBS) $(XFONT_LIBS)
-libXfont_la_SOURCES = dummy.c
+libXfont2_la_SOURCES = dummy.c
-libXfont_la_LDFLAGS = -version-number 1:4:1 -no-undefined
+libXfont2_la_LDFLAGS = -version-number 2:0:0 -no-undefined
diff --git a/src/bitmap/bdfread.c b/src/bitmap/bdfread.c
index f343eed..f2b1e22 100644
--- a/src/bitmap/bdfread.c
+++ b/src/bitmap/bdfread.c
@@ -52,6 +52,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <ctype.h>
#include <X11/fonts/fntfilst.h>
diff --git a/src/bitmap/bdfutils.c b/src/bitmap/bdfutils.c
index 438d197..253cb93 100644
--- a/src/bitmap/bdfutils.c
+++ b/src/bitmap/bdfutils.c
@@ -52,6 +52,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <ctype.h>
#include <stdio.h>
diff --git a/src/bitmap/bitmap.c b/src/bitmap/bitmap.c
index 0a379eb..a780506 100644
--- a/src/bitmap/bitmap.c
+++ b/src/bitmap/bitmap.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
diff --git a/src/bitmap/bitmapfunc.c b/src/bitmap/bitmapfunc.c
index 8c6b3d8..3087e47 100644
--- a/src/bitmap/bitmapfunc.c
+++ b/src/bitmap/bitmapfunc.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
diff --git a/src/bitmap/bitmaputil.c b/src/bitmap/bitmaputil.c
index 0a1c87e..232729f 100644
--- a/src/bitmap/bitmaputil.c
+++ b/src/bitmap/bitmaputil.c
@@ -29,6 +29,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
diff --git a/src/bitmap/bitscale.c b/src/bitmap/bitscale.c
index c9af4c0..22747a9 100644
--- a/src/bitmap/bitscale.c
+++ b/src/bitmap/bitscale.c
@@ -33,6 +33,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
@@ -43,9 +44,6 @@ from The Open Group.
#define MAX(a,b) (((a)>(b)) ? a : b)
#endif
-/* Should get this from elsewhere */
-extern unsigned long __GetServerGeneration(void);
-
static void bitmapUnloadScalable (FontPtr pFont);
static void ScaleBitmap ( FontPtr pFont, CharInfoPtr opci,
CharInfoPtr pci, double *inv_xform,
diff --git a/src/bitmap/fontink.c b/src/bitmap/fontink.c
index f4898da..ea915e4 100644
--- a/src/bitmap/fontink.c
+++ b/src/bitmap/fontink.c
@@ -33,6 +33,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
diff --git a/src/bitmap/pcfread.c b/src/bitmap/pcfread.c
index 33871ae..dab1c44 100644
--- a/src/bitmap/pcfread.c
+++ b/src/bitmap/pcfread.c
@@ -33,6 +33,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
diff --git a/src/bitmap/pcfwrite.c b/src/bitmap/pcfwrite.c
index 0874c4b..61ae83d 100644
--- a/src/bitmap/pcfwrite.c
+++ b/src/bitmap/pcfwrite.c
@@ -33,6 +33,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
@@ -43,7 +44,7 @@ from The Open Group.
static CARD32 current_position;
static int
-pcfWrite(FontFilePtr file, char *b, int c)
+pcfWrite(FontFilePtr file, const char *b, int c)
{
current_position += c;
return FontFileWrite(file, b, c);
@@ -189,7 +190,7 @@ pcfPutAccel(FontFilePtr file, CARD32 format, FontInfoPtr pFontInfo)
#define CanCompressMetrics(min,max) (CanCompressMetric(min) && CanCompressMetric(max))
-static char *
+static const char *
pcfNameForAtom(Atom a)
{
return NameForAtom(a);
@@ -218,7 +219,7 @@ pcfWriteFont(FontPtr pFont, FontFilePtr file)
int header_size;
FontPropPtr offsetProps;
int prop_pad = 0;
- char *atom_name;
+ const char *atom_name;
int glyph;
CARD32 offset;
diff --git a/src/bitmap/snfread.c b/src/bitmap/snfread.c
index da362c8..452b99d 100644
--- a/src/bitmap/snfread.c
+++ b/src/bitmap/snfread.c
@@ -52,6 +52,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <ctype.h>
#include <X11/fonts/fntfilst.h>
diff --git a/src/builtins/dir.c b/src/builtins/dir.c
index 0225bfc..bda5647 100644
--- a/src/builtins/dir.c
+++ b/src/builtins/dir.c
@@ -24,6 +24,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include "builtin.h"
static BuiltinDirPtr
diff --git a/src/builtins/file.c b/src/builtins/file.c
index 93527c1..3cfcf0c 100644
--- a/src/builtins/file.c
+++ b/src/builtins/file.c
@@ -24,6 +24,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <string.h>
#include "builtin.h"
diff --git a/src/builtins/fonts.c b/src/builtins/fonts.c
index 3892178..bb593d7 100644
--- a/src/builtins/fonts.c
+++ b/src/builtins/fonts.c
@@ -24,6 +24,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include "builtin.h"
static const char file_cursor[] = {
diff --git a/src/builtins/fpe.c b/src/builtins/fpe.c
index 4f5d4cf..e1b6973 100644
--- a/src/builtins/fpe.c
+++ b/src/builtins/fpe.c
@@ -24,6 +24,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include "builtin.h"
@@ -65,24 +66,29 @@ BuiltinFreeFPE (FontPathElementPtr fpe)
return Successful;
}
+static const xfont2_fpe_funcs_rec builtin_fpe_funcs = {
+ .version = XFONT2_FPE_FUNCS_VERSION,
+ .name_check = BuiltinNameCheck,
+ .init_fpe = BuiltinInitFPE,
+ .free_fpe = BuiltinFreeFPE,
+ .reset_fpe = BuiltinResetFPE,
+ .open_font = FontFileOpenFont,
+ .close_font = FontFileCloseFont,
+ .list_fonts = FontFileListFonts,
+ .start_list_fonts_with_info = FontFileStartListFontsWithInfo,
+ .list_next_font_with_info = FontFileListNextFontWithInfo,
+ .wakeup_fpe = 0,
+ .client_died = 0,
+ .load_glyphs = 0,
+ .start_list_fonts_and_aliases = 0,
+ .list_next_font_or_alias = 0,
+ .set_path_hook = 0
+};
+
void
BuiltinRegisterFpeFunctions(void)
{
BuiltinRegisterFontFileFunctions ();
- font_file_type = RegisterFPEFunctions(BuiltinNameCheck,
- BuiltinInitFPE,
- BuiltinFreeFPE,
- BuiltinResetFPE,
- FontFileOpenFont,
- FontFileCloseFont,
- FontFileListFonts,
- FontFileStartListFontsWithInfo,
- FontFileListNextFontWithInfo,
- (WakeupFpeFunc) 0,
- (ClientDiedFunc) 0,
- (LoadGlyphsFunc) 0,
- (StartLaFunc) 0,
- (NextLaFunc) 0,
- (SetPathFunc) 0);
+ font_file_type = register_fpe_funcs(&builtin_fpe_funcs);
}
diff --git a/src/builtins/render.c b/src/builtins/render.c
index 2be0053..7676c87 100644
--- a/src/builtins/render.c
+++ b/src/builtins/render.c
@@ -24,6 +24,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/fontutil.h>
#include <X11/fonts/pcf.h>
diff --git a/src/fc/fsconvert.c b/src/fc/fsconvert.c
index 18b0c0d..312bacb 100644
--- a/src/fc/fsconvert.c
+++ b/src/fc/fsconvert.c
@@ -28,6 +28,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/X.h>
#include <X11/Xtrans/Xtrans.h>
#include <X11/Xpoll.h>
diff --git a/src/fc/fserve.c b/src/fc/fserve.c
index 92b0d53..42c4028 100644
--- a/src/fc/fserve.c
+++ b/src/fc/fserve.c
@@ -53,6 +53,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#ifdef WIN32
#define _WILLWINSOCK_
@@ -101,18 +102,14 @@ in this Software without prior written authorization from The Open Group.
/* Somewhat arbitrary limit on maximum reply size we'll try to read. */
#define MAX_REPLY_LENGTH ((64 * 1024 * 1024) >> 2)
-extern void ErrorF(const char *f, ...);
-
static int fs_read_glyphs ( FontPathElementPtr fpe, FSBlockDataPtr blockrec );
static int fs_read_list ( FontPathElementPtr fpe, FSBlockDataPtr blockrec );
static int fs_read_list_info ( FontPathElementPtr fpe,
FSBlockDataPtr blockrec );
-extern fd_set _fs_fd_mask;
+static void fs_block_handler ( void *wt );
-static void fs_block_handler ( pointer data, OSTimePtr wt,
- pointer LastSelectMask );
-static int fs_wakeup ( FontPathElementPtr fpe, unsigned long *mask );
+static int fs_wakeup ( FontPathElementPtr fpe );
/*
* List of all FPEs
@@ -147,7 +144,7 @@ static void
_fs_close_server (FSFpePtr conn);
static FSFpePtr
-_fs_init_conn (const char *servername);
+_fs_init_conn (const char *servername, FontPathElementPtr fpe);
static int
_fs_wait_connect (FSFpePtr conn);
@@ -167,6 +164,9 @@ _fs_free_conn (FSFpePtr conn);
static int
fs_free_fpe(FontPathElementPtr fpe);
+static void
+fs_fd_handler(int fd, void *data);
+
/*
* Font server access
*
@@ -305,12 +305,12 @@ fs_init_fpe(FontPathElementPtr fpe)
if (*name == ':')
name++; /* skip ':' */
- conn = _fs_init_conn (name);
+ conn = _fs_init_conn (name, fpe);
if (!conn)
err = AllocError;
else
{
- err = init_fs_handlers (fpe, fs_block_handler);
+ err = init_fs_handlers2 (fpe, fs_block_handler);
if (err != Successful)
{
_fs_free_conn (conn);
@@ -383,7 +383,7 @@ fs_free_fpe(FontPathElementPtr fpe)
}
_fs_unmark_block (conn, conn->blockState);
fs_close_conn(conn);
- remove_fs_handlers(fpe, fs_block_handler, fs_fpes == 0);
+ remove_fs_handlers2(fpe, fs_block_handler, fs_fpes == 0);
_fs_free_conn (conn);
fpe->private = (pointer) 0;
@@ -515,6 +515,24 @@ _fs_add_clients_depending(FSClientsDependingPtr *clients_depending, pointer clie
return Suspended;
}
+static void
+conn_start_listening(FSFpePtr conn)
+{
+ if (!conn->fs_listening) {
+ add_fs_fd(conn->fs_fd, fs_fd_handler, conn->fpe);
+ conn->fs_listening = TRUE;
+ }
+}
+
+static void
+conn_stop_listening(FSFpePtr conn)
+{
+ if (conn->fs_listening) {
+ remove_fs_fd(conn->fs_fd);
+ conn->fs_listening = FALSE;
+ }
+}
+
/*
* When a request is aborted due to a font server failure,
* signal any depending clients to restart their dependant
@@ -546,7 +564,7 @@ _fs_clean_aborted_blockrec(FSFpePtr conn, FSBlockDataPtr blockrec)
FSBlockedListInfoPtr binfo;
binfo = (FSBlockedListInfoPtr) blockrec->data;
if (binfo->status == FS_LFWI_REPLY)
- FD_SET(conn->fs_fd, &_fs_fd_mask);
+ conn_start_listening(conn);
_fs_free_props (&binfo->info);
}
default:
@@ -608,7 +626,7 @@ fs_get_reply (FSFpePtr conn, int *error)
int ret;
/* block if the connection is down or paused in lfwi */
- if (conn->fs_fd == -1 || !FD_ISSET (conn->fs_fd, &_fs_fd_mask))
+ if (conn->fs_fd == -1 || !conn->fs_listening)
{
*error = FSIO_BLOCK;
return 0;
@@ -655,7 +673,7 @@ fs_reply_ready (FSFpePtr conn)
{
fsGenericReply *rep;
- if (conn->fs_fd == -1 || !FD_ISSET (conn->fs_fd, &_fs_fd_mask))
+ if (conn->fs_fd == -1 || !conn->fs_listening)
return FALSE;
if (fs_data_read (conn) < sizeof (fsGenericReply))
return FALSE;
@@ -1300,15 +1318,12 @@ _fs_unmark_block (FSFpePtr conn, CARD32 mask)
/* ARGSUSED */
static void
-fs_block_handler(pointer data, OSTimePtr wt, pointer LastSelectMask)
+fs_block_handler(void *wt)
{
- static struct timeval block_timeout;
CARD32 now, earliest, wakeup;
int soonest;
FSFpePtr conn;
- XFD_ORSET((fd_set *)LastSelectMask, (fd_set *)LastSelectMask,
- &_fs_fd_mask);
/*
* Flush all pending output
*/
@@ -1320,14 +1335,7 @@ fs_block_handler(pointer data, OSTimePtr wt, pointer LastSelectMask)
* Check for any fpe with a complete reply, set sleep time to zero
*/
if (fs_blockState & FS_COMPLETE_REPLY)
- {
- block_timeout.tv_sec = 0;
- block_timeout.tv_usec = 0;
- if (*wt == NULL)
- *wt = &block_timeout;
- else
- **wt = block_timeout;
- }
+ adjust_fs_wait_for_delay(wt, 0);
/*
* Walk through fpe list computing sleep time
*/
@@ -1368,12 +1376,7 @@ fs_block_handler(pointer data, OSTimePtr wt, pointer LastSelectMask)
soonest = earliest - now;
if (soonest < 0)
soonest = 0;
- block_timeout.tv_sec = soonest / 1000;
- block_timeout.tv_usec = (soonest % 1000) * 1000;
- if (*wt == NULL)
- *wt = &block_timeout;
- else if (soonest < (*wt)->tv_sec * 1000 + (*wt)->tv_usec / 1000)
- **wt = block_timeout;
+ adjust_fs_wait_for_delay(wt, soonest);
}
}
@@ -1460,11 +1463,11 @@ fs_read_reply (FontPathElementPtr fpe, pointer client)
}
}
-static int
-fs_wakeup(FontPathElementPtr fpe, unsigned long *mask)
+static void
+fs_fd_handler(int fd, void *data)
{
- fd_set *LastSelectMask = (fd_set *) mask;
- FSFpePtr conn = (FSFpePtr) fpe->private;
+ FontPathElementPtr fpe = data;
+ FSFpePtr conn = (FSFpePtr) fpe->private;
/*
* Don't continue if the fd is -1 (which will be true when the
@@ -1472,11 +1475,19 @@ fs_wakeup(FontPathElementPtr fpe, unsigned long *mask)
*/
if ((conn->blockState & FS_RECONNECTING))
_fs_check_reconnect (conn);
- else if ((conn->blockState & FS_COMPLETE_REPLY) ||
- (conn->fs_fd != -1 && FD_ISSET(conn->fs_fd, LastSelectMask)))
+ else if ((conn->fs_fd != -1))
fs_read_reply (fpe, 0);
+}
+
+static int
+fs_wakeup(FontPathElementPtr fpe)
+{
+ FSFpePtr conn = (FSFpePtr) fpe->private;
+
if (conn->blockState & (FS_PENDING_REPLY|FS_BROKEN_CONNECTION|FS_BROKEN_WRITE))
_fs_do_blocked (conn);
+ if (conn->blockState & FS_COMPLETE_REPLY)
+ fs_read_reply (fpe, 0);
#ifdef DEBUG
{
FSBlockDataPtr blockrec;
@@ -2160,11 +2171,6 @@ fs_send_load_glyphs(pointer client, FontPtr pfont,
return Suspended;
}
-
-extern pointer __GetServerClient(void); /* This could be any number that
- doesn't conflict with existing
- client values. */
-
static int
_fs_load_glyphs(pointer client, FontPtr pfont, Bool range_flag,
unsigned int nchars, int item_size, unsigned char *data)
@@ -2392,7 +2398,7 @@ fs_read_list(FontPathElementPtr fpe, FSBlockDataPtr blockrec)
err = BadFontName;
break;
}
- err = AddFontNamesName(blist->names, data, length);
+ err = xfont2_add_font_names_name(blist->names, data, length);
if (err != Successful)
break;
data += length;
@@ -2621,7 +2627,7 @@ fs_read_list_info(FontPathElementPtr fpe, FSBlockDataPtr blockrec)
/* disable this font server until we've processed this response */
_fs_unmark_block (conn, FS_COMPLETE_REPLY);
- FD_CLR(conn->fs_fd, &_fs_fd_mask);
+ conn_stop_listening(conn);
done:
_fs_done_read (conn, rep->length << 2);
return err;
@@ -2724,7 +2730,7 @@ fs_next_list_with_info(pointer client, FontPathElementPtr fpe,
*numFonts = binfo->remaining;
/* Restart reply processing from this font server */
- FD_SET(conn->fs_fd, &_fs_fd_mask);
+ conn_start_listening(conn);
if (fs_reply_ready (conn))
_fs_mark_block (conn, FS_COMPLETE_REPLY);
@@ -2887,7 +2893,7 @@ _fs_check_connect (FSFpePtr conn)
switch (ret) {
case FSIO_READY:
conn->fs_fd = _FontTransGetConnectionNumber (conn->trans_conn);
- FD_SET (conn->fs_fd, &_fs_fd_mask);
+ conn_start_listening(conn);
break;
case FSIO_BLOCK:
break;
@@ -3228,7 +3234,7 @@ _fs_close_server (FSFpePtr conn)
}
if (conn->fs_fd >= 0)
{
- FD_CLR (conn->fs_fd, &_fs_fd_mask);
+ conn_stop_listening(conn);
conn->fs_fd = -1;
}
conn->fs_conn_state = FS_CONN_UNCONNECTED;
@@ -3362,7 +3368,7 @@ _fs_start_reconnect (FSFpePtr conn)
static FSFpePtr
-_fs_init_conn (const char *servername)
+_fs_init_conn (const char *servername, FontPathElementPtr fpe)
{
FSFpePtr conn;
@@ -3377,6 +3383,7 @@ _fs_init_conn (const char *servername)
conn->servername = (char *) (conn + 1);
conn->fs_conn_state = FS_CONN_UNCONNECTED;
conn->fs_fd = -1;
+ conn->fpe = fpe;
strcpy (conn->servername, servername);
return conn;
}
@@ -3395,22 +3402,27 @@ _fs_free_conn (FSFpePtr conn)
* called at server init time
*/
+static const xfont2_fpe_funcs_rec fs_fpe_funcs = {
+ .version = XFONT2_FPE_FUNCS_VERSION,
+ .name_check = fs_name_check,
+ .init_fpe = fs_init_fpe,
+ .free_fpe = fs_free_fpe,
+ .reset_fpe = fs_reset_fpe,
+ .open_font = fs_open_font,
+ .close_font = fs_close_font,
+ .list_fonts = fs_list_fonts,
+ .start_list_fonts_with_info = fs_start_list_with_info,
+ .list_next_font_with_info = fs_next_list_with_info,
+ .wakeup_fpe = fs_wakeup,
+ .client_died = fs_client_died,
+ .load_glyphs = _fs_load_glyphs,
+ .start_list_fonts_and_aliases = (StartLaFunc) 0,
+ .list_next_font_or_alias = (NextLaFunc) 0,
+ .set_path_hook = (SetPathFunc) 0
+};
+
void
fs_register_fpe_functions(void)
{
- RegisterFPEFunctions(fs_name_check,
- fs_init_fpe,
- fs_free_fpe,
- fs_reset_fpe,
- fs_open_font,
- fs_close_font,
- fs_list_fonts,
- fs_start_list_with_info,
- fs_next_list_with_info,
- fs_wakeup,
- fs_client_died,
- _fs_load_glyphs,
- NULL,
- NULL,
- NULL);
+ register_fpe_funcs(&fs_fpe_funcs);
}
diff --git a/src/fc/fserve.h b/src/fc/fserve.h
index 502e201..27c12a7 100644
--- a/src/fc/fserve.h
+++ b/src/fc/fserve.h
@@ -79,13 +79,4 @@ extern FontPtr fs_create_font (FontPathElementPtr fpe,
extern int fs_load_all_glyphs ( FontPtr pfont );
-/*
- * These should be declared elsewhere, but I'm concerned that moving them
- * would cause problems building other pieces
- */
-extern FontPtr find_old_font (Font id);
-extern int set_font_authorizations (char **a, int *len, pointer client);
-extern long GetTimeInMillis (void);
-
-
#endif /* _FSERVE_H_ */
diff --git a/src/fc/fsio.c b/src/fc/fsio.c
index 4deab88..a5fe5b0 100644
--- a/src/fc/fsio.c
+++ b/src/fc/fsio.c
@@ -29,6 +29,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#ifdef WIN32
#define _WILLWINSOCK_
@@ -65,7 +66,6 @@
static int padlength[4] = {0, 3, 2, 1};
-fd_set _fs_fd_mask;
static int
_fs_resize (FSBufPtr buf, long size);
diff --git a/src/fc/fsio.h b/src/fc/fsio.h
index fa1e7d8..9d0255a 100644
--- a/src/fc/fsio.h
+++ b/src/fc/fsio.h
@@ -81,7 +81,9 @@ typedef struct _fs_buf {
/* FS specific font FontPathElement data */
typedef struct _fs_fpe_data {
FSFpePtr next; /* list of all active fs fpes */
+ FontPathElementPtr fpe; /* Back pointer to FPE */
int fs_fd; /* < 0 when not running */
+ Bool fs_listening; /* Listening for input */
int fs_conn_state; /* connection state */
int current_seq;
char *servername;
diff --git a/src/fc/fstrans.c b/src/fc/fstrans.c
index 9b21864..66bc978 100644
--- a/src/fc/fstrans.c
+++ b/src/fc/fstrans.c
@@ -23,6 +23,8 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#define LIBXFONT_SKIP_ERRORF
+#include "libxfontint.h"
#define FONT_t
#define TRANS_CLIENT
#include <X11/Xtrans/transport.c>
diff --git a/src/fontfile/bitsource.c b/src/fontfile/bitsource.c
index c73f41f..3a6a20f 100644
--- a/src/fontfile/bitsource.c
+++ b/src/fontfile/bitsource.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
BitmapSourcesRec FontFileBitmapSources;
diff --git a/src/fontfile/bufio.c b/src/fontfile/bufio.c
index d8d4f29..de06e1a 100644
--- a/src/fontfile/bufio.c
+++ b/src/fontfile/bufio.c
@@ -34,6 +34,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/Xos.h>
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/bufio.h>
@@ -184,7 +185,7 @@ BufFileRead (BufFilePtr f, char *b, int n)
}
int
-BufFileWrite (BufFilePtr f, char *b, int n)
+BufFileWrite (BufFilePtr f, const char *b, int n)
{
int cnt;
cnt = n;
diff --git a/src/fontfile/bunzip2.c b/src/fontfile/bunzip2.c
index 4078796..34065f8 100644
--- a/src/fontfile/bunzip2.c
+++ b/src/fontfile/bunzip2.c
@@ -29,6 +29,7 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/bufio.h>
diff --git a/src/fontfile/catalogue.c b/src/fontfile/catalogue.c
index 81a1e13..2087232 100644
--- a/src/fontfile/catalogue.c
+++ b/src/fontfile/catalogue.c
@@ -27,6 +27,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#ifdef HAVE_READLINK
#include <X11/fonts/fntfilst.h>
@@ -450,24 +451,29 @@ CatalogueListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
return ret;
}
+static const xfont2_fpe_funcs_rec catalogue_fpe_funcs = {
+ .version = XFONT2_FPE_FUNCS_VERSION,
+ .name_check = CatalogueNameCheck,
+ .init_fpe = CatalogueInitFPE,
+ .free_fpe = CatalogueFreeFPE,
+ .reset_fpe = CatalogueResetFPE,
+ .open_font = CatalogueOpenFont,
+ .close_font = CatalogueCloseFont,
+ .list_fonts = CatalogueListFonts,
+ .start_list_fonts_with_info = CatalogueStartListFontsWithInfo,
+ .list_next_font_with_info = CatalogueListNextFontWithInfo,
+ .wakeup_fpe = 0,
+ .client_died = 0,
+ .load_glyphs = 0,
+ .start_list_fonts_and_aliases = CatalogueStartListFontsAndAliases,
+ .list_next_font_or_alias = CatalogueListNextFontOrAlias,
+ .set_path_hook = FontFileEmptyBitmapSource,
+};
+
void
CatalogueRegisterLocalFpeFunctions (void)
{
- RegisterFPEFunctions(CatalogueNameCheck,
- CatalogueInitFPE,
- CatalogueFreeFPE,
- CatalogueResetFPE,
- CatalogueOpenFont,
- CatalogueCloseFont,
- CatalogueListFonts,
- CatalogueStartListFontsWithInfo,
- CatalogueListNextFontWithInfo,
- NULL,
- NULL,
- NULL,
- CatalogueStartListFontsAndAliases,
- CatalogueListNextFontOrAlias,
- FontFileEmptyBitmapSource);
+ register_fpe_funcs(&catalogue_fpe_funcs);
}
#endif /* HAVE_READLINK */
diff --git a/src/fontfile/decompress.c b/src/fontfile/decompress.c
index 20971df..42e7aa0 100644
--- a/src/fontfile/decompress.c
+++ b/src/fontfile/decompress.c
@@ -51,6 +51,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/bufio.h>
diff --git a/src/fontfile/defaults.c b/src/fontfile/defaults.c
index 1ad7d7c..62b4dd5 100644
--- a/src/fontfile/defaults.c
+++ b/src/fontfile/defaults.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/X.h>
#include <X11/Xproto.h>
diff --git a/src/fontfile/dirfile.c b/src/fontfile/dirfile.c
index 38ced75..04cfa40 100644
--- a/src/fontfile/dirfile.c
+++ b/src/fontfile/dirfile.c
@@ -37,6 +37,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <stdio.h>
#include <sys/types.h>
diff --git a/src/fontfile/fileio.c b/src/fontfile/fileio.c
index d44cecd..074ebcb 100644
--- a/src/fontfile/fileio.c
+++ b/src/fontfile/fileio.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilio.h>
#include <X11/Xos.h>
#ifndef O_BINARY
diff --git a/src/fontfile/filewr.c b/src/fontfile/filewr.c
index 859a0be..2431784 100644
--- a/src/fontfile/filewr.c
+++ b/src/fontfile/filewr.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilio.h>
#include <X11/Xos.h>
#ifndef O_BINARY
diff --git a/src/fontfile/fontdir.c b/src/fontfile/fontdir.c
index 7271603..4ce2473 100644
--- a/src/fontfile/fontdir.c
+++ b/src/fontfile/fontdir.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/keysym.h>
@@ -513,7 +514,7 @@ FontFileFindNamesInScalableDir(FontTablePtr table, FontNamePtr pat, int max,
{
name = &table->entries[i].name;
if (newmax) *newmax = max - 1;
- return AddFontNamesName(names, name->name, name->length);
+ return xfont2_add_font_names_name(names, name->name, name->length);
}
start = i;
stop = i + 1;
@@ -550,7 +551,7 @@ FontFileFindNamesInScalableDir(FontTablePtr table, FontNamePtr pat, int max,
continue;
}
- ret = AddFontNamesName(names, fname->name.name, fname->name.length);
+ ret = xfont2_add_font_names_name(names, fname->name.name, fname->name.length);
if (ret != Successful)
goto bail;
@@ -562,7 +563,7 @@ FontFileFindNamesInScalableDir(FontTablePtr table, FontNamePtr pat, int max,
{
names->length[names->nnames - 1] =
-names->length[names->nnames - 1];
- ret = AddFontNamesName(names, fname->u.alias.resolved,
+ ret = xfont2_add_font_names_name(names, fname->u.alias.resolved,
strlen(fname->u.alias.resolved));
if (ret != Successful)
goto bail;
diff --git a/src/fontfile/fontencc.c b/src/fontfile/fontencc.c
index 4bdb495..b5c684b 100644
--- a/src/fontfile/fontencc.c
+++ b/src/fontfile/fontencc.c
@@ -30,11 +30,10 @@ THE SOFTWARE.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontenc.h>
#include <X11/fonts/fontencc.h>
-extern void ErrorF(const char *f, ...);
-
char *
font_encoding_from_xlfd(const char * name, int length)
{
diff --git a/src/fontfile/fontfile.c b/src/fontfile/fontfile.c
index 05a9610..b2f1a6f 100644
--- a/src/fontfile/fontfile.c
+++ b/src/fontfile/fontfile.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <X11/keysym.h>
#ifdef WIN32
@@ -629,7 +630,7 @@ _FontFileAddScalableNames(FontNamesPtr names, FontNamesPtr scaleNames,
Otherwise we're done. */
if (scaleNames->length[i] >= 0)
{
- (void) AddFontNamesName (names, nameChars,
+ (void) xfont2_add_font_names_name (names, nameChars,
strlen (nameChars));
/* If our original pattern matches the name from
the table and that name doesn't duplicate what
@@ -641,7 +642,7 @@ _FontFileAddScalableNames(FontNamesPtr names, FontNamesPtr scaleNames,
*max)
{
--*max;
- (void) AddFontNamesName (names, scaleNames->names[i],
+ (void) xfont2_add_font_names_name (names, scaleNames->names[i],
scaleNames->length[i]);
}
}
@@ -655,11 +656,11 @@ _FontFileAddScalableNames(FontNamesPtr names, FontNamesPtr scaleNames,
scaleNames->names[++i],
&aliasName, vals))
{
- (void) AddFontNamesName (names, nameChars,
+ (void) xfont2_add_font_names_name (names, nameChars,
strlen (nameChars));
names->length[names->nnames - 1] =
-names->length[names->nnames - 1];
- (void) AddFontNamesName (names, aliasName,
+ (void) xfont2_add_font_names_name (names, aliasName,
strlen (aliasName));
/* If our original pattern matches the name from
the table and that name doesn't duplicate what
@@ -671,12 +672,12 @@ _FontFileAddScalableNames(FontNamesPtr names, FontNamesPtr scaleNames,
*max)
{
--*max;
- (void) AddFontNamesName (names,
+ (void) xfont2_add_font_names_name (names,
scaleNames->names[i - 1],
-scaleNames->length[i - 1]);
names->length[names->nnames - 1] =
-names->length[names->nnames - 1];
- (void) AddFontNamesName (names, aliasName,
+ (void) xfont2_add_font_names_name (names, aliasName,
strlen (aliasName));
}
}
@@ -733,7 +734,7 @@ _FontFileListFonts (pointer client, FontPathElementPtr fpe,
them to the output */
/* Scalable names... */
- scaleNames = MakeFontNamesRecord (0);
+ scaleNames = xfont2_make_font_names_record (0);
if (!scaleNames)
{
if (ranges) free(ranges);
@@ -747,10 +748,10 @@ _FontFileListFonts (pointer client, FontPathElementPtr fpe,
_FontFileAddScalableNames(names, scaleNames, &lowerName,
zeroChars, &vals, ranges, nranges,
&max);
- FreeFontNames (scaleNames);
+ xfont2_free_font_names (scaleNames);
/* Scalable aliases... */
- scaleNames = MakeFontNamesRecord (0);
+ scaleNames = xfont2_make_font_names_record (0);
if (!scaleNames)
{
if (ranges) free(ranges);
@@ -764,7 +765,7 @@ _FontFileListFonts (pointer client, FontPathElementPtr fpe,
_FontFileAddScalableNames(names, scaleNames, &lowerName,
zeroChars, &vals, ranges, nranges,
&max);
- FreeFontNames (scaleNames);
+ xfont2_free_font_names (scaleNames);
if (ranges) free(ranges);
}
@@ -811,7 +812,7 @@ FontFileStartListFonts(pointer client, FontPathElementPtr fpe,
data = malloc (sizeof *data);
if (!data)
return AllocError;
- data->names = MakeFontNamesRecord (0);
+ data->names = xfont2_make_font_names_record (0);
if (!data->names)
{
free (data);
@@ -821,7 +822,7 @@ FontFileStartListFonts(pointer client, FontPathElementPtr fpe,
max, data->names, mark_aliases);
if (ret != Successful)
{
- FreeFontNames (data->names);
+ xfont2_free_font_names (data->names);
free (data);
return ret;
}
@@ -1049,7 +1050,7 @@ FontFileListNextFontWithInfo(pointer client, FontPathElementPtr fpe,
if (data->current == data->names->nnames)
{
- FreeFontNames (data->names);
+ xfont2_free_font_names (data->names);
free (data);
return BadFontName;
}
@@ -1085,7 +1086,7 @@ FontFileListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
if (data->current == data->names->nnames)
{
- FreeFontNames (data->names);
+ xfont2_free_font_names (data->names);
free (data);
return BadFontName;
}
@@ -1115,22 +1116,27 @@ FontFileListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
return ret;
}
+static const xfont2_fpe_funcs_rec fontfile_fpe_funcs = {
+ .version = XFONT2_FPE_FUNCS_VERSION,
+ .name_check = FontFileNameCheck,
+ .init_fpe = FontFileInitFPE,
+ .free_fpe = FontFileFreeFPE,
+ .reset_fpe = FontFileResetFPE,
+ .open_font = FontFileOpenFont,
+ .close_font = FontFileCloseFont,
+ .list_fonts = FontFileListFonts,
+ .start_list_fonts_with_info = FontFileStartListFontsWithInfo,
+ .list_next_font_with_info = FontFileListNextFontWithInfo,
+ .wakeup_fpe = 0,
+ .client_died = 0,
+ .load_glyphs = 0,
+ .start_list_fonts_and_aliases = FontFileStartListFontsAndAliases,
+ .list_next_font_or_alias = FontFileListNextFontOrAlias,
+ .set_path_hook = FontFileEmptyBitmapSource,
+};
+
void
FontFileRegisterLocalFpeFunctions (void)
{
- RegisterFPEFunctions(FontFileNameCheck,
- FontFileInitFPE,
- FontFileFreeFPE,
- FontFileResetFPE,
- FontFileOpenFont,
- FontFileCloseFont,
- FontFileListFonts,
- FontFileStartListFontsWithInfo,
- FontFileListNextFontWithInfo,
- NULL,
- NULL,
- NULL,
- FontFileStartListFontsAndAliases,
- FontFileListNextFontOrAlias,
- FontFileEmptyBitmapSource);
+ register_fpe_funcs(&fontfile_fpe_funcs);
}
diff --git a/src/fontfile/fontscale.c b/src/fontfile/fontscale.c
index a21802f..bbc8e10 100644
--- a/src/fontfile/fontscale.c
+++ b/src/fontfile/fontscale.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
#include <math.h>
diff --git a/src/fontfile/gunzip.c b/src/fontfile/gunzip.c
index 84a4eaf..36f020a 100644
--- a/src/fontfile/gunzip.c
+++ b/src/fontfile/gunzip.c
@@ -5,6 +5,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/bufio.h>
#include <zlib.h>
diff --git a/src/fontfile/register.c b/src/fontfile/register.c
index 4faeb8f..c3c8972 100644
--- a/src/fontfile/register.c
+++ b/src/fontfile/register.c
@@ -29,6 +29,7 @@ in this Software without prior written authorization from The Open Group.
#else
#define XFONT_BITMAP 1
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fntfilst.h>
diff --git a/src/fontfile/renderers.c b/src/fontfile/renderers.c
index bbcd466..d0c4064 100644
--- a/src/fontfile/renderers.c
+++ b/src/fontfile/renderers.c
@@ -31,8 +31,8 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fntfilst.h>
-extern void ErrorF(const char *f, ...);
static FontRenderersRec renderers;
@@ -40,7 +40,6 @@ static FontRenderersRec renderers;
* XXX Maybe should allow unregistering renders. For now, just clear the
* list at each new generation.
*/
-extern unsigned long __GetServerGeneration(void);
static unsigned long rendererGeneration = 0;
Bool
diff --git a/src/stubs/Makefile.am b/src/stubs/Makefile.am
index 7eb16d4..65950cc 100644
--- a/src/stubs/Makefile.am
+++ b/src/stubs/Makefile.am
@@ -6,20 +6,5 @@ AM_CFLAGS = $(XFONT_CFLAGS) $(OS_CFLAGS) $(CWARNFLAGS)
noinst_LTLIBRARIES = libstubs.la
libstubs_la_SOURCES = \
- cauthgen.c \
- csignal.c \
- delfntcid.c \
- errorf.c \
- findoldfnt.c \
- getcres.c \
- getdefptsize.c \
- getnewfntcid.c \
- gettime.c \
- initfshdl.c \
- regfpefunc.c \
- rmfshdl.c \
- servclient.c \
- setfntauth.c \
- stfntcfnt.c \
- stubsinit.c \
- stubs.h
+ atom.c \
+ libxfontstubs.c
diff --git a/src/stubs/atom.c b/src/stubs/atom.c
new file mode 100644
index 0000000..82c8ca3
--- /dev/null
+++ b/src/stubs/atom.c
@@ -0,0 +1,224 @@
+/*
+
+ Copyright 1990, 1994, 1998 The Open Group
+
+ 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.
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of The Open Group shall not be
+ used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization from The Open Group.
+
+*/
+
+/*
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+/* lame atom replacement routines for font applications */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "libxfontint.h"
+#include <X11/fonts/fontmisc.h>
+
+typedef struct _AtomList {
+ char *name;
+ int len;
+ int hash;
+ Atom atom;
+} AtomListRec, *AtomListPtr;
+
+static AtomListPtr *hashTable;
+
+static int hashSize, hashUsed;
+static int hashMask;
+static int rehash;
+
+static AtomListPtr *reverseMap;
+static int reverseMapSize;
+static Atom lastAtom;
+
+static int
+Hash(const char *string, int len)
+{
+ int h;
+
+ h = 0;
+ while (len--)
+ h = (h << 3) ^ *string++;
+ if (h < 0)
+ return -h;
+ return h;
+}
+
+static int
+ResizeHashTable(void)
+{
+ int newHashSize;
+ int newHashMask;
+ AtomListPtr *newHashTable;
+ int i;
+ int h;
+ int newRehash;
+ int r;
+
+ if (hashSize == 0)
+ newHashSize = 1024;
+ else
+ newHashSize = hashSize * 2;
+ newHashTable = calloc(newHashSize, sizeof(AtomListPtr));
+ if (!newHashTable) {
+ fprintf(stderr, "ResizeHashTable(): Error: Couldn't allocate"
+ " newHashTable (%ld)\n",
+ newHashSize * (unsigned long) sizeof(AtomListPtr));
+ return FALSE;
+ }
+ newHashMask = newHashSize - 1;
+ newRehash = (newHashMask - 2);
+ for (i = 0; i < hashSize; i++) {
+ if (hashTable[i]) {
+ h = (hashTable[i]->hash) & newHashMask;
+ if (newHashTable[h]) {
+ r = hashTable[i]->hash % newRehash | 1;
+ do {
+ h += r;
+ if (h >= newHashSize)
+ h -= newHashSize;
+ } while (newHashTable[h]);
+ }
+ newHashTable[h] = hashTable[i];
+ }
+ }
+ free(hashTable);
+ hashTable = newHashTable;
+ hashSize = newHashSize;
+ hashMask = newHashMask;
+ rehash = newRehash;
+ return TRUE;
+}
+
+static int
+ResizeReverseMap(void)
+{
+ AtomListPtr *newMap;
+ int newMapSize;
+
+ if (reverseMapSize == 0)
+ newMapSize = 1000;
+ else
+ newMapSize = reverseMapSize * 2;
+ newMap = realloc(reverseMap, newMapSize * sizeof(AtomListPtr));
+ if (newMap == NULL) {
+ fprintf(stderr, "ResizeReverseMap(): Error: Couldn't reallocate"
+ " reverseMap (%ld)\n",
+ newMapSize * (unsigned long) sizeof(AtomListPtr));
+ return FALSE;
+ }
+ reverseMap = newMap;
+ reverseMapSize = newMapSize;
+ return TRUE;
+}
+
+static int
+NameEqual(const char *a, const char *b, int l)
+{
+ while (l--)
+ if (*a++ != *b++)
+ return FALSE;
+ return TRUE;
+}
+
+Atom
+__libxfont_internal__MakeAtom(const char *string, unsigned len, int makeit)
+{
+ AtomListPtr a;
+ int hash;
+ int h = 0;
+ int r;
+
+ hash = Hash(string, len);
+ if (hashTable) {
+ h = hash & hashMask;
+ if (hashTable[h]) {
+ if (hashTable[h]->hash == hash && hashTable[h]->len == len &&
+ NameEqual(hashTable[h]->name, string, len)) {
+ return hashTable[h]->atom;
+ }
+ r = (hash % rehash) | 1;
+ for (;;) {
+ h += r;
+ if (h >= hashSize)
+ h -= hashSize;
+ if (!hashTable[h])
+ break;
+ if (hashTable[h]->hash == hash && hashTable[h]->len == len &&
+ NameEqual(hashTable[h]->name, string, len)) {
+ return hashTable[h]->atom;
+ }
+ }
+ }
+ }
+ if (!makeit)
+ return None;
+ a = malloc(sizeof(AtomListRec) + len + 1);
+ if (a == NULL) {
+ fprintf(stderr, "MakeAtom(): Error: Couldn't allocate AtomListRec"
+ " (%ld)\n", (unsigned long) sizeof(AtomListRec) + len + 1);
+ return None;
+ }
+ a->name = (char *) (a + 1);
+ a->len = len;
+ strncpy(a->name, string, len);
+ a->name[len] = '\0';
+ a->atom = ++lastAtom;
+ a->hash = hash;
+ if (hashUsed >= hashSize / 2) {
+ ResizeHashTable();
+ h = hash & hashMask;
+ if (hashTable[h]) {
+ r = (hash % rehash) | 1;
+ do {
+ h += r;
+ if (h >= hashSize)
+ h -= hashSize;
+ } while (hashTable[h]);
+ }
+ }
+ hashTable[h] = a;
+ hashUsed++;
+ if (reverseMapSize <= a->atom) {
+ if (!ResizeReverseMap())
+ return None;
+ }
+ reverseMap[a->atom] = a;
+ return a->atom;
+}
+
+int
+__libxfont_internal__ValidAtom(Atom atom)
+{
+ return (atom != None) && (atom <= lastAtom);
+}
+
+const char *
+__libxfont_internal__NameForAtom(Atom atom)
+{
+ if (atom != None && atom <= lastAtom)
+ return reverseMap[atom]->name;
+ return NULL;
+}
diff --git a/src/stubs/cauthgen.c b/src/stubs/cauthgen.c
deleted file mode 100644
index 10086e4..0000000
--- a/src/stubs/cauthgen.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak client_auth_generation
-#endif
-
-weak int
-client_auth_generation(ClientPtr client)
-{
- OVERRIDE_SYMBOL(client_auth_generation, client);
- return 0;
-}
diff --git a/src/stubs/csignal.c b/src/stubs/csignal.c
deleted file mode 100644
index dd88b3d..0000000
--- a/src/stubs/csignal.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak ClientSignal
-#endif
-
-weak Bool
-ClientSignal(ClientPtr client)
-{
- OVERRIDE_SYMBOL(ClientSignal,client);
- return True;
-}
diff --git a/src/stubs/delfntcid.c b/src/stubs/delfntcid.c
deleted file mode 100644
index 8113b9f..0000000
--- a/src/stubs/delfntcid.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak DeleteFontClientID
-#endif
-
-weak void
-DeleteFontClientID(Font id)
-{
- OVERRIDE_SYMBOL(DeleteFontClientID, id);
-}
diff --git a/src/stubs/errorf.c b/src/stubs/errorf.c
deleted file mode 100644
index d2de6c6..0000000
--- a/src/stubs/errorf.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak ErrorF
-#endif
-
-weak void
-ErrorF(const char *f, ...)
-{
- OVERRIDE_VA_SYMBOL(VErrorF, f);
-}
diff --git a/src/stubs/findoldfnt.c b/src/stubs/findoldfnt.c
deleted file mode 100644
index c73279e..0000000
--- a/src/stubs/findoldfnt.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak find_old_font
-#endif
-
-weak FontPtr
-find_old_font(FSID id)
-{
- OVERRIDE_SYMBOL(find_old_font, id);
- return (FontPtr)NULL;
-}
diff --git a/src/stubs/getcres.c b/src/stubs/getcres.c
deleted file mode 100644
index 27a9180..0000000
--- a/src/stubs/getcres.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak GetClientResolutions
-#endif
-
-weak FontResolutionPtr
-GetClientResolutions(int *num)
-{
- OVERRIDE_SYMBOL(GetClientResolutions, num);
- return (FontResolutionPtr) 0;
-}
diff --git a/src/stubs/getdefptsize.c b/src/stubs/getdefptsize.c
deleted file mode 100644
index 50c1b18..0000000
--- a/src/stubs/getdefptsize.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak GetDefaultPointSize
-#endif
-
-weak int
-GetDefaultPointSize(void)
-{
- OVERRIDE_SYMBOL(GetDefaultPointSize);
- return 0;
-}
diff --git a/src/stubs/getnewfntcid.c b/src/stubs/getnewfntcid.c
deleted file mode 100644
index d31ccf1..0000000
--- a/src/stubs/getnewfntcid.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak GetNewFontClientID
-#endif
-
-weak Font
-GetNewFontClientID(void)
-{
- OVERRIDE_SYMBOL(GetNewFontClientID);
- return (Font)0;
-}
diff --git a/src/stubs/gettime.c b/src/stubs/gettime.c
deleted file mode 100644
index 1b20f62..0000000
--- a/src/stubs/gettime.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak GetTimeInMillis
-#endif
-
-weak unsigned long
-GetTimeInMillis (void)
-{
- OVERRIDE_SYMBOL(GetTimeInMillis);
- return 0;
-}
diff --git a/src/stubs/initfshdl.c b/src/stubs/initfshdl.c
deleted file mode 100644
index e1c0b24..0000000
--- a/src/stubs/initfshdl.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak init_fs_handlers
-#endif
-
-weak int
-init_fs_handlers(FontPathElementPtr fpe,
- BlockHandlerProcPtr block_handler)
-{
- OVERRIDE_SYMBOL(init_fs_handlers, fpe, block_handler);
- return Successful;
-}
diff --git a/src/stubs/libxfontstubs.c b/src/stubs/libxfontstubs.c
new file mode 100644
index 0000000..b083dd4
--- /dev/null
+++ b/src/stubs/libxfontstubs.c
@@ -0,0 +1,198 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "libxfontint.h"
+
+static xfont2_client_funcs_rec const *_f;
+
+int
+client_auth_generation(ClientPtr client)
+{
+ if (_f)
+ return _f->client_auth_generation(client);
+ return 0;
+}
+
+Bool
+ClientSignal(ClientPtr client)
+{
+ if (_f)
+ return _f->client_signal(client);
+ return TRUE;
+}
+
+void
+DeleteFontClientID(Font id)
+{
+ if (_f)
+ _f->delete_font_client_id(id);
+}
+
+void
+ErrorF(const char *f, ...)
+{
+ if (_f) {
+ va_list ap;
+ va_start(ap, f);
+ _f->verrorf(f, ap);
+ va_end(ap);
+ }
+}
+
+FontPtr
+find_old_font(FSID id)
+{
+ if (_f)
+ return _f->find_old_font(id);
+ return (FontPtr)NULL;
+}
+
+FontResolutionPtr
+GetClientResolutions(int *num)
+{
+ if (_f)
+ return _f->get_client_resolutions(num);
+ return (FontResolutionPtr) 0;
+}
+
+int
+GetDefaultPointSize(void)
+{
+ if (_f)
+ return _f->get_default_point_size();
+ return 12;
+}
+
+Font
+GetNewFontClientID(void)
+{
+ if (_f)
+ return _f->get_new_font_client_id();
+ return (Font)0;
+}
+
+unsigned long
+GetTimeInMillis (void)
+{
+ if (_f)
+ return _f->get_time_in_millis();
+ return 0;
+}
+
+int
+init_fs_handlers2(FontPathElementPtr fpe,
+ FontBlockHandlerProcPtr block_handler)
+{
+ if (_f)
+ return _f->init_fs_handlers(fpe, block_handler);
+ return Successful;
+}
+
+int
+register_fpe_funcs(const xfont2_fpe_funcs_rec *funcs)
+{
+ if (_f)
+ return _f->register_fpe_funcs(funcs);
+ return 0;
+}
+
+void
+remove_fs_handlers2(FontPathElementPtr fpe,
+ FontBlockHandlerProcPtr blockHandler,
+ Bool all)
+{
+ if (_f)
+ _f->remove_fs_handlers(fpe, blockHandler, all);
+}
+
+void *
+__GetServerClient(void)
+{
+ if (_f)
+ return _f->get_server_client();
+ return NULL;
+}
+
+int
+set_font_authorizations(char **authorizations, int *authlen, ClientPtr client)
+{
+ if (_f)
+ return _f->set_font_authorizations(authorizations, authlen, client);
+ return 0;
+}
+
+int
+StoreFontClientFont(FontPtr pfont, Font id)
+{
+ if (_f)
+ return _f->store_font_client_font(pfont, id);
+ return 0;
+}
+
+Atom
+MakeAtom(const char *string, unsigned len, int makeit)
+{
+ if (_f && _f->make_atom)
+ return _f->make_atom(string, len, makeit);
+ return __libxfont_internal__MakeAtom(string, len, makeit);
+}
+
+int
+ValidAtom(Atom atom)
+{
+ if (_f && _f->valid_atom)
+ return _f->valid_atom(atom);
+ return __libxfont_internal__ValidAtom(atom);
+}
+
+const char *
+NameForAtom(Atom atom)
+{
+ if (_f && _f->name_for_atom)
+ return _f->name_for_atom(atom);
+ return __libxfont_internal__NameForAtom(atom);
+}
+
+unsigned long
+__GetServerGeneration (void)
+{
+ if (_f)
+ return _f->get_server_generation();
+ return 1;
+}
+
+
+int
+add_fs_fd(int fd, FontFdHandlerProcPtr handler, void *data)
+{
+ if (_f)
+ return _f->add_fs_fd(fd, handler, data);
+ return 0;
+}
+
+void
+remove_fs_fd(int fd)
+{
+ if (_f)
+ _f->remove_fs_fd(fd);
+}
+
+void
+adjust_fs_wait_for_delay(void *wt, unsigned long newdelay)
+{
+ if (_f)
+ _f->adjust_fs_wait_for_delay(wt, newdelay);
+}
+
+int
+xfont2_init(xfont2_client_funcs_rec const *client_funcs)
+{
+ _f = client_funcs;
+
+ ResetFontPrivateIndex();
+
+ register_fpe_functions();
+
+ return Successful;
+}
diff --git a/src/stubs/regfpefunc.c b/src/stubs/regfpefunc.c
deleted file mode 100644
index ae12a01..0000000
--- a/src/stubs/regfpefunc.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak RegisterFPEFunctions
-#endif
-
-weak int
-RegisterFPEFunctions(NameCheckFunc name_func,
- InitFpeFunc init_func,
- FreeFpeFunc free_func,
- ResetFpeFunc reset_func,
- OpenFontFunc open_func,
- CloseFontFunc close_func,
- ListFontsFunc list_func,
- StartLfwiFunc start_lfwi_func,
- NextLfwiFunc next_lfwi_func,
- WakeupFpeFunc wakeup_func,
- ClientDiedFunc client_died,
- LoadGlyphsFunc load_glyphs,
- StartLaFunc start_list_alias_func,
- NextLaFunc next_list_alias_func,
- SetPathFunc set_path_func)
-{
- OVERRIDE_SYMBOL(RegisterFPEFunctions, name_func, init_func, free_func,
- reset_func, open_func, close_func, list_func, start_lfwi_func,
- next_lfwi_func, wakeup_func, client_died, load_glyphs,
- start_list_alias_func, next_list_alias_func, set_path_func);
- return 0;
-}
diff --git a/src/stubs/rmfshdl.c b/src/stubs/rmfshdl.c
deleted file mode 100644
index 22a3091..0000000
--- a/src/stubs/rmfshdl.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak remove_fs_handlers
-#endif
-
-weak void
-remove_fs_handlers(FontPathElementPtr fpe,
- BlockHandlerProcPtr blockHandler,
- Bool all)
-{
- OVERRIDE_SYMBOL(remove_fs_handlers, fpe, blockHandler, all);
-}
diff --git a/src/stubs/servclient.c b/src/stubs/servclient.c
deleted file mode 100644
index f85e08e..0000000
--- a/src/stubs/servclient.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak serverClient
-#endif
-
-weak void *serverClient = 0;
-
-void *__GetServerClient(void);
-
-void *
-__GetServerClient(void)
-{
- OVERRIDE_DATA(serverClient);
- return serverClient;
-}
diff --git a/src/stubs/setfntauth.c b/src/stubs/setfntauth.c
deleted file mode 100644
index 371807e..0000000
--- a/src/stubs/setfntauth.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak set_font_authorizations
-#endif
-
-weak int
-set_font_authorizations(char **authorizations, int *authlen, ClientPtr client)
-{
- OVERRIDE_SYMBOL(set_font_authorizations, authorizations, authlen, client);
- return 0;
-}
diff --git a/src/stubs/stfntcfnt.c b/src/stubs/stfntcfnt.c
deleted file mode 100644
index d490988..0000000
--- a/src/stubs/stfntcfnt.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak StoreFontClientFont
-#endif
-
-weak int
-StoreFontClientFont(FontPtr pfont, Font id)
-{
- OVERRIDE_SYMBOL(StoreFontClientFont, pfont, id);
- return 0;
-}
diff --git a/src/stubs/stubs.h b/src/stubs/stubs.h
deleted file mode 100644
index 9e71806..0000000
--- a/src/stubs/stubs.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#include <stdio.h>
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/font.h>
-
-#ifndef True
-#define True (-1)
-#endif
-#ifndef False
-#define False (0)
-#endif
-
-/* this probably works for Mach-O too, but probably not for PE */
-#if defined(__ELF__) && defined(__GNUC__) && (__GNUC__ >= 3)
-#define weak __attribute__((weak))
-#else
-#define weak
-#ifndef __SUNPRO_C /* Sun compilers use #pragma weak in .c files instead */
-#define NO_WEAK_SYMBOLS
-#endif
-#endif
-
-#if defined(NO_WEAK_SYMBOLS) && defined(PIC)
-#include <stdarg.h>
-extern int _font_init_stubs(void);
-#define OVERRIDE_DATA(sym) \
- _font_init_stubs(); \
- if (__ptr_##sym && __ptr_##sym != &sym) \
- sym = *__ptr_##sym
-#define OVERRIDE_SYMBOL(sym,...) \
- _font_init_stubs(); \
- if (__##sym && __##sym != sym) \
- return (*__##sym)(__VA_ARGS__)
-#define OVERRIDE_VA_SYMBOL(sym,f) \
- va_list _args; \
- _font_init_stubs(); \
- va_start(_args, f); \
- if (__##sym) \
- (*__##sym)(f, _args); \
- va_end(_args)
-
-extern int (*__client_auth_generation)(ClientPtr);
-extern Bool (*__ClientSignal)(ClientPtr);
-extern void (*__DeleteFontClientID)(Font);
-extern void (*__VErrorF)(const char *, va_list);
-extern FontPtr (*__find_old_font)(FSID);
-extern FontResolutionPtr (*__GetClientResolutions)(int *);
-extern int (*__GetDefaultPointSize)(void);
-extern Font (*__GetNewFontClientID)(void);
-extern unsigned long (*__GetTimeInMillis)(void);
-extern int (*__init_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr);
-extern int (*__RegisterFPEFunctions)(NameCheckFunc, InitFpeFunc, FreeFpeFunc,
- ResetFpeFunc, OpenFontFunc, CloseFontFunc, ListFontsFunc,
- StartLfwiFunc, NextLfwiFunc, WakeupFpeFunc, ClientDiedFunc,
- LoadGlyphsFunc, StartLaFunc, NextLaFunc, SetPathFunc);
-extern void (*__remove_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr, Bool);
-extern void **__ptr_serverClient;
-extern int (*__set_font_authorizations)(char **, int *, ClientPtr);
-extern int (*__StoreFontClientFont)(FontPtr, Font);
-extern Atom (*__MakeAtom)(const char *, unsigned, int);
-extern int (*__ValidAtom)(Atom);
-extern char *(*__NameForAtom)(Atom);
-extern unsigned long *__ptr_serverGeneration;
-extern void (*__register_fpe_functions)(void);
-#else /* NO_WEAK_SYMBOLS && PIC */
-#define OVERRIDE_DATA(sym)
-#define OVERRIDE_SYMBOL(sym,...)
-#define OVERRIDE_VA_SYMBOL(sym,f)
-#endif
-
-extern FontPtr find_old_font ( FSID id );
-extern int set_font_authorizations ( char **authorizations,
- int *authlen,
- ClientPtr client );
-
-extern unsigned long GetTimeInMillis (void);
-
-extern void ErrorF(const char *format, ...);
-
-/* end of file */
diff --git a/src/stubs/stubsinit.c b/src/stubs/stubsinit.c
deleted file mode 100644
index fc52332..0000000
--- a/src/stubs/stubsinit.c
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "stubs.h"
-
-#if defined(NO_WEAK_SYMBOLS) && defined(PIC)
-
-#ifdef WIN32
-#include <X11/Xwindows.h>
-#define DLOPEN_SELF() GetModuleHandle(NULL)
-#define DLSYM(h,f) GetProcAddress(h,f)
-#else
-#include <dlfcn.h>
-#define DLOPEN_SELF() dlopen(NULL, RTLD_LOCAL)
-#define DLSYM(h,f) dlsym(h, f)
-#endif
-
-int (*__client_auth_generation)(ClientPtr) = NULL;
-Bool (*__ClientSignal)(ClientPtr) = NULL;
-void (*__DeleteFontClientID)(Font) = NULL;
-void (*__VErrorF)(const char *, va_list) = NULL;
-FontPtr (*__find_old_font)(FSID) = NULL;
-FontResolutionPtr (*__GetClientResolutions)(int *) = NULL;
-int (*__GetDefaultPointSize)(void) = NULL;
-Font (*__GetNewFontClientID)(void) = NULL;
-unsigned long (*__GetTimeInMillis)(void) = NULL;
-int (*__init_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr) = NULL;
-int (*__RegisterFPEFunctions)(NameCheckFunc, InitFpeFunc, FreeFpeFunc,
- ResetFpeFunc, OpenFontFunc, CloseFontFunc, ListFontsFunc,
- StartLfwiFunc, NextLfwiFunc, WakeupFpeFunc, ClientDiedFunc,
- LoadGlyphsFunc, StartLaFunc, NextLaFunc, SetPathFunc) = NULL;
-void (*__remove_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr, Bool) = NULL;
-void **__ptr_serverClient = NULL;
-int (*__set_font_authorizations)(char **, int *, ClientPtr) = NULL;
-int (*__StoreFontClientFont)(FontPtr, Font) = NULL;
-Atom (*__MakeAtom)(const char *, unsigned, int) = NULL;
-int (*__ValidAtom)(Atom) = NULL;
-char *(*__NameForAtom)(Atom) = NULL;
-unsigned long *__ptr_serverGeneration = NULL;
-void (*__register_fpe_functions)(void) = NULL;
-
-#define INIT_SYMBOL(sym) \
- if (!__##sym) \
- __##sym = (typeof(__##sym)) DLSYM(handle, #sym)
-#define INIT_DATA(sym) \
- if (!__ptr_##sym) \
- __ptr_##sym = (typeof(__ptr_##sym)) DLSYM(handle, #sym)
-
-int
-_font_init_stubs (void)
-{
- static int inited = FALSE;
- static void *handle = NULL;
-
- if (inited)
- return inited;
- if (!handle)
- handle = DLOPEN_SELF();
-
- INIT_SYMBOL(client_auth_generation);
- INIT_SYMBOL(ClientSignal);
- INIT_SYMBOL(DeleteFontClientID);
- INIT_SYMBOL(VErrorF);
- INIT_SYMBOL(find_old_font);
- INIT_SYMBOL(GetClientResolutions);
- INIT_SYMBOL(GetDefaultPointSize);
- INIT_SYMBOL(GetNewFontClientID);
- INIT_SYMBOL(GetTimeInMillis);
- INIT_SYMBOL(init_fs_handlers);
- INIT_SYMBOL(RegisterFPEFunctions);
- INIT_SYMBOL(remove_fs_handlers);
- INIT_SYMBOL(set_font_authorizations);
- INIT_SYMBOL(StoreFontClientFont);
- INIT_SYMBOL(MakeAtom);
- INIT_SYMBOL(ValidAtom);
- INIT_SYMBOL(NameForAtom);
- INIT_SYMBOL(register_fpe_functions);
- INIT_DATA(serverClient);
- INIT_DATA(serverGeneration);
-
- inited = TRUE;
- return inited;
-}
-
-#endif /* NO_WEAK_SYMBOLS && PIC */
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index 32a8f37..d802b59 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -7,7 +7,6 @@ AM_CFLAGS = $(XFONT_CFLAGS) $(OS_CFLAGS) $(CWARNFLAGS)
noinst_LTLIBRARIES = libutil.la
libutil_la_SOURCES = \
- atom.c \
fontaccel.c \
fontnames.c \
fontutil.c \
diff --git a/src/util/atom.c b/src/util/atom.c
deleted file mode 100644
index 5f7f1c6..0000000
--- a/src/util/atom.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
-
-Copyright 1990, 1994, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/*
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* lame atom replacement routines for font applications */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/fonts/fontmisc.h>
-#include "stubs.h"
-
-typedef struct _AtomList {
- char *name;
- int len;
- int hash;
- Atom atom;
-} AtomListRec, *AtomListPtr;
-
-static AtomListPtr *hashTable;
-
-static int hashSize, hashUsed;
-static int hashMask;
-static int rehash;
-
-static AtomListPtr *reverseMap;
-static int reverseMapSize;
-static Atom lastAtom;
-
-static int
-Hash(const char *string, int len)
-{
- int h;
-
- h = 0;
- while (len--)
- h = (h << 3) ^ *string++;
- if (h < 0)
- return -h;
- return h;
-}
-
-static int
-ResizeHashTable (void)
-{
- int newHashSize;
- int newHashMask;
- AtomListPtr *newHashTable;
- int i;
- int h;
- int newRehash;
- int r;
-
- if (hashSize == 0)
- newHashSize = 1024;
- else
- newHashSize = hashSize * 2;
- newHashTable = calloc (newHashSize, sizeof (AtomListPtr));
- if (!newHashTable) {
- fprintf(stderr, "ResizeHashTable(): Error: Couldn't allocate"
- " newHashTable (%ld)\n",
- newHashSize * (unsigned long)sizeof (AtomListPtr));
- return FALSE;
- }
- newHashMask = newHashSize - 1;
- newRehash = (newHashMask - 2);
- for (i = 0; i < hashSize; i++)
- {
- if (hashTable[i])
- {
- h = (hashTable[i]->hash) & newHashMask;
- if (newHashTable[h])
- {
- r = hashTable[i]->hash % newRehash | 1;
- do {
- h += r;
- if (h >= newHashSize)
- h -= newHashSize;
- } while (newHashTable[h]);
- }
- newHashTable[h] = hashTable[i];
- }
- }
- free (hashTable);
- hashTable = newHashTable;
- hashSize = newHashSize;
- hashMask = newHashMask;
- rehash = newRehash;
- return TRUE;
-}
-
-static int
-ResizeReverseMap (void)
-{
- AtomListPtr *newMap;
- int newMapSize;
-
- if (reverseMapSize == 0)
- newMapSize = 1000;
- else
- newMapSize = reverseMapSize * 2;
- newMap = realloc (reverseMap, newMapSize * sizeof (AtomListPtr));
- if (newMap == NULL) {
- fprintf(stderr, "ResizeReverseMap(): Error: Couldn't reallocate"
- " reverseMap (%ld)\n",
- newMapSize * (unsigned long)sizeof(AtomListPtr));
- return FALSE;
- }
- reverseMap = newMap;
- reverseMapSize = newMapSize;
- return TRUE;
-}
-
-static int
-NameEqual (const char *a, const char *b, int l)
-{
- while (l--)
- if (*a++ != *b++)
- return FALSE;
- return TRUE;
-}
-
-#ifdef __SUNPRO_C
-#pragma weak MakeAtom
-#endif
-
-weak Atom
-MakeAtom(const char *string, unsigned len, int makeit)
-{
- AtomListPtr a;
- int hash;
- int h = 0;
- int r;
-
- OVERRIDE_SYMBOL(MakeAtom, string, len, makeit);
-
- hash = Hash (string, len);
- if (hashTable)
- {
- h = hash & hashMask;
- if (hashTable[h])
- {
- if (hashTable[h]->hash == hash && hashTable[h]->len == len &&
- NameEqual (hashTable[h]->name, string, len))
- {
- return hashTable[h]->atom;
- }
- r = (hash % rehash) | 1;
- for (;;)
- {
- h += r;
- if (h >= hashSize)
- h -= hashSize;
- if (!hashTable[h])
- break;
- if (hashTable[h]->hash == hash && hashTable[h]->len == len &&
- NameEqual (hashTable[h]->name, string, len))
- {
- return hashTable[h]->atom;
- }
- }
- }
- }
- if (!makeit)
- return None;
- a = malloc (sizeof (AtomListRec) + len + 1);
- if (a == NULL) {
- fprintf(stderr, "MakeAtom(): Error: Couldn't allocate AtomListRec"
- " (%ld)\n", (unsigned long)sizeof (AtomListRec) + len + 1);
- return None;
- }
- a->name = (char *) (a + 1);
- a->len = len;
- strncpy (a->name, string, len);
- a->name[len] = '\0';
- a->atom = ++lastAtom;
- a->hash = hash;
- if (hashUsed >= hashSize / 2)
- {
- ResizeHashTable ();
- h = hash & hashMask;
- if (hashTable[h])
- {
- r = (hash % rehash) | 1;
- do {
- h += r;
- if (h >= hashSize)
- h -= hashSize;
- } while (hashTable[h]);
- }
- }
- hashTable[h] = a;
- hashUsed++;
- if (reverseMapSize <= a->atom) {
- if (!ResizeReverseMap())
- return None;
- }
- reverseMap[a->atom] = a;
- return a->atom;
-}
-
-#ifdef __SUNPRO_C
-#pragma weak ValidAtom
-#endif
-
-weak int
-ValidAtom(Atom atom)
-{
- OVERRIDE_SYMBOL(ValidAtom, atom);
- return (atom != None) && (atom <= lastAtom);
-}
-
-#ifdef __SUNPRO_C
-#pragma weak NameForAtom
-#endif
-
-weak char *
-NameForAtom(Atom atom)
-{
- OVERRIDE_SYMBOL(NameForAtom, atom);
- if (atom != None && atom <= lastAtom)
- return reverseMap[atom]->name;
- return NULL;
-}
diff --git a/src/util/fontaccel.c b/src/util/fontaccel.c
index db03e73..c8395c4 100644
--- a/src/util/fontaccel.c
+++ b/src/util/fontaccel.c
@@ -33,6 +33,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fontstruct.h>
#include <X11/fonts/fontutil.h>
diff --git a/src/util/fontnames.c b/src/util/fontnames.c
index ceafce5..b292480 100644
--- a/src/util/fontnames.c
+++ b/src/util/fontnames.c
@@ -34,11 +34,12 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fontstruct.h>
void
-FreeFontNames(FontNamesPtr pFN)
+xfont2_free_font_names(FontNamesPtr pFN)
{
int i;
@@ -53,7 +54,7 @@ FreeFontNames(FontNamesPtr pFN)
}
FontNamesPtr
-MakeFontNamesRecord(unsigned int size)
+xfont2_make_font_names_record(unsigned size)
{
FontNamesPtr pFN;
@@ -82,7 +83,9 @@ MakeFontNamesRecord(unsigned int size)
}
int
-AddFontNamesName(FontNamesPtr names, char *name, int length)
+xfont2_add_font_names_name(FontNamesPtr names,
+ char *name,
+ int length)
{
int index = names->nnames;
char *nelt;
diff --git a/src/util/fontutil.c b/src/util/fontutil.c
index 2c5ea6f..d1b845b 100644
--- a/src/util/fontutil.c
+++ b/src/util/fontutil.c
@@ -33,6 +33,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fontstruct.h>
#include <X11/fonts/FSproto.h>
@@ -44,25 +45,14 @@ from The Open Group.
static int defaultGlyphCachingMode = DEFAULT_GLYPH_CACHING_MODE;
int glyphCachingMode = DEFAULT_GLYPH_CACHING_MODE;
-void
-GetGlyphs(FontPtr font,
- unsigned long count,
- unsigned char *chars,
- FontEncoding fontEncoding,
- unsigned long *glyphcount, /* RETURN */
- CharInfoPtr *glyphs) /* RETURN */
-{
- (*font->get_glyphs) (font, count, chars, fontEncoding, glyphcount, glyphs);
-}
-
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
void
-QueryGlyphExtents(FontPtr pFont,
- CharInfoPtr *charinfo,
- unsigned long count,
- ExtentInfoRec *info)
+xfont2_query_glyph_extents(FontPtr pFont,
+ CharInfoPtr *charinfo,
+ unsigned long count,
+ ExtentInfoRec *info)
{
register unsigned long i;
xCharInfo *pCI;
@@ -131,10 +121,10 @@ QueryGlyphExtents(FontPtr pFont,
}
Bool
-QueryTextExtents(FontPtr pFont,
- unsigned long count,
- unsigned char *chars,
- ExtentInfoRec *info)
+xfont2_query_text_extents(FontPtr pFont,
+ unsigned long count,
+ unsigned char *chars,
+ ExtentInfoRec *info)
{
xCharInfo **charinfo;
unsigned long n;
@@ -182,15 +172,15 @@ QueryTextExtents(FontPtr pFont,
}
cm = pFont->info.constantMetrics;
pFont->info.constantMetrics = FALSE;
- QueryGlyphExtents(pFont, (CharInfoPtr*) charinfo + firstReal,
- n - firstReal, info);
+ xfont2_query_glyph_extents(pFont, (CharInfoPtr*) charinfo + firstReal,
+ n - firstReal, info);
pFont->info.constantMetrics = cm;
free(charinfo);
return TRUE;
}
Bool
-ParseGlyphCachingMode(char *str)
+xfont2_parse_glyph_caching_mode(char *str)
{
if (!strcmp(str, "none")) defaultGlyphCachingMode = CACHING_OFF;
else if (!strcmp(str, "all")) defaultGlyphCachingMode = CACHE_ALL_GLYPHS;
@@ -200,7 +190,7 @@ ParseGlyphCachingMode(char *str)
}
void
-InitGlyphCaching(void)
+xfont2_init_glyph_caching(void)
{
/* Set glyphCachingMode to the mode the server hopes to
support. DDX drivers that do not support the requested level
@@ -215,7 +205,7 @@ InitGlyphCaching(void)
* caching they can support.
*/
void
-SetGlyphCachingMode(int newmode)
+xfont2_set_glyph_caching_mode(int newmode)
{
if ( (glyphCachingMode > newmode) && (newmode >= 0) )
glyphCachingMode = newmode;
diff --git a/src/util/fontxlfd.c b/src/util/fontxlfd.c
index 99a3679..0bd1140 100644
--- a/src/util/fontxlfd.c
+++ b/src/util/fontxlfd.c
@@ -33,6 +33,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fontstruct.h>
#include <X11/fonts/fontxlfd.h>
diff --git a/src/util/format.c b/src/util/format.c
index c1f9762..0baeb3a 100644
--- a/src/util/format.c
+++ b/src/util/format.c
@@ -53,6 +53,7 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/FSproto.h>
#include <X11/fonts/font.h>
#include <X11/fonts/fontstruct.h>
diff --git a/src/util/miscutil.c b/src/util/miscutil.c
index 61c9d11..e015972 100644
--- a/src/util/miscutil.c
+++ b/src/util/miscutil.c
@@ -29,38 +29,19 @@ from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/Xosdefs.h>
#include <stdlib.h>
#include <X11/fonts/fontmisc.h>
-#include "stubs.h"
#define XK_LATIN1
#include <X11/keysymdef.h>
-
-#ifdef __SUNPRO_C
-#pragma weak serverGeneration
-#pragma weak register_fpe_functions
-#endif
-
extern void BuiltinRegisterFpeFunctions(void);
-/* make sure everything initializes themselves at least once */
-weak unsigned long serverGeneration = 1;
-
-unsigned long __GetServerGeneration (void);
-
-unsigned long
-__GetServerGeneration (void)
-{
- OVERRIDE_DATA(serverGeneration);
- return serverGeneration;
-}
-
-weak void
+void
register_fpe_functions (void)
{
- OVERRIDE_SYMBOL(register_fpe_functions);
BuiltinRegisterFpeFunctions();
FontFileRegisterFpeFunctions();
#ifdef XFONT_FC
diff --git a/src/util/patcache.c b/src/util/patcache.c
index 2101015..e76f1f4 100644
--- a/src/util/patcache.c
+++ b/src/util/patcache.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fontstruct.h>
@@ -55,15 +56,15 @@ typedef struct _FontPatternCacheEntry {
FontPtr pFont; /* associated font */
} FontPatternCacheEntryRec, *FontPatternCacheEntryPtr;
-typedef struct _FontPatternCache {
+typedef struct _xfont2_pattern_cache {
FontPatternCacheEntryPtr buckets[NBUCKETS];
FontPatternCacheEntryRec entries[NENTRIES];
FontPatternCacheEntryPtr free;
-} FontPatternCacheRec;
+} xfont2_pattern_cache_rec;
/* Empty cache (for rehash) */
void
-EmptyFontPatternCache (FontPatternCachePtr cache)
+xfont2_empty_font_pattern_cache(xfont2_pattern_cache_ptr cache)
{
int i;
@@ -83,10 +84,10 @@ EmptyFontPatternCache (FontPatternCachePtr cache)
}
/* Create and initialize cache */
-FontPatternCachePtr
-MakeFontPatternCache (void)
+xfont2_pattern_cache_ptr
+xfont2_make_font_pattern_cache(void)
{
- FontPatternCachePtr cache;
+ xfont2_pattern_cache_ptr cache;
int i;
cache = malloc (sizeof *cache);
if (!cache)
@@ -96,13 +97,13 @@ MakeFontPatternCache (void)
cache->entries[i].pattern = 0;
cache->entries[i].pFont = 0;
}
- EmptyFontPatternCache (cache);
+ xfont2_empty_font_pattern_cache (cache);
return cache;
}
/* toss cache */
void
-FreeFontPatternCache (FontPatternCachePtr cache)
+xfont2_free_font_pattern_cache(xfont2_pattern_cache_ptr cache)
{
int i;
@@ -127,10 +128,10 @@ Hash (const char *string, int len)
/* add entry */
void
-CacheFontPattern (FontPatternCachePtr cache,
- const char *pattern,
- int patlen,
- FontPtr pFont)
+xfont2_cache_font_pattern(xfont2_pattern_cache_ptr cache,
+ const char * pattern,
+ int patlen,
+ FontPtr pFont)
{
FontPatternCacheEntryPtr e;
char *newpat;
@@ -173,9 +174,9 @@ CacheFontPattern (FontPatternCachePtr cache,
/* find matching entry */
FontPtr
-FindCachedFontPattern (FontPatternCachePtr cache,
- const char *pattern,
- int patlen)
+xfont2_find_cached_font_pattern(xfont2_pattern_cache_ptr cache,
+ const char * pattern,
+ int patlen)
{
int hash;
int i;
@@ -195,8 +196,8 @@ FindCachedFontPattern (FontPatternCachePtr cache,
}
void
-RemoveCachedFontPattern (FontPatternCachePtr cache,
- FontPtr pFont)
+xfont2_remove_cached_font_pattern(xfont2_pattern_cache_ptr cache,
+ FontPtr pFont)
{
FontPatternCacheEntryPtr e;
int i;
diff --git a/src/util/private.c b/src/util/private.c
index e55e193..92075c2 100644
--- a/src/util/private.c
+++ b/src/util/private.c
@@ -31,13 +31,14 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fontstruct.h>
static int _FontPrivateAllocateIndex = 0;
int
-AllocateFontPrivateIndex (void)
+xfont2_allocate_font_private_index (void)
{
return _FontPrivateAllocateIndex++;
}
@@ -77,7 +78,7 @@ ResetFontPrivateIndex (void)
}
Bool
-_FontSetNewPrivate (FontPtr pFont, int n, pointer ptr)
+xfont2_font_set_private(FontPtr pFont, int n, pointer ptr)
{
pointer *new;
diff --git a/src/util/utilbitmap.c b/src/util/utilbitmap.c
index ec726b8..fe1c412 100644
--- a/src/util/utilbitmap.c
+++ b/src/util/utilbitmap.c
@@ -31,6 +31,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include "libxfontint.h"
#include <X11/fonts/fontmisc.h>
/* Utility functions for reformating font bitmaps */
diff --git a/xfont.pc.in b/xfont2.pc.in
index f08dea0..ac3f53a 100644
--- a/xfont.pc.in
+++ b/xfont2.pc.in
@@ -3,11 +3,11 @@ exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
-Name: Xfont
-Description: X font Library
+Name: Xfont2
+Description: X font Library version 2
Version: @VERSION@
Requires: xproto fontsproto
Requires.private: fontenc @FREETYPE_REQUIRES@
Cflags: -I${includedir}
-Libs: -L${libdir} -lXfont
+Libs: -L${libdir} -lXfont2
Libs.private: @Z_LIBS@ -lm