-/* $Id: recctrl.c,v 1.13 2004-11-19 10:27:12 heikki Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
- Index Data Aps
+/* $Id: recctrl.c,v 1.22 2005-12-05 12:18:41 marc Exp $
+ Copyright (C) 1995-2005
+ Index Data ApS
This file is part of the Zebra server.
#include <stdio.h>
#include <assert.h>
#include <string.h>
+#if HAVE_DLFCN_H
#include <dlfcn.h>
+#endif
#include <direntz.h>
-#include <zebrautl.h>
+#include <idzebra/util.h>
#include <idzebra/recctrl.h>
struct recTypeClass {
struct recTypeInstance *entries;
};
-#ifdef IDZEBRA_STATIC_TEXT
- extern RecType idzebra_filter_text[];
-#endif
-#ifdef IDZEBRA_STATIC_GRS_XML
-#if HAVE_EXPAT_H
- extern RecType idzebra_filter_grs_xml[];
-#endif
-#endif
-#ifdef IDZEBRA_STATIC_GRS_REGX
- extern RecType idzebra_filter_grs_regx[];
-#endif
-#ifdef IDZEBRA_STATIC_GRS_MARC
- extern RecType idzebra_filter_grs_marc[];
-#endif
-#ifdef IDZEBRA_STATIC_GRS_DANBIB
- extern RecType idzebra_filter_grs_danbib[];
-#endif
-
static void recTypeClass_add (struct recTypeClass **rts, RecType *rt,
NMEM nmem, void *module_handle);
RecTypeClass recTypeClass_create (Res res, NMEM nmem)
{
struct recTypeClass *rts = 0;
+#if HAVE_DLFCN_H
const char *module_path = res_get_def(res, "modulePath",
DEFAULT_MODULE_PATH);
+#endif
- extern RecType idzebra_filter_grs_sgml[];
- recTypeClass_add (&rts, idzebra_filter_grs_sgml, nmem, 0);
+#ifdef IDZEBRA_STATIC_GRS_SGML
+ if (1)
+ {
+ extern RecType idzebra_filter_grs_sgml[];
+ recTypeClass_add (&rts, idzebra_filter_grs_sgml, nmem, 0);
+ }
+#endif
#ifdef IDZEBRA_STATIC_TEXT
- recTypeClass_add (&rts, idzebra_filter_text, nmem, 0);
+ if (1)
+ {
+ extern RecType idzebra_filter_text[];
+ recTypeClass_add (&rts, idzebra_filter_text, nmem, 0);
+ }
#endif
#ifdef IDZEBRA_STATIC_GRS_XML
#if HAVE_EXPAT_H
- recTypeClass_add (&rts, idzebra_filter_grs_xml, nmem, 0);
+ if (1)
+ {
+ extern RecType idzebra_filter_grs_xml[];
+ recTypeClass_add (&rts, idzebra_filter_grs_xml, nmem, 0);
+ }
#endif
#endif
#ifdef IDZEBRA_STATIC_GRS_REGX
- recTypeClass_add (&rts, idzebra_filter_grs_regx, nmem, 0);
+ if (1)
+ {
+ extern RecType idzebra_filter_grs_regx[];
+ recTypeClass_add (&rts, idzebra_filter_grs_regx, nmem, 0);
+ }
#endif
#ifdef IDZEBRA_STATIC_GRS_MARC
- recTypeClass_add (&rts, idzebra_filter_grs_marc, nmem, 0);
+ if (1)
+ {
+ extern RecType idzebra_filter_grs_marc[];
+ recTypeClass_add (&rts, idzebra_filter_grs_marc, nmem, 0);
+ }
+#endif
+#ifdef IDZEBRA_STATIC_GRS_CSV
+ if (1)
+ {
+ extern RecType idzebra_filter_grs_csv[];
+ recTypeClass_add (&rts, idzebra_filter_grs_csv, nmem, 0);
+ }
#endif
#ifdef IDZEBRA_STATIC_GRS_DANBIB
- recTypeClass_add (&rts, idzebra_filter_grs_danbib, nmem, 0);
+ if (1)
+ {
+ extern RecType idzebra_filter_grs_danbib[];
+ recTypeClass_add (&rts, idzebra_filter_grs_danbib, nmem, 0);
+ }
+#endif
+#ifdef IDZEBRA_STATIC_SAFARI
+ if (1)
+ {
+ extern RecType idzebra_filter_safari[];
+ recTypeClass_add (&rts, idzebra_filter_safari, nmem, 0);
+ }
+#endif
+#ifdef IDZEBRA_STATIC_ALVIS
+#if HAVE_XSLT
+ if (1)
+ {
+ extern RecType idzebra_filter_alvis[];
+ recTypeClass_add (&rts, idzebra_filter_alvis, nmem, 0);
+ }
+#endif
+#endif
+#ifdef IDZEBRA_STATIC_XSLT
+#if HAVE_XSLT
+ if (1)
+ {
+ extern RecType idzebra_filter_xslt[];
+ recTypeClass_add (&rts, idzebra_filter_xslt, nmem, 0);
+ }
+#endif
#endif
+#if HAVE_DLFCN_H
if (module_path)
{
DIR *dir = opendir(module_path);
closedir(dir);
}
}
+#endif
return rts;
}
{
for (; rtc; rtc = rtc->next)
{
+#if HAVE_DLFCN_H
if (rtc->module_handle)
dlclose(rtc->module_handle);
+#endif
}
}