| 1 | /* This file overrides the R4 or R5 mit/lib/Xt/Initialize.c, except that |
| 2 | the functions lwlib_GetFileDatabase(), lwlib_CombineFileDatabase(), and |
| 3 | lwlib_xrdb_initialize() are called. By doing this silly cpp hack, we |
| 4 | avoid version skew problems. |
| 5 | */ |
| 6 | |
| 7 | #ifdef HAVE_CONFIG_H |
| 8 | #include <config.h> |
| 9 | #endif |
| 10 | |
| 11 | #include <X11/Xlib.h> |
| 12 | #include <X11/cursorfont.h> |
| 13 | #include <X11/Xutil.h> |
| 14 | |
| 15 | #ifdef XlibSpecificationRelease |
| 16 | #if XlibSpecificationRelease >= 5 |
| 17 | #define HAVE_X11R5 |
| 18 | #endif |
| 19 | #endif |
| 20 | |
| 21 | extern struct _XrmHashBucketRec *lwlib_GetFileDatabase (); |
| 22 | extern void lwlib_xrdb_initialize (); |
| 23 | |
| 24 | /* Replace all calls to XrmGetFileDatabase() with lwlib_GetFileDatabase(), |
| 25 | calls to XrmCombineFileDatabase() with lwlib_CombineFileDatabase(), and |
| 26 | rename the defined _XtDisplayInitialize() function. |
| 27 | */ |
| 28 | #define XrmGetFileDatabase lwlib_GetFileDatabase |
| 29 | #define XrmCombineFileDatabase lwlib_CombineFileDatabase |
| 30 | #define _XtDisplayInitialize _orig_XtDisplayInitialize |
| 31 | |
| 32 | /* Suck in the original code. Don't change this: see comments in Imakefile. */ |
| 33 | #include "Initialize.c" |
| 34 | |
| 35 | #undef XrmGetFileDatabase |
| 36 | #undef XrmCombineFileDatabase |
| 37 | #undef _XtDisplayInitialize |
| 38 | |
| 39 | /* Now provide a definition of _XtDisplayInitialize() which invokes the |
| 40 | original code after calling our initialization hook. Note that the R4 |
| 41 | and R5 versions of _XtDisplayInitialize() take different arguments. |
| 42 | */ |
| 43 | |
| 44 | #ifndef HAVE_X11R5 |
| 45 | |
| 46 | void _XtDisplayInitialize(dpy, pd, name, class, urlist, num_urs, argc, argv) |
| 47 | Display *dpy; |
| 48 | XtPerDisplay pd; |
| 49 | String name, class; |
| 50 | XrmOptionDescRec *urlist; |
| 51 | Cardinal num_urs; |
| 52 | Cardinal *argc; |
| 53 | char *argv[]; |
| 54 | { |
| 55 | lwlib_xrdb_initialize(dpy); |
| 56 | _orig_XtDisplayInitialize(dpy, pd, name, class, urlist, num_urs, argc, argv); |
| 57 | } |
| 58 | |
| 59 | #else /* HAVE_X11R5 */ |
| 60 | |
| 61 | void _XtDisplayInitialize(dpy, pd, name, urlist, num_urs, argc, argv) |
| 62 | Display *dpy; |
| 63 | XtPerDisplay pd; |
| 64 | String name; |
| 65 | XrmOptionDescRec *urlist; |
| 66 | Cardinal num_urs; |
| 67 | int *argc; |
| 68 | char **argv; |
| 69 | { |
| 70 | lwlib_xrdb_initialize(dpy); |
| 71 | _orig_XtDisplayInitialize(dpy, pd, name, urlist, num_urs, argc, argv); |
| 72 | } |
| 73 | |
| 74 | #endif /* HAVE_X11R5 */ |