3 Reason: use the real Glk library's copies of the blorb and dispatch
4 layer rather than our own; in the case of the dispatch layer
5 at least, this in theory might allow for better errors when
6 the game calls a function not present in this version of Glk
8 --- glkloader-0.3.2/blorbfuncs.c~ 2001-03-14 03:07:58.000000000 +0000
9 +++ glkloader-0.3.2/blorbfuncs.c 2007-12-09 11:28:31.000000000 +0000
15 +giblorb_err_t giblorb_create_map(strid_t file, giblorb_map_t **newmap)
17 + giblorb_err_t (*funcPtr)(strid_t file, giblorb_map_t **newmap);
18 + char * errBuf = NULL;
20 + funcPtr = loadSymbol(gGlkLib, "giblorb_create_map", &errBuf);
21 + if (NULL != errBuf) {
22 + fprintf(stderr, "%s\n", errBuf);
26 + return (*funcPtr)(file, newmap);
29 +giblorb_err_t giblorb_destroy_map(giblorb_map_t *map)
31 + giblorb_err_t (*funcPtr)(giblorb_map_t *map);
32 + char * errBuf = NULL;
34 + funcPtr = loadSymbol(gGlkLib, "giblorb_destroy_map", &errBuf);
35 + if (NULL != errBuf) {
36 + fprintf(stderr, "%s\n", errBuf);
40 + return (*funcPtr)(map);
43 +giblorb_err_t giblorb_load_chunk_by_type(giblorb_map_t *map,
44 + glui32 method, giblorb_result_t *res, glui32 chunktype, glui32 count)
46 + giblorb_err_t (*funcPtr)(giblorb_map_t *map,
47 + glui32 method, giblorb_result_t *res, glui32 chunktype, glui32 count);
48 + char * errBuf = NULL;
50 + funcPtr = loadSymbol(gGlkLib, "giblorb_load_chunk_by_type", &errBuf);
51 + if (NULL != errBuf) {
52 + fprintf(stderr, "%s\n", errBuf);
56 + return (*funcPtr)(map, method, res, chunktype, count);
59 +giblorb_err_t giblorb_load_chunk_by_number(giblorb_map_t *map,
60 + glui32 method, giblorb_result_t *res, glui32 chunknum)
62 + giblorb_err_t (*funcPtr)(giblorb_map_t *map,
63 + glui32 method, giblorb_result_t *res, glui32 chunknum);
64 + char * errBuf = NULL;
66 + funcPtr = loadSymbol(gGlkLib, "giblorb_load_chunk_by_number", &errBuf);
67 + if (NULL != errBuf) {
68 + fprintf(stderr, "%s\n", errBuf);
72 + return (*funcPtr)(map, method, res, chunknum);
75 +giblorb_err_t giblorb_unload_chunk(giblorb_map_t *map, glui32 chunknum)
77 + giblorb_err_t (*funcPtr)(giblorb_map_t *map, glui32 chunknum);
78 + char * errBuf = NULL;
80 + funcPtr = loadSymbol(gGlkLib, "giblorb_unload_chunk", &errBuf);
81 + if (NULL != errBuf) {
82 + fprintf(stderr, "%s\n", errBuf);
86 + return (*funcPtr)(map, chunknum);
89 +giblorb_err_t giblorb_load_resource(giblorb_map_t *map,
90 + glui32 method, giblorb_result_t *res, glui32 usage, glui32 resnum)
92 + giblorb_err_t (*funcPtr)(giblorb_map_t *map,
93 + glui32 method, giblorb_result_t *res, glui32 usage, glui32 resnum);
94 + char * errBuf = NULL;
96 + funcPtr = loadSymbol(gGlkLib, "giblorb_load_resource", &errBuf);
97 + if (NULL != errBuf) {
98 + fprintf(stderr, "%s\n", errBuf);
102 + return (*funcPtr)(map, method, res, usage, resnum);
105 +giblorb_err_t giblorb_count_resources(giblorb_map_t *map,
106 + glui32 usage, glui32 *num, glui32 *min, glui32 *max)
108 + giblorb_err_t (*funcPtr)(giblorb_map_t *map,
109 + glui32 usage, glui32 *num, glui32 *min, glui32 *max);
110 + char * errBuf = NULL;
112 + funcPtr = loadSymbol(gGlkLib, "giblorb_count_resources", &errBuf);
113 + if (NULL != errBuf) {
114 + fprintf(stderr, "%s\n", errBuf);
118 + return (*funcPtr)(map, usage, num, min, max);
120 --- glkloader-0.3.2/Makefile~ 2007-12-09 11:18:08.000000000 +0000
121 +++ glkloader-0.3.2/Makefile 2007-12-09 11:28:40.000000000 +0000
125 glkloader.o glkfuncs.o blorbfuncs.o dispafuncs.o unixfuncs.o \
126 - linux_defines.o gi_blorb.o gi_dispa.o
130 defines.h linux_defines.h
131 --- glkloader-0.3.2/dispafuncs.c~ 2001-03-14 03:07:59.000000000 +0000
132 +++ glkloader-0.3.2/dispafuncs.c 2007-12-09 11:30:51.000000000 +0000
135 return (*funcPtr)(regi, unregi);
138 +void gidispatch_call(glui32 funcnum, glui32 numargs, gluniversal_t *arglist)
140 + void (*funcPtr)(glui32 funcnum, glui32 numargs, gluniversal_t *arglist);
141 + char * errBuf = NULL;
143 + funcPtr = loadSymbol(gGlkLib, "gidispatch_call", &errBuf);
144 + if (NULL != errBuf) {
145 + fprintf(stderr, "%s\n", errBuf);
149 + return (*funcPtr)(funcnum, numargs, arglist);
152 +char *gidispatch_prototype(glui32 funcnum)
154 + char * (*funcPtr)(glui32 funcnum);
155 + char * errBuf = NULL;
157 + funcPtr = loadSymbol(gGlkLib, "gidispatch_prototype", &errBuf);
158 + if (NULL != errBuf) {
159 + fprintf(stderr, "%s\n", errBuf);
163 + return (*funcPtr)(funcnum);
166 +glui32 gidispatch_count_classes(void)
168 + glui32 (*funcPtr)(void);
169 + char * errBuf = NULL;
171 + funcPtr = loadSymbol(gGlkLib, "gidispatch_count_classes", &errBuf);
172 + if (NULL != errBuf) {
173 + fprintf(stderr, "%s\n", errBuf);
177 + return (*funcPtr)();
180 +gidispatch_intconst_t *gidispatch_get_class(glui32 index)
182 + gidispatch_intconst_t * (*funcPtr)(glui32 index);
183 + char * errBuf = NULL;
185 + funcPtr = loadSymbol(gGlkLib, "gidispatch_get_class", &errBuf);
186 + if (NULL != errBuf) {
187 + fprintf(stderr, "%s\n", errBuf);
191 + return (*funcPtr)(index);
194 +glui32 gidispatch_count_intconst(void)
196 + glui32 (*funcPtr)(void);
197 + char * errBuf = NULL;
199 + funcPtr = loadSymbol(gGlkLib, "gidispatch_count_intconst", &errBuf);
200 + if (NULL != errBuf) {
201 + fprintf(stderr, "%s\n", errBuf);
205 + return (*funcPtr)();
208 +gidispatch_intconst_t *gidispatch_get_intconst(glui32 index)
210 + gidispatch_intconst_t * (*funcPtr)(glui32 index);
211 + char * errBuf = NULL;
213 + funcPtr = loadSymbol(gGlkLib, "gidispatch_get_intconst", &errBuf);
214 + if (NULL != errBuf) {
215 + fprintf(stderr, "%s\n", errBuf);
219 + return (*funcPtr)(index);
222 +glui32 gidispatch_count_functions(void)
224 + glui32 (*funcPtr)(void);
225 + char * errBuf = NULL;
227 + funcPtr = loadSymbol(gGlkLib, "gidispatch_count_functions", &errBuf);
228 + if (NULL != errBuf) {
229 + fprintf(stderr, "%s\n", errBuf);
233 + return (*funcPtr)();
236 +gidispatch_function_t *gidispatch_get_function(glui32 index)
238 + gidispatch_function_t * (*funcPtr)(glui32 index);
239 + char * errBuf = NULL;
241 + funcPtr = loadSymbol(gGlkLib, "gidispatch_get_function", &errBuf);
242 + if (NULL != errBuf) {
243 + fprintf(stderr, "%s\n", errBuf);
247 + return (*funcPtr)(index);
250 +gidispatch_function_t *gidispatch_get_function_by_id(glui32 id)
252 + gidispatch_function_t * (*funcPtr)(glui32 id);
253 + char * errBuf = NULL;
255 + funcPtr = loadSymbol(gGlkLib, "gidispatch_get_function_by_id", &errBuf);
256 + if (NULL != errBuf) {
257 + fprintf(stderr, "%s\n", errBuf);
261 + return (*funcPtr)(id);