* Added in skeleton modules for fulltext indexer
authorArt Cancro <ajc@citadel.org>
Mon, 16 May 2005 20:37:00 +0000 (20:37 +0000)
committerArt Cancro <ajc@citadel.org>
Mon, 16 May 2005 20:37:00 +0000 (20:37 +0000)
citadel/Makefile.in
citadel/ft_wordbreaker.c [new file with mode: 0644]
citadel/ft_wordbreaker.d [new file with mode: 0644]
citadel/ft_wordbreaker.h [new file with mode: 0644]
citadel/ft_wordbreaker.o [new file with mode: 0644]
citadel/serv_extensions.c
citadel/serv_fulltext.c [new file with mode: 0644]
citadel/serv_fulltext.d [new file with mode: 0644]
citadel/serv_fulltext.h [new file with mode: 0644]
citadel/serv_fulltext.o [new file with mode: 0644]
citadel/server.h

index 21053649bf54f3b9f9dd220e84f31877da82903d..2b52fb8026554b6e82668896796e609fa89c68e1 100644 (file)
@@ -32,6 +32,7 @@ SERV_MODULES=serv_chat.o \
        serv_mrtg.o \
        serv_imap.o imap_fetch.o imap_misc.o imap_search.o \
                imap_store.o imap_tools.o \
+       serv_fulltext.o ft_wordbreaker.o \
        serv_network.o \
        serv_listsub.o \
        serv_netfilter.o \
@@ -95,7 +96,7 @@ SOURCES=aidepost.c auth.c base64.c chkpwd.c citadel.c citadel_ipc.c \
        serv_spam.c serv_test.c serv_mrtg.c serv_spam.c serv_upgrade.c \
        serv_vandelay.c serv_vcard.c server_main.c setup.c snprintf.c \
        stress.c support.c sysdep.c tools.c user_ops.c userlist.c \
-       whobbs.c vcard.c serv_notes.c
+       whobbs.c vcard.c serv_notes.c serv_fulltext.c ft_wordbreaker.c
 
 DEP_FILES=$(SOURCES:.c=.d)
 
diff --git a/citadel/ft_wordbreaker.c b/citadel/ft_wordbreaker.c
new file mode 100644 (file)
index 0000000..c9d9db2
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * $Id$
+ *
+ * Default wordbreaker module for full text indexing.
+ *
+ */
+
+
+#include "sysdep.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <pwd.h>
+#include <errno.h>
+#include <sys/types.h>
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
+#include <sys/wait.h>
+#include <string.h>
+#include <limits.h>
+#include "citadel.h"
+#include "server.h"
+#include "sysdep_decls.h"
+#include "citserver.h"
+#include "support.h"
+#include "config.h"
+#include "serv_extensions.h"
+#include "database.h"
+#include "msgbase.h"
+#include "control.h"
+#include "tools.h"
+#include "ft_wordbreaker.h"
+
+
diff --git a/citadel/ft_wordbreaker.d b/citadel/ft_wordbreaker.d
new file mode 100644 (file)
index 0000000..8277220
--- /dev/null
@@ -0,0 +1,59 @@
+ft_wordbreaker.o ft_wordbreaker/.o ft_wordbreaker.d: ft_wordbreaker.c sysdep.h /usr/include/stdlib.h \
+  /usr/include/features.h /usr/include/sys/cdefs.h \
+  /usr/include/gnu/stubs.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h \
+  /usr/include/sys/types.h /usr/include/bits/types.h \
+  /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \
+  /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \
+  /usr/include/sys/select.h /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
+  /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \
+  /usr/include/getopt.h /usr/include/stdio.h /usr/include/libio.h \
+  /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h \
+  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+  /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/signal.h \
+  /usr/include/bits/signum.h /usr/include/bits/siginfo.h \
+  /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \
+  /usr/include/asm/sigcontext.h /usr/include/bits/sigstack.h \
+  /usr/include/bits/sigthread.h /usr/include/pwd.h /usr/include/errno.h \
+  /usr/include/bits/errno.h /usr/include/linux/errno.h \
+  /usr/include/asm/errno.h /usr/include/sys/time.h \
+  /usr/include/sys/wait.h /usr/include/sys/resource.h \
+  /usr/include/bits/resource.h /usr/include/bits/waitflags.h \
+  /usr/include/bits/waitstatus.h /usr/include/string.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/limits.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/syslimits.h \
+  /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h citadel.h sysconfig.h typesize.h \
+  ipcdef.h server.h /usr/include/openssl/ssl.h \
+  /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \
+  /usr/include/openssl/opensslconf-i386.h /usr/include/openssl/comp.h \
+  /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \
+  /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \
+  /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \
+  /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \
+  /usr/include/openssl/evp.h /usr/include/openssl/ossl_typ.h \
+  /usr/include/openssl/md2.h /usr/include/openssl/md4.h \
+  /usr/include/openssl/md5.h /usr/include/openssl/sha.h \
+  /usr/include/openssl/ripemd.h /usr/include/openssl/des.h \
+  /usr/include/openssl/des_old.h /usr/include/openssl/ui_compat.h \
+  /usr/include/openssl/ui.h /usr/include/openssl/rc4.h \
+  /usr/include/openssl/rc2.h /usr/include/openssl/blowfish.h \
+  /usr/include/openssl/cast.h /usr/include/openssl/aes.h \
+  /usr/include/openssl/rsa.h /usr/include/openssl/asn1.h \
+  /usr/include/openssl/bn.h /usr/include/openssl/dsa.h \
+  /usr/include/openssl/dh.h /usr/include/openssl/objects.h \
+  /usr/include/openssl/obj_mac.h /usr/include/openssl/x509_vfy.h \
+  /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \
+  /usr/include/openssl/kssl.h /usr/include/openssl/pem.h \
+  /usr/include/openssl/pem2.h /usr/include/openssl/ssl2.h \
+  /usr/include/openssl/ssl3.h /usr/include/openssl/tls1.h \
+  /usr/include/openssl/ssl23.h sysdep_decls.h /usr/include/pthread.h \
+  /usr/include/sched.h /usr/include/bits/initspin.h citserver.h \
+  serv_extensions.h support.h config.h database.h msgbase.h control.h \
+  tools.h ft_wordbreaker.h
diff --git a/citadel/ft_wordbreaker.h b/citadel/ft_wordbreaker.h
new file mode 100644 (file)
index 0000000..d093489
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * $Id$
+ *
+ */
+
+
+/*
+ * This is an ID for the wordbreaker module.  If we do pluggable wordbreakers
+ * later on, or even if we update this one, we can use a different ID so the
+ * system knows it needs to throw away the existing index and rebuild it.
+ */
+#define        FT_WORDBREAKER_ID       0x0001
diff --git a/citadel/ft_wordbreaker.o b/citadel/ft_wordbreaker.o
new file mode 100644 (file)
index 0000000..6e341fe
Binary files /dev/null and b/citadel/ft_wordbreaker.o differ
index f066846d7e58fbc44e49be8594a0194aedd0344d..e6922b8cefe8020b7af3bae736cc6081f6323ccc 100644 (file)
@@ -123,6 +123,7 @@ void initialize_server_extensions(void)
        serv_upgrade_init();
        serv_vandelay_init();
        serv_vcard_init();
+       serv_fulltext_init();
 }
 
 
diff --git a/citadel/serv_fulltext.c b/citadel/serv_fulltext.c
new file mode 100644 (file)
index 0000000..0cbcd2e
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * $Id$
+ *
+ * This module handles fulltext indexing of the message base.
+ *
+ */
+
+
+#include "sysdep.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <pwd.h>
+#include <errno.h>
+#include <sys/types.h>
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
+#include <sys/wait.h>
+#include <string.h>
+#include <limits.h>
+#include "citadel.h"
+#include "server.h"
+#include "sysdep_decls.h"
+#include "citserver.h"
+#include "support.h"
+#include "config.h"
+#include "serv_extensions.h"
+#include "database.h"
+#include "msgbase.h"
+#include "control.h"
+#include "tools.h"
+#include "serv_fulltext.h"
+#include "ft_wordbreaker.h"
+
+
+void do_fulltext_indexing(void) {
+       lprintf(CTDL_DEBUG, "do_fulltext_indexing() started\n");
+
+       /*
+        * Check to see whether the fulltext index is up to date; if there
+        * are no messages to index, don't waste any more time trying.
+        */
+       lprintf(CTDL_DEBUG, "CitControl.MMhighest  = %ld\n", CitControl.MMhighest);
+       lprintf(CTDL_DEBUG, "CitControl.MMfulltext = %ld\n", CitControl.MMfulltext);
+       if (CitControl.MMfulltext >= CitControl.MMhighest) {
+               lprintf(CTDL_DEBUG, "Nothing to do!\n");
+               return;
+       }
+
+       /*
+        * If we've switched wordbreaker modules, burn the index and start
+        * over.  FIXME write this...
+        */
+
+
+       lprintf(CTDL_DEBUG, "do_fulltext_indexing() finished\n");
+       return;
+}
+
+
+/*****************************************************************************/
+
+char *serv_fulltext_init(void)
+{
+       CtdlRegisterSessionHook(do_fulltext_indexing, EVT_TIMER);
+       return "$Id$";
+}
diff --git a/citadel/serv_fulltext.d b/citadel/serv_fulltext.d
new file mode 100644 (file)
index 0000000..3b70684
--- /dev/null
@@ -0,0 +1,59 @@
+serv_fulltext.o serv_fulltext/.o serv_fulltext.d: serv_fulltext.c sysdep.h /usr/include/stdlib.h \
+  /usr/include/features.h /usr/include/sys/cdefs.h \
+  /usr/include/gnu/stubs.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h \
+  /usr/include/sys/types.h /usr/include/bits/types.h \
+  /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \
+  /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \
+  /usr/include/sys/select.h /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
+  /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \
+  /usr/include/getopt.h /usr/include/stdio.h /usr/include/libio.h \
+  /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h \
+  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+  /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/signal.h \
+  /usr/include/bits/signum.h /usr/include/bits/siginfo.h \
+  /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \
+  /usr/include/asm/sigcontext.h /usr/include/bits/sigstack.h \
+  /usr/include/bits/sigthread.h /usr/include/pwd.h /usr/include/errno.h \
+  /usr/include/bits/errno.h /usr/include/linux/errno.h \
+  /usr/include/asm/errno.h /usr/include/sys/time.h \
+  /usr/include/sys/wait.h /usr/include/sys/resource.h \
+  /usr/include/bits/resource.h /usr/include/bits/waitflags.h \
+  /usr/include/bits/waitstatus.h /usr/include/string.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/limits.h \
+  /usr/lib/gcc/i386-redhat-linux/3.4.2/include/syslimits.h \
+  /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h citadel.h sysconfig.h typesize.h \
+  ipcdef.h server.h /usr/include/openssl/ssl.h \
+  /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \
+  /usr/include/openssl/opensslconf-i386.h /usr/include/openssl/comp.h \
+  /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \
+  /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \
+  /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \
+  /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \
+  /usr/include/openssl/evp.h /usr/include/openssl/ossl_typ.h \
+  /usr/include/openssl/md2.h /usr/include/openssl/md4.h \
+  /usr/include/openssl/md5.h /usr/include/openssl/sha.h \
+  /usr/include/openssl/ripemd.h /usr/include/openssl/des.h \
+  /usr/include/openssl/des_old.h /usr/include/openssl/ui_compat.h \
+  /usr/include/openssl/ui.h /usr/include/openssl/rc4.h \
+  /usr/include/openssl/rc2.h /usr/include/openssl/blowfish.h \
+  /usr/include/openssl/cast.h /usr/include/openssl/aes.h \
+  /usr/include/openssl/rsa.h /usr/include/openssl/asn1.h \
+  /usr/include/openssl/bn.h /usr/include/openssl/dsa.h \
+  /usr/include/openssl/dh.h /usr/include/openssl/objects.h \
+  /usr/include/openssl/obj_mac.h /usr/include/openssl/x509_vfy.h \
+  /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \
+  /usr/include/openssl/kssl.h /usr/include/openssl/pem.h \
+  /usr/include/openssl/pem2.h /usr/include/openssl/ssl2.h \
+  /usr/include/openssl/ssl3.h /usr/include/openssl/tls1.h \
+  /usr/include/openssl/ssl23.h sysdep_decls.h /usr/include/pthread.h \
+  /usr/include/sched.h /usr/include/bits/initspin.h citserver.h \
+  serv_extensions.h support.h config.h database.h msgbase.h control.h \
+  tools.h serv_fulltext.h ft_wordbreaker.h
diff --git a/citadel/serv_fulltext.h b/citadel/serv_fulltext.h
new file mode 100644 (file)
index 0000000..919922f
--- /dev/null
@@ -0,0 +1,6 @@
+/*
+ * $Id$
+ *
+ */
+
+char *serv_fulltext_init(void);
diff --git a/citadel/serv_fulltext.o b/citadel/serv_fulltext.o
new file mode 100644 (file)
index 0000000..dbf664b
Binary files /dev/null and b/citadel/serv_fulltext.o differ
index c42ac736bb2c747c436b569b4eb906d7ecb5e9da..8281869e162ae524189f86fa0fb06570ef33c30b 100644 (file)
@@ -166,6 +166,8 @@ struct CitControl {
        long MMnextuser;                /* highest user number on system    */
        long MMnextroom;                /* highest room number on system    */
        int version;                    /* Server-hosted upgrade level      */
+       int fulltext_wordbreaker;       /* ID of wordbreaker in use         */
+       long MMfulltext;                /* highest message number indexed   */
 };
 
 extern struct CitContext *ContextList;