d68f90ec296d71753896fde4b92bc0ea20dbc9b2
[citadel.git] / citadel / mk_module_init.sh
1 #!/bin/sh
2 #
3 # Script to generate $C_FILE
4 #
5
6 ECHO=/usr/bin/printf
7
8 #MINUS_e=X`$ECHO -n -e`
9 #if [ $MINUS_e != "X" ] ; then
10 #       MINUS_e=""
11 #else
12 #       MINUS_e="-e"
13 #fi
14
15 #MINUS_E=X`$ECHO -n -E`
16 #if [ $MINUS_E != "X" ] ; then
17 #       MINUS_E=""
18 #else
19 #       MINUS_E="-E"
20 #fi
21
22
23 CUR_DIR=`pwd`
24 C_FILE="$CUR_DIR/modules_init.c"
25 H_FILE="$CUR_DIR/modules_init.h"
26
27 $ECHO $MINUS_e "Scanning extension modules for entry points.\n"
28 $ECHO $MINUS_e "This version of echo $ECHO supports $MINUS_e $MINUS_E.\n"
29
30 #start ofs the files which inturn removes any existing file
31 #
32 $ECHO $MINUS_e "/*\n" > $C_FILE
33 $ECHO $MINUS_e " * $C_FILE\n" >> $C_FILE
34 $ECHO $MINUS_e " * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE\n" >> $C_FILE
35 $ECHO $MINUS_e " */\n\n\n" >> $C_FILE
36
37 #echo $MINUS_e "#include \"sysdep.h\"\n" >> $C_FILE
38 $ECHO $MINUS_e "#include <stdlib.h>\n" >> $C_FILE
39 $ECHO $MINUS_e "#include <time.h>\n" >> $C_FILE
40 #echo $MINUS_e "#include <ctype.h>\n" >> $C_FILE
41 #echo $MINUS_e "#include \"citadel.h\"\n" >> $C_FILE
42 $ECHO $MINUS_e "#include \"modules_init.h\"\n" >> $C_FILE
43 $ECHO $MINUS_e "#include \"sysdep_decls.h\"\n" >> $C_FILE
44 $ECHO $MINUS_e "\n\n\n" >> $C_FILE
45 $ECHO $MINUS_e "void LogPrintMessages(long err);\n" >> $C_FILE
46 $ECHO $MINUS_e "static long DetailErrorFlags;\n" >> $C_FILE
47 $ECHO $MINUS_e "\n\n\n" >> $C_FILE
48
49 $ECHO $MINUS_e "void initialise_modules (void)\n" >> $C_FILE
50 $ECHO $MINUS_e "{\n" >> $C_FILE
51 $ECHO $MINUS_e "\tlong filter;\n\n" >> $C_FILE
52 $ECHO $MINUS_e "\t" >> $C_FILE
53 $ECHO $MINUS_E "lprintf (CTDL_INFO, \"New citadel module init proceedure.\\\n\");\n" >> $C_FILE
54
55 #start the header file
56 $ECHO $MINUS_e "/*\n" > $H_FILE
57 $ECHO $MINUS_e " * $H_FILE\n" >> $H_FILE
58 $ECHO $MINUS_e " * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE\n" >> $H_FILE
59 $ECHO $MINUS_e " */\n\n\n" >> $H_FILE
60 $ECHO $MINUS_e "#ifndef MODULES_INIT_H\n" >> $H_FILE
61 $ECHO $MINUS_e "#define MODULES_INIT_H\n" >> $H_FILE
62 $ECHO $MINUS_e "#include \"ctdl_module.h\"\n" >> $H_FILE
63 $ECHO $MINUS_e "void initialise_modules (void) ;\n" >> $H_FILE
64
65
66 for i in serv_*.c
67 do
68         RES=X`grep CTDL_MODULE_INIT $i | cut -f2 -d\( | cut -f1 -d\)`
69         if [ $RES != "X" ] ; then
70                 RES_OUT=`echo $RES | cut -b2-`
71                 $ECHO $MINUS_e "Found entry point in file $i\n"
72                 $ECHO $MINUS_e "\t" >> $C_FILE
73                 $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
74                 $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
75         fi
76 done
77
78
79 if [ -d "modules" ] ; then
80         cd modules
81         for j in *
82         do
83                 if [ -d $j ] ; then
84                         cd $j
85                         for k in *.c
86                         do
87                                 if [ -f "$k" ] ; then
88                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
89                                         if [ $RES != "X" ] ; then
90                                                 RES_OUT=`echo $RES | cut -b2-`
91                                                 $ECHO $MINUS_e "Found entry point in file modules/$j/$k\n"
92                                                 $ECHO $MINUS_e "\t" >> $C_FILE
93                                                 $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
94                                                 $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
95                                         fi
96                                 fi
97                         done
98                         cd ..
99                 fi
100         done
101 fi
102
103 cd $CUR_DIR
104
105 if [ -d "user_modules" ] ; then
106         cd user_modules
107         for j in *
108         do
109                 if [ -d $j ] ; then
110                         cd $j
111                         for k in *.c
112                         do
113                                 if [ -f "$k" ] ; then
114                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
115                                         if [ $RES != "X" ] ; then
116                                                 RES_OUT=`echo $RES | cut -b2-`
117                                                 $ECHO $MINUS_e "Found entry point in file user_modules/$j/$k\n"
118                                                 $ECHO $MINUS_e "\t" >> $C_FILE
119                                                 $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
120                                                 $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
121                                         fi
122                                 fi
123                         done
124                         cd ..
125                 fi
126         done
127 fi
128
129 cd $CUR_DIR
130
131 $ECHO $MINUS_e "\n\n" >> $C_FILE
132 $ECHO $MINUS_e "\tfor (filter = 1; filter != 0; filter = filter << 1)\n" >> $C_FILE
133 $ECHO $MINUS_e "\t\tif ((filter & DetailErrorFlags) != 0)\n" >> $C_FILE
134 $ECHO $MINUS_e "\t\t\tLogPrintMessages(filter);\n" >> $C_FILE
135 $ECHO $MINUS_e "}\n" >> $C_FILE
136
137
138 $ECHO $MINUS_e "\n#endif /* MODULES_INIT_H */\n" >> $H_FILE