Reorder declaration.
[idzebra-moved-to-github.git] / recctrl / recctrl.c
index c4dbdbc..5709d8c 100644 (file)
@@ -1,6 +1,6 @@
-/* $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.20 2005-04-28 08:20:40 adam Exp $
+   Copyright (C) 1995-2005
+   Index Data ApS
 
 This file is part of the Zebra server.
 
@@ -24,10 +24,12 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #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 {
@@ -48,24 +50,6 @@ struct recTypes {
     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);
 
@@ -75,26 +59,77 @@ RecTypeClass recTypeClass_create (Res res, NMEM nmem)
     const char *module_path = res_get_def(res, "modulePath",
                                          DEFAULT_MODULE_PATH);
 
-    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_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);
@@ -140,6 +175,7 @@ RecTypeClass recTypeClass_create (Res res, NMEM nmem)
            closedir(dir);
        }
     }
+#endif
     return rts;
 }
 
@@ -174,8 +210,10 @@ void recTypeClass_destroy(RecTypeClass rtc)
 {
     for (; rtc; rtc = rtc->next)
     {
+#if HAVE_DLFCN_H
        if (rtc->module_handle)
            dlclose(rtc->module_handle);
+#endif
     }
 }