63 # include <openssl/crypto.h>
70 # define DSO_CTRL_GET_FLAGS 1
71 # define DSO_CTRL_SET_FLAGS 2
72 # define DSO_CTRL_OR_FLAGS 3
87 # define DSO_FLAG_NO_NAME_TRANSLATION 0x01
95 # define DSO_FLAG_NAME_TRANSLATION_EXT_ONLY 0x02
101 # define DSO_FLAG_UPCASE_SYMBOL 0x10
108 # define DSO_FLAG_GLOBAL_SYMBOLS 0x20
110 typedef void (*DSO_FUNC_TYPE) (void);
112 typedef struct dso_st DSO;
122 typedef char *(*DSO_NAME_CONVERTER_FUNC)(DSO *,
const char *);
138 typedef char *(*DSO_MERGER_FUNC)(DSO *,
const char *,
const char *);
140 typedef struct dso_meth_st {
147 int (*dso_load) (DSO *dso);
149 int (*dso_unload) (DSO *dso);
151 void *(*dso_bind_var) (DSO *dso,
const char *symname);
159 DSO_FUNC_TYPE (*dso_bind_func) (DSO *dso,
const char *symname);
163 int (*dso_unbind_var) (DSO *dso,
char *symname,
void *symptr);
165 int (*dso_unbind_func) (DSO *dso,
char *symname, DSO_FUNC_TYPE symptr);
171 long (*dso_ctrl) (DSO *dso,
int cmd,
long larg,
void *parg);
176 DSO_NAME_CONVERTER_FUNC dso_name_converter;
181 DSO_MERGER_FUNC dso_merger;
183 int (*init) (DSO *dso);
184 int (*finish) (DSO *dso);
186 int (*pathbyaddr) (
void *addr,
char *path,
int sz);
188 void *(*globallookup) (
const char *symname);
202 STACK_OF(
void) *meth_data;
209 CRYPTO_EX_DATA ex_data;
215 DSO_NAME_CONVERTER_FUNC name_converter;
221 DSO_MERGER_FUNC merger;
238 char *loaded_filename;
242 DSO *DSO_new_method(DSO_METHOD *method);
243 int DSO_free(DSO *dso);
244 int DSO_flags(DSO *dso);
245 int DSO_up_ref(DSO *dso);
246 long DSO_ctrl(DSO *dso,
int cmd,
long larg,
void *parg);
254 int DSO_set_name_converter(DSO *dso, DSO_NAME_CONVERTER_FUNC cb,
255 DSO_NAME_CONVERTER_FUNC *oldcb);
260 const char *DSO_get_filename(DSO *dso);
261 int DSO_set_filename(DSO *dso,
const char *filename);
272 char *DSO_convert_filename(DSO *dso,
const char *filename);
279 char *DSO_merge(DSO *dso,
const char *filespec1,
const char *filespec2);
289 const char *DSO_get_loaded_filename(DSO *dso);
291 void DSO_set_default_method(DSO_METHOD *meth);
292 DSO_METHOD *DSO_get_default_method(
void);
293 DSO_METHOD *DSO_get_method(DSO *dso);
294 DSO_METHOD *DSO_set_method(DSO *dso, DSO_METHOD *meth);
303 DSO *DSO_load(DSO *dso,
const char *filename, DSO_METHOD *meth,
int flags);
306 void *DSO_bind_var(DSO *dso,
const char *symname);
309 DSO_FUNC_TYPE DSO_bind_func(DSO *dso,
const char *symname);
316 DSO_METHOD *DSO_METHOD_openssl(
void);
322 DSO_METHOD *DSO_METHOD_null(
void);
329 DSO_METHOD *DSO_METHOD_dlfcn(
void);
336 DSO_METHOD *DSO_METHOD_dl(
void);
339 DSO_METHOD *DSO_METHOD_win32(
void);
342 DSO_METHOD *DSO_METHOD_vms(
void);
353 int DSO_pathbyaddr(
void *addr,
char *path,
int sz);
364 void *DSO_global_lookup(
const char *name);
367 DSO_METHOD *DSO_METHOD_beos(
void);
374 void ERR_load_DSO_strings(
void);
379 # define DSO_F_BEOS_BIND_FUNC 144
380 # define DSO_F_BEOS_BIND_VAR 145
381 # define DSO_F_BEOS_LOAD 146
382 # define DSO_F_BEOS_NAME_CONVERTER 147
383 # define DSO_F_BEOS_UNLOAD 148
384 # define DSO_F_DLFCN_BIND_FUNC 100
385 # define DSO_F_DLFCN_BIND_VAR 101
386 # define DSO_F_DLFCN_LOAD 102
387 # define DSO_F_DLFCN_MERGER 130
388 # define DSO_F_DLFCN_NAME_CONVERTER 123
389 # define DSO_F_DLFCN_UNLOAD 103
390 # define DSO_F_DL_BIND_FUNC 104
391 # define DSO_F_DL_BIND_VAR 105
392 # define DSO_F_DL_LOAD 106
393 # define DSO_F_DL_MERGER 131
394 # define DSO_F_DL_NAME_CONVERTER 124
395 # define DSO_F_DL_UNLOAD 107
396 # define DSO_F_DSO_BIND_FUNC 108
397 # define DSO_F_DSO_BIND_VAR 109
398 # define DSO_F_DSO_CONVERT_FILENAME 126
399 # define DSO_F_DSO_CTRL 110
400 # define DSO_F_DSO_FREE 111
401 # define DSO_F_DSO_GET_FILENAME 127
402 # define DSO_F_DSO_GET_LOADED_FILENAME 128
403 # define DSO_F_DSO_GLOBAL_LOOKUP 139
404 # define DSO_F_DSO_LOAD 112
405 # define DSO_F_DSO_MERGE 132
406 # define DSO_F_DSO_NEW_METHOD 113
407 # define DSO_F_DSO_PATHBYADDR 140
408 # define DSO_F_DSO_SET_FILENAME 129
409 # define DSO_F_DSO_SET_NAME_CONVERTER 122
410 # define DSO_F_DSO_UP_REF 114
411 # define DSO_F_GLOBAL_LOOKUP_FUNC 138
412 # define DSO_F_PATHBYADDR 137
413 # define DSO_F_VMS_BIND_SYM 115
414 # define DSO_F_VMS_LOAD 116
415 # define DSO_F_VMS_MERGER 133
416 # define DSO_F_VMS_UNLOAD 117
417 # define DSO_F_WIN32_BIND_FUNC 118
418 # define DSO_F_WIN32_BIND_VAR 119
419 # define DSO_F_WIN32_GLOBALLOOKUP 142
420 # define DSO_F_WIN32_GLOBALLOOKUP_FUNC 143
421 # define DSO_F_WIN32_JOINER 135
422 # define DSO_F_WIN32_LOAD 120
423 # define DSO_F_WIN32_MERGER 134
424 # define DSO_F_WIN32_NAME_CONVERTER 125
425 # define DSO_F_WIN32_PATHBYADDR 141
426 # define DSO_F_WIN32_SPLITTER 136
427 # define DSO_F_WIN32_UNLOAD 121
430 # define DSO_R_CTRL_FAILED 100
431 # define DSO_R_DSO_ALREADY_LOADED 110
432 # define DSO_R_EMPTY_FILE_STRUCTURE 113
433 # define DSO_R_FAILURE 114
434 # define DSO_R_FILENAME_TOO_BIG 101
435 # define DSO_R_FINISH_FAILED 102
436 # define DSO_R_INCORRECT_FILE_SYNTAX 115
437 # define DSO_R_LOAD_FAILED 103
438 # define DSO_R_NAME_TRANSLATION_FAILED 109
439 # define DSO_R_NO_FILENAME 111
440 # define DSO_R_NO_FILE_SPECIFICATION 116
441 # define DSO_R_NULL_HANDLE 104
442 # define DSO_R_SET_FILENAME_FAILED 112
443 # define DSO_R_STACK_ERROR 105
444 # define DSO_R_SYM_FAILURE 106
445 # define DSO_R_UNLOAD_FAILED 107
446 # define DSO_R_UNSUPPORTED 108