* give all commands their own function
[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 MOD_FILE="$CUR_DIR/Make_modules"
27 SRC_FILE="$CUR_DIR/Make_sources"
28 U_FILE="$CUR_DIR/modules_upgrade.c"
29
30 /usr/bin/printf "Scanning extension modules for entry points.\n"
31
32
33 #start of the files which inturn removes any existing file
34 #
35
36 # start the Makefile included file for $SERV_MODULES
37 cat <<EOF  >$MOD_FILE
38 #
39 # Make_modules
40 # This file is to be included by Makefile to dynamically add modules to the build process
41 # THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE
42 #
43
44 EOF
45
46 # start the Makefile included file for $SOURCES
47 cat <<EOF  >$SRC_FILE
48 #
49 # Make_sources
50 # This file is to be included by Makefile to dynamically add modules to the build process
51 # THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE
52 #
53
54 EOF
55
56 # start the upgrade file
57 cat <<EOF  >$U_FILE
58 /*
59  * $U_FILE
60  * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE
61  */
62
63
64
65 #include "sysdep.h"
66 #include <stdlib.h>
67 #include <unistd.h>
68 #include <time.h>
69 #include <ctype.h>
70 #include <stdio.h>
71 #include <sys/types.h>
72 #include <unistd.h>
73 #include <libcitadel.h>
74 #include "citadel.h"
75 #include "modules_init.h"
76 #include "sysdep_decls.h"
77
78
79
80
81 void upgrade_modules (void)
82 {
83
84     CtdlLogPrintf (CTDL_INFO, "Upgrade modules.\n");
85
86 EOF
87
88 # start the c file
89 cat <<EOF  >$C_FILE
90 /*
91  * $C_FILE
92  * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE
93  */
94
95
96
97 #include "sysdep.h"
98 #include <stdlib.h>
99 #include <time.h>
100 #include <ctype.h>
101 #include <stdio.h>
102 #include <sys/types.h>
103 #include <unistd.h>
104 #include <libcitadel.h>
105 #include "citadel.h"
106 #include "modules_init.h"
107 #include "sysdep_decls.h"
108
109
110 void LogPrintMessages(long err);
111 extern long DetailErrorFlags;
112
113
114
115 void initialise_modules (int threading)
116 {
117     long filter;
118     nSizErrmsg = 0;
119
120     if (threading)
121         CtdlLogPrintf (CTDL_INFO, "Initialise modules, CtdlThreads enabled.\n");
122     else
123         CtdlLogPrintf (CTDL_INFO, "Initialise modules, CtdlThreads not yet enabled.\n");
124 /* static server initialization: */
125         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(citserver));
126         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(control));
127         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(euidindex));
128         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(file_ops));
129         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(msgbase));
130         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(policy));
131         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(room_ops));
132         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(user_ops));
133 /* dynamic modules: */
134
135 EOF
136
137
138 #start the header file
139 cat <<EOF > $H_FILE
140 /* 
141  * $H_FILE
142  * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE
143  */
144
145
146 #ifndef MODULES_INIT_H
147 #define MODULES_INIT_H
148 #include "ctdl_module.h"
149 extern size_t nSizErrmsg;
150 void initialise_modules (int threading);
151 void upgrade_modules(void);
152
153         CTDL_MODULE_INIT(citserver);
154         CTDL_MODULE_INIT(control);
155         CTDL_MODULE_INIT(euidindex);
156         CTDL_MODULE_INIT(file_ops);
157         CTDL_MODULE_INIT(msgbase);
158         CTDL_MODULE_INIT(policy);
159         CTDL_MODULE_INIT(room_ops);
160         CTDL_MODULE_INIT(user_ops);
161 EOF
162
163 for i in serv_*.c
164 do
165         RES=X`grep CTDL_MODULE_INIT $i | cut -f2 -d\( | cut -f1 -d\)`
166         if [ $RES != "X" ] ; then
167                 RES_OUT=`echo $RES | cut -b2-`
168                 /usr/bin/printf "Found entry point in file $i\n"
169 cat <<EOF  >> $C_FILE
170         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL($RES_OUT));
171
172 EOF
173 cat <<EOF >>$H_FILE
174 CTDL_MODULE_INIT($RES_OUT);
175 EOF
176         fi
177         RES=X`grep CTDL_MODULE_UPGRADE $i | cut -f2 -d\( | cut -f1 -d\)`
178         if [ $RES != "X" ] ; then
179                 RES_OUT=`echo $RES | cut -b2-`
180                 /usr/bin/printf "Found upgrade point in file $i\n"
181 cat <<EOF  >> $U_FILE
182         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_UPGRADE_CALL($RES_OUT));
183
184 EOF
185 cat <<EOF >>$H_FILE
186 CTDL_MODULE_UPGRADE($RES_OUT);
187 EOF
188         fi
189 done
190
191
192 if [ -d "modules" ] ; then
193         cd modules
194         for j in *
195         do
196                 if [ -d $j ] ; then
197                         cd $j
198                         for k in *.c
199                         do
200                                 if [ -f "$k" ] ; then
201 # Add this .c file to the Makefile included list of SOURCES
202 cat <<EOF >> $SRC_FILE
203 SOURCES += modules/$j/$k
204 EOF
205
206 # Generate a .o file name
207 O_FILE=`basename $k .c`
208 O_FILE="$O_FILE.o"
209 # Add this .o file to the Makefile included list of SERV_MODULES
210 cat <<EOF >> $MOD_FILE
211 SERV_MODULES += modules/$j/$O_FILE
212 EOF
213         
214                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
215                                         if [ $RES != "X" ] ; then
216                                                 RES_OUT=`echo $RES | cut -b2-`
217                                                 /usr/bin/printf "Found entry point in file modules/$j/$k\n"
218 # Add this entry point to the .c file
219 cat <<EOF >> $C_FILE
220         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL($RES_OUT));
221 EOF
222 # Add this entry point to the .h file
223 cat <<EOF >> $H_FILE
224         CTDL_MODULE_INIT($RES_OUT);
225 EOF
226                                         fi
227                                         RES=X`grep CTDL_MODULE_UPGRADE $k | cut -f2 -d\( | cut -f1 -d\)`
228                                         if [ $RES != "X" ] ; then
229                                                 RES_OUT=`echo $RES | cut -b2-`
230                                                 /usr/bin/printf "Found upgrade point in file modules/$j/$k\n"
231 # Add this entry point to the .c file
232 cat <<EOF >> $U_FILE
233         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_UPGRADE_CALL($RES_OUT));
234 EOF
235 # Add this entry point to the .h file
236 cat <<EOF >> $H_FILE
237         CTDL_MODULE_UPGRADE($RES_OUT);
238 EOF
239                                         fi
240                                 fi
241                         done
242                         cd ..
243                 fi
244         done
245 fi
246
247 cd $CUR_DIR
248
249 if [ -d "user_modules" ] ; then
250         cd user_modules
251         for j in *
252         do
253                 if [ -d $j ] ; then
254                         cd $j
255                         for k in *.c
256                         do
257                                 if [ -f "$k" ] ; then
258 # Add this .c file to the Makefile included list of SOURCES
259 cat <<EOF >> $SRC_FILE
260 SOURCES=\$(SOURCES) user_modules/$j/$k
261 EOF
262
263 # Generate a .o file name
264 O_FILE=`basename $k .c`
265 O_FILE="$O_FILE.o"
266 # Add this .o file to the Makefile included list of SERV_MODULES
267 cat <<EOF >> $MOD_FILE
268 SERV_MODULES += user_modules/$j/$O_FILE
269 EOF
270         
271                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
272                                         if [ $RES != "X" ] ; then
273                                                 RES_OUT=`echo $RES | cut -b2-`
274                                                 /usr/bin/printf "Found entry point in file user_modules/$j/$k\n"
275 cat <<EOF >> $C_FILE
276         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL($RES_OUT));
277 EOF
278 cat <<EOF >> $H_FILE
279 CTDL_MODULE_INIT($RES_OUT);
280 EOF
281                                         fi
282                                         RES=X`grep CTDL_MODULE_UPGRADE $k | cut -f2 -d\( | cut -f1 -d\)`
283                                         if [ $RES != "X" ] ; then
284                                                 RES_OUT=`echo $RES | cut -b2-`
285                                                 /usr/bin/printf "Found upgrade point in file user_modules/$j/$k\n"
286 cat <<EOF >> $U_FILE
287         CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_UPGRADE_CALL($RES_OUT));
288 EOF
289 cat <<EOF >> $H_FILE
290 CTDL_MODULE_UPGRADE($RES_OUT);
291 EOF
292                                         fi
293                                 fi
294                         done
295                         cd ..
296                 fi
297         done
298 fi
299
300 cd $CUR_DIR
301
302 /usr/bin/printf "\n\n" >> $C_FILE
303 /usr/bin/printf "\tfor (filter = 1; filter != 0; filter = filter << 1)\n" >> $C_FILE
304 /usr/bin/printf "\t\tif ((filter & DetailErrorFlags) != 0)\n" >> $C_FILE
305 /usr/bin/printf "\t\t\tLogPrintMessages(filter);\n" >> $C_FILE
306 /usr/bin/printf "}\n" >> $C_FILE
307
308 #close the upgrade file
309 /usr/bin/printf "}\n" >> $U_FILE
310
311 /usr/bin/printf "\n#endif /* MODULES_INIT_H */\n" >> $H_FILE