diff options
Diffstat (limited to 'src/lib/libcrypto/dso/dso_lib.c')
-rw-r--r-- | src/lib/libcrypto/dso/dso_lib.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/lib/libcrypto/dso/dso_lib.c b/src/lib/libcrypto/dso/dso_lib.c index 48d9fdb25e..49bdd71309 100644 --- a/src/lib/libcrypto/dso/dso_lib.c +++ b/src/lib/libcrypto/dso/dso_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* dso_lib.c */ | 1 | /* dso_lib.c -*- mode:C; c-file-style: "eay" -*- */ |
2 | /* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL | 2 | /* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL |
3 | * project 2000. | 3 | * project 2000. |
4 | */ | 4 | */ |
@@ -390,6 +390,33 @@ int DSO_set_filename(DSO *dso, const char *filename) | |||
390 | return(1); | 390 | return(1); |
391 | } | 391 | } |
392 | 392 | ||
393 | char *DSO_merge(DSO *dso, const char *filespec1, const char *filespec2) | ||
394 | { | ||
395 | char *result = NULL; | ||
396 | |||
397 | if(dso == NULL || filespec1 == NULL) | ||
398 | { | ||
399 | DSOerr(DSO_F_DSO_MERGE,ERR_R_PASSED_NULL_PARAMETER); | ||
400 | return(NULL); | ||
401 | } | ||
402 | if(filespec1 == NULL) | ||
403 | filespec1 = dso->filename; | ||
404 | if(filespec1 == NULL) | ||
405 | { | ||
406 | DSOerr(DSO_F_DSO_MERGE,DSO_R_NO_FILE_SPECIFICATION); | ||
407 | return(NULL); | ||
408 | } | ||
409 | if((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) | ||
410 | { | ||
411 | if(dso->merger != NULL) | ||
412 | result = dso->merger(dso, filespec1, filespec2); | ||
413 | else if(dso->meth->dso_merger != NULL) | ||
414 | result = dso->meth->dso_merger(dso, | ||
415 | filespec1, filespec2); | ||
416 | } | ||
417 | return(result); | ||
418 | } | ||
419 | |||
393 | char *DSO_convert_filename(DSO *dso, const char *filename) | 420 | char *DSO_convert_filename(DSO *dso, const char *filename) |
394 | { | 421 | { |
395 | char *result = NULL; | 422 | char *result = NULL; |