Listing 2
// Ch function file for ORJ_ReadDatabaseA()
#include <dlfcn.h>
#include <stdlib.h>
#include <openrj/openrj.h>
ORJ_CALL(ORJRC) ORJ_ReadDatabaseA(char const *jarName
, IORJAllocator *ator
, unsigned flags
, ORJDatabaseA const **pdatabase
, ORJError *error)
{
void *hinst = dlopen("libopenrjch.dl", RTLD_LAZY);
ORJRC retVal;
if(NULL == hinst)
{
fprintf(stderr, "Error: dlopen(): %s\n", dlerror());
fprintf(stderr, "Cannot load server for Open-RJ!\n");
exit(EXIT_FAILURE);
}
else
{
void *pfn = dlsym(hinst, "ORJ_ReadDatabaseA_chdl");
if(NULL == pfn)
{
fprintf(stderr, "Error: %s(): dlsym()L %s\n"
, __func__, dlerror());
dlclose(hinst);
exit(EXIT_FAILURE);
}
dlrunfun( pfn, &retVal, ORJ_ReadDatabaseA, jarName
, ator, flags, pdatabase, error);
dlclose(hinst);
}
return retVal;
}