Here it is, the new thread interface.
[citadel.git] / citadel / mk_module_init.sh
index d68f90ec296d71753896fde4b92bc0ea20dbc9b2..aaa13f145b7e037b82585f1d4e4fce54211a3c4e 100755 (executable)
@@ -23,55 +23,103 @@ ECHO=/usr/bin/printf
 CUR_DIR=`pwd`
 C_FILE="$CUR_DIR/modules_init.c"
 H_FILE="$CUR_DIR/modules_init.h"
+MOD_FILE="$CUR_DIR/Make_modules"
+SRC_FILE="$CUR_DIR/Make_sources"
 
-$ECHO $MINUS_e "Scanning extension modules for entry points.\n"
-$ECHO $MINUS_e "This version of echo $ECHO supports $MINUS_e $MINUS_E.\n"
 
-#start ofs the files which inturn removes any existing file
+/usr/bin/printf "Scanning extension modules for entry points.\n"
+
+
+#start of the files which inturn removes any existing file
+#
+
+# start the Makefile included file for $SERV_MODULES
+cat <<EOF  >$MOD_FILE
+#
+# Make_modules
+# This file is to be included by Makefile to dynamically add modules to the build process
+# THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE
+#
+
+EOF
+
+# start the Makefile included file for $SOURCES
+cat <<EOF  >$SRC_FILE
+#
+# Make_sources
+# This file is to be included by Makefile to dynamically add modules to the build process
+# THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE
 #
-$ECHO $MINUS_e "/*\n" > $C_FILE
-$ECHO $MINUS_e " * $C_FILE\n" >> $C_FILE
-$ECHO $MINUS_e " * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE\n" >> $C_FILE
-$ECHO $MINUS_e " */\n\n\n" >> $C_FILE
-
-#echo $MINUS_e "#include \"sysdep.h\"\n" >> $C_FILE
-$ECHO $MINUS_e "#include <stdlib.h>\n" >> $C_FILE
-$ECHO $MINUS_e "#include <time.h>\n" >> $C_FILE
-#echo $MINUS_e "#include <ctype.h>\n" >> $C_FILE
-#echo $MINUS_e "#include \"citadel.h\"\n" >> $C_FILE
-$ECHO $MINUS_e "#include \"modules_init.h\"\n" >> $C_FILE
-$ECHO $MINUS_e "#include \"sysdep_decls.h\"\n" >> $C_FILE
-$ECHO $MINUS_e "\n\n\n" >> $C_FILE
-$ECHO $MINUS_e "void LogPrintMessages(long err);\n" >> $C_FILE
-$ECHO $MINUS_e "static long DetailErrorFlags;\n" >> $C_FILE
-$ECHO $MINUS_e "\n\n\n" >> $C_FILE
-
-$ECHO $MINUS_e "void initialise_modules (void)\n" >> $C_FILE
-$ECHO $MINUS_e "{\n" >> $C_FILE
-$ECHO $MINUS_e "\tlong filter;\n\n" >> $C_FILE
-$ECHO $MINUS_e "\t" >> $C_FILE
-$ECHO $MINUS_E "lprintf (CTDL_INFO, \"New citadel module init proceedure.\\\n\");\n" >> $C_FILE
+
+EOF
+
+# start the c file
+cat <<EOF  >$C_FILE
+/*
+ * $C_FILE
+ * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE
+ */
+
+
+
+#include "sysdep.h"
+#include <stdlib.h>
+#include <time.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include "citadel.h"
+#include "modules_init.h"
+#include "sysdep_decls.h"
+
+
+void LogPrintMessages(long err);
+extern long DetailErrorFlags;
+
+
+
+void initialise_modules (int threading)
+{
+    long filter;
+    nSizErrmsg = 0;
+
+    if (threading)
+        CtdlLogPrintf (CTDL_INFO, "Initialise modules, CtdlThreads enabled.\n");
+    else
+        CtdlLogPrintf (CTDL_INFO, "Initialise modules, CtdlThreads not yet enabled.\n");
+EOF
+
 
 #start the header file
-$ECHO $MINUS_e "/*\n" > $H_FILE
-$ECHO $MINUS_e " * $H_FILE\n" >> $H_FILE
-$ECHO $MINUS_e " * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE\n" >> $H_FILE
-$ECHO $MINUS_e " */\n\n\n" >> $H_FILE
-$ECHO $MINUS_e "#ifndef MODULES_INIT_H\n" >> $H_FILE
-$ECHO $MINUS_e "#define MODULES_INIT_H\n" >> $H_FILE
-$ECHO $MINUS_e "#include \"ctdl_module.h\"\n" >> $H_FILE
-$ECHO $MINUS_e "void initialise_modules (void) ;\n" >> $H_FILE
+cat <<EOF > $H_FILE
+/* 
+ * $H_FILE
+ * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE
+ */
+
+
+#ifndef MODULES_INIT_H
+#define MODULES_INIT_H
+#include "ctdl_module.h"
+extern size_t nSizErrmsg;
+void initialise_modules (int threading);
 
+EOF
 
 for i in serv_*.c
 do
        RES=X`grep CTDL_MODULE_INIT $i | cut -f2 -d\( | cut -f1 -d\)`
        if [ $RES != "X" ] ; then
                RES_OUT=`echo $RES | cut -b2-`
-               $ECHO $MINUS_e "Found entry point in file $i\n"
-               $ECHO $MINUS_e "\t" >> $C_FILE
-               $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
-               $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
+               /usr/bin/printf "Found entry point in file $i\n"
+cat <<EOF  >> $C_FILE
+       lprintf (CTDL_INFO, "%%s\n", CTDL_INIT_CALL($RES_OUT));
+
+EOF
+cat <<EOF >>$H_FILE
+CTDL_MODULE_INIT($RES_OUT);
+EOF
        fi
 done
 
@@ -85,13 +133,31 @@ if [ -d "modules" ] ; then
                        for k in *.c
                        do
                                if [ -f "$k" ] ; then
+# Add this .c file to the Makefile included list of SOURCES
+cat <<EOF >> $SRC_FILE
+SOURCES += modules/$j/$k
+EOF
+
+# Generate a .o file name
+O_FILE=`basename $k .c`
+O_FILE="$O_FILE.o"
+# Add this .o file to the Makefile included list of SERV_MODULES
+cat <<EOF >> $MOD_FILE
+SERV_MODULES += modules/$j/$O_FILE
+EOF
+       
                                        RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
                                        if [ $RES != "X" ] ; then
                                                RES_OUT=`echo $RES | cut -b2-`
-                                               $ECHO $MINUS_e "Found entry point in file modules/$j/$k\n"
-                                               $ECHO $MINUS_e "\t" >> $C_FILE
-                                               $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
-                                               $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
+                                               /usr/bin/printf "Found entry point in file modules/$j/$k\n"
+# Add this entry point to the .c file
+cat <<EOF >> $C_FILE
+       lprintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL($RES_OUT));
+EOF
+# Add this entry point to the .h file
+cat <<EOF >> $H_FILE
+       CTDL_MODULE_INIT($RES_OUT);
+EOF
                                        fi
                                fi
                        done
@@ -111,13 +177,29 @@ if [ -d "user_modules" ] ; then
                        for k in *.c
                        do
                                if [ -f "$k" ] ; then
+# Add this .c file to the Makefile included list of SOURCES
+cat <<EOF >> $SRC_FILE
+SOURCES=\$(SOURCES) user_modules/$j/$k
+EOF
+
+# Generate a .o file name
+O_FILE=`basename $k .c`
+O_FILE="$O_FILE.o"
+# Add this .o file to the Makefile included list of SERV_MODULES
+cat <<EOF >> $MOD_FILE
+SERV_MODULES += user_modules/$j/$O_FILE
+EOF
+       
                                        RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
                                        if [ $RES != "X" ] ; then
                                                RES_OUT=`echo $RES | cut -b2-`
-                                               $ECHO $MINUS_e "Found entry point in file user_modules/$j/$k\n"
-                                               $ECHO $MINUS_e "\t" >> $C_FILE
-                                               $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
-                                               $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
+                                               /usr/bin/printf "Found entry point in file user_modules/$j/$k\n"
+cat <<EOF >> $C_FILE
+       lprintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL($RES_OUT));
+EOF
+cat <<EOF >> $H_FILE
+CTDL_MODULE_INIT($RES_OUT);
+EOF
                                        fi
                                fi
                        done
@@ -128,11 +210,11 @@ fi
 
 cd $CUR_DIR
 
-$ECHO $MINUS_e "\n\n" >> $C_FILE
-$ECHO $MINUS_e "\tfor (filter = 1; filter != 0; filter = filter << 1)\n" >> $C_FILE
-$ECHO $MINUS_e "\t\tif ((filter & DetailErrorFlags) != 0)\n" >> $C_FILE
-$ECHO $MINUS_e "\t\t\tLogPrintMessages(filter);\n" >> $C_FILE
-$ECHO $MINUS_e "}\n" >> $C_FILE
+/usr/bin/printf "\n\n" >> $C_FILE
+/usr/bin/printf "\tfor (filter = 1; filter != 0; filter = filter << 1)\n" >> $C_FILE
+/usr/bin/printf "\t\tif ((filter & DetailErrorFlags) != 0)\n" >> $C_FILE
+/usr/bin/printf "\t\t\tLogPrintMessages(filter);\n" >> $C_FILE
+/usr/bin/printf "}\n" >> $C_FILE
 
 
-$ECHO $MINUS_e "\n#endif /* MODULES_INIT_H */\n" >> $H_FILE
+/usr/bin/printf "\n#endif /* MODULES_INIT_H */\n" >> $H_FILE