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