X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=recctrl%2Frecctrl.c;h=6678a00a96550e5f8229414f3f511cd47fdf8431;hb=93d44a21d1aa585bb7f68d23a7590fc38ccb62a6;hp=9415233d9400d5df8fd2782392b7d7a0a450af73;hpb=37a9e671c7abc0eb74ced2544fd8e93c7d2b291f;p=idzebra-moved-to-github.git diff --git a/recctrl/recctrl.c b/recctrl/recctrl.c index 9415233..6678a00 100644 --- a/recctrl/recctrl.c +++ b/recctrl/recctrl.c @@ -1,4 +1,4 @@ -/* $Id: recctrl.c,v 1.12 2004-09-30 08:30:05 adam Exp $ +/* $Id: recctrl.c,v 1.15 2005-01-05 00:10:19 adam Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -24,7 +24,9 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include #include +#if HAVE_DLFCN_H #include +#endif #include #include @@ -65,6 +67,9 @@ struct recTypes { #ifdef IDZEBRA_STATIC_GRS_DANBIB extern RecType idzebra_filter_grs_danbib[]; #endif +#ifdef IDZEBRA_STATIC_SAFARI + extern RecType idzebra_filter_safari[]; +#endif static void recTypeClass_add (struct recTypeClass **rts, RecType *rt, NMEM nmem, void *module_handle); @@ -94,11 +99,15 @@ RecTypeClass recTypeClass_create (Res res, NMEM nmem) #ifdef IDZEBRA_STATIC_GRS_DANBIB recTypeClass_add (&rts, idzebra_filter_grs_danbib, nmem, 0); #endif +#ifdef IDZEBRA_STATIC_SAFARI + recTypeClass_add (&rts, idzebra_filter_safari, nmem, 0); +#endif +#if HAVE_DLFCN_H if (module_path) { DIR *dir = opendir(module_path); - yaz_log(LOG_LOG, "searching filters in %s", module_path); + yaz_log(YLOG_LOG, "searching filters in %s", module_path); if (dir) { struct dirent *de; @@ -118,20 +127,20 @@ RecTypeClass recTypeClass_create (Res res, NMEM nmem) mod_p = dlopen(fname, RTLD_NOW|RTLD_GLOBAL); if (mod_p && (fl = dlsym(mod_p, "idzebra_filter"))) { - yaz_log(LOG_LOG, "Loaded filter module %s", fname); + yaz_log(YLOG_LOG, "Loaded filter module %s", fname); recTypeClass_add(&rts, fl, nmem, mod_p); } else if (mod_p) { const char *err = dlerror(); - yaz_log(LOG_WARN, "dlsym failed %s %s", + yaz_log(YLOG_WARN, "dlsym failed %s %s", fname, err ? err : "none"); dlclose(mod_p); } else { const char *err = dlerror(); - yaz_log(LOG_WARN, "dlopen failed %s %s", + yaz_log(YLOG_WARN, "dlopen failed %s %s", fname, err ? err : "none"); } @@ -140,6 +149,7 @@ RecTypeClass recTypeClass_create (Res res, NMEM nmem) closedir(dir); } } +#endif return rts; } @@ -154,7 +164,7 @@ static void recTypeClass_add (struct recTypeClass **rts, RecType *rt, r->next = *rts; *rts = r; - yaz_log(LOG_LOG, "Adding filter %s", (*rt)->name); + yaz_log(YLOG_LOG, "Adding filter %s", (*rt)->name); r->module_handle = module_handle; module_handle = 0; /* so that we only store module_handle once */ r->recType = *rt; @@ -174,8 +184,10 @@ void recTypeClass_destroy(RecTypeClass rtc) { for (; rtc; rtc = rtc->next) { +#if HAVE_DLFCN_H if (rtc->module_handle) dlclose(rtc->module_handle); +#endif } }