123a0898aSmrg#include <stdio.h>
223a0898aSmrg#include <X11/fonts/fntfilst.h>
323a0898aSmrg#include <X11/fonts/font.h>
423a0898aSmrg
523a0898aSmrg#ifndef True
623a0898aSmrg#define True (-1)
723a0898aSmrg#endif
823a0898aSmrg#ifndef False
923a0898aSmrg#define False (0)
1023a0898aSmrg#endif
1123a0898aSmrg
1223a0898aSmrg/* this probably works for Mach-O too, but probably not for PE */
13b43acbb4Smrg#if defined(__ELF__) && defined(__GNUC__) && (__GNUC__ >= 3)
1423a0898aSmrg#define weak __attribute__((weak))
1523a0898aSmrg#else
1623a0898aSmrg#define weak
1741c30155Smrg#ifndef __SUNPRO_C /* Sun compilers use #pragma weak in .c files instead */
1841c30155Smrg#define NO_WEAK_SYMBOLS
1941c30155Smrg#endif
2041c30155Smrg#endif
2141c30155Smrg
220145ab54Ssnj#if defined(NO_WEAK_SYMBOLS) && defined(PIC)
230145ab54Ssnj#include <stdarg.h>
240145ab54Ssnjextern int _font_init_stubs(void);
250145ab54Ssnj#define OVERRIDE_DATA(sym) \
260145ab54Ssnj    _font_init_stubs(); \
270145ab54Ssnj    if (__ptr_##sym && __ptr_##sym != &sym) \
280145ab54Ssnj      sym = *__ptr_##sym
290145ab54Ssnj#define OVERRIDE_SYMBOL(sym,...) \
300145ab54Ssnj    _font_init_stubs(); \
310145ab54Ssnj    if (__##sym && __##sym != sym) \
320145ab54Ssnj      return (*__##sym)(__VA_ARGS__)
330145ab54Ssnj#define OVERRIDE_VA_SYMBOL(sym,f) \
340145ab54Ssnj    va_list _args; \
350145ab54Ssnj    _font_init_stubs(); \
360145ab54Ssnj    va_start(_args, f); \
370145ab54Ssnj    if (__##sym) \
380145ab54Ssnj      (*__##sym)(f, _args); \
390145ab54Ssnj    va_end(_args)
400145ab54Ssnj
41b43acbb4Smrgextern int (*__client_auth_generation)(ClientPtr);
42b43acbb4Smrgextern Bool (*__ClientSignal)(ClientPtr);
43b43acbb4Smrgextern void (*__DeleteFontClientID)(Font);
44b43acbb4Smrgextern void (*__VErrorF)(const char *, va_list);
45b43acbb4Smrgextern FontPtr (*__find_old_font)(FSID);
46b43acbb4Smrgextern FontResolutionPtr (*__GetClientResolutions)(int *);
47b43acbb4Smrgextern int (*__GetDefaultPointSize)(void);
48b43acbb4Smrgextern Font (*__GetNewFontClientID)(void);
49b43acbb4Smrgextern unsigned long (*__GetTimeInMillis)(void);
50b43acbb4Smrgextern int (*__init_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr);
51b43acbb4Smrgextern int (*__RegisterFPEFunctions)(NameCheckFunc, InitFpeFunc, FreeFpeFunc,
52b43acbb4Smrg            ResetFpeFunc, OpenFontFunc, CloseFontFunc, ListFontsFunc,
53b43acbb4Smrg            StartLfwiFunc, NextLfwiFunc, WakeupFpeFunc, ClientDiedFunc,
54b43acbb4Smrg            LoadGlyphsFunc, StartLaFunc, NextLaFunc, SetPathFunc);
55b43acbb4Smrgextern void (*__remove_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr, Bool);
56b43acbb4Smrgextern void **__ptr_serverClient;
57b43acbb4Smrgextern int (*__set_font_authorizations)(char **, int *, ClientPtr);
58b43acbb4Smrgextern int (*__StoreFontClientFont)(FontPtr, Font);
59b43acbb4Smrgextern Atom (*__MakeAtom)(const char *, unsigned, int);
60b43acbb4Smrgextern int (*__ValidAtom)(Atom);
61b43acbb4Smrgextern char *(*__NameForAtom)(Atom);
62b43acbb4Smrgextern unsigned long *__ptr_serverGeneration;
63b43acbb4Smrgextern void (*__register_fpe_functions)(void);
640145ab54Ssnj#else /* NO_WEAK_SYMBOLS && PIC */
650145ab54Ssnj#define OVERRIDE_DATA(sym)
660145ab54Ssnj#define OVERRIDE_SYMBOL(sym,...)
670145ab54Ssnj#define OVERRIDE_VA_SYMBOL(sym,f)
680145ab54Ssnj#endif
690145ab54Ssnj
7023a0898aSmrgextern FontPtr find_old_font ( FSID id );
7141c30155Smrgextern int set_font_authorizations ( char **authorizations,
7241c30155Smrg				     int *authlen,
7323a0898aSmrg				     ClientPtr client );
7423a0898aSmrg
7523a0898aSmrgextern unsigned long GetTimeInMillis (void);
7623a0898aSmrg
7723a0898aSmrgextern void ErrorF(const char *format, ...);
7823a0898aSmrg
7923a0898aSmrg/* end of file */
80