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