-/* $Id: recctrl.c,v 1.18 2005-03-30 09:25:24 adam Exp $
- Copyright (C) 1995-2005
+/* $Id: recctrl.c,v 1.25 2006-05-10 08:13:28 adam Exp $
+ Copyright (C) 1995-2006
Index Data ApS
This file is part of the Zebra server.
struct recTypeInstance *entries;
};
-#ifdef IDZEBRA_STATIC_GRS_SGML
- extern RecType idzebra_filter_grs_sgml[];
-#endif
-#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
-#ifdef IDZEBRA_STATIC_SAFARI
- extern RecType idzebra_filter_safari[];
-#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;
- const char *module_path = res_get_def(res, "modulePath",
- DEFAULT_MODULE_PATH);
#ifdef IDZEBRA_STATIC_GRS_SGML
- recTypeClass_add (&rts, idzebra_filter_grs_sgml, nmem, 0);
+ 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
- recTypeClass_add (&rts, idzebra_filter_safari, nmem, 0);
+ 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
+ return rts;
+}
+
+void recTypeClass_load_modules(RecTypeClass *rts, NMEM nmem,
+ const char *module_path)
+{
#if HAVE_DLFCN_H
if (module_path)
{
if (mod_p && (fl = dlsym(mod_p, "idzebra_filter")))
{
yaz_log(YLOG_LOG, "Loaded filter module %s", fname);
- recTypeClass_add(&rts, fl, nmem, mod_p);
+ recTypeClass_add(rts, fl, nmem, mod_p);
}
else if (mod_p)
{
}
}
#endif
- return rts;
}
-static void recTypeClass_add (struct recTypeClass **rts, RecType *rt,
- NMEM nmem, void *module_handle)
+static void recTypeClass_add(struct recTypeClass **rts, RecType *rt,
+ NMEM nmem, void *module_handle)
{
while (*rt)
{
slen++; /* skip . */
if (rti->recType->config)
- (*(rti->recType)->config)(rti->clientData, res, name+slen);
+ {
+ if ((*(rti->recType)->config)
+ (rti->clientData, res, name+slen) != ZEBRA_OK)
+ return 0;
+ }
return rti->recType;
}
}
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+