fa2782c06a9f6061f2704977fdd356676dc66a64
[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 "\tnSizErrmsg = 0;\n\n" >> $C_FILE
53 $ECHO $MINUS_e "\t" >> $C_FILE
54 $ECHO $MINUS_E "lprintf (CTDL_INFO, \"New citadel module init proceedure.\\\n\");\n" >> $C_FILE
55
56 #start the header file
57 $ECHO $MINUS_e "/*\n" > $H_FILE
58 $ECHO $MINUS_e " * $H_FILE\n" >> $H_FILE
59 $ECHO $MINUS_e " * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE\n" >> $H_FILE
60 $ECHO $MINUS_e " */\n\n\n" >> $H_FILE
61 $ECHO $MINUS_e "#ifndef MODULES_INIT_H\n" >> $H_FILE
62 $ECHO $MINUS_e "#define MODULES_INIT_H\n" >> $H_FILE
63 $ECHO $MINUS_e "#include \"ctdl_module.h\"\n\n" >> $H_FILE
64 $ECHO $MINUS_e "extern size_t nSizErrmsg;\n" >> $H_FILE
65 $ECHO $MINUS_e "void initialise_modules (void) ;\n" >> $H_FILE
66
67
68 for i in serv_*.c
69 do
70         RES=X`grep CTDL_MODULE_INIT $i | cut -f2 -d\( | cut -f1 -d\)`
71         if [ $RES != "X" ] ; then
72                 RES_OUT=`echo $RES | cut -b2-`
73                 $ECHO $MINUS_e "Found entry point in file $i\n"
74                 $ECHO $MINUS_e "\t" >> $C_FILE
75                 $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
76                 $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
77         fi
78 done
79
80
81 if [ -d "modules" ] ; then
82         cd modules
83         for j in *
84         do
85                 if [ -d $j ] ; then
86                         cd $j
87                         for k in *.c
88                         do
89                                 if [ -f "$k" ] ; then
90                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
91                                         if [ $RES != "X" ] ; then
92                                                 RES_OUT=`echo $RES | cut -b2-`
93                                                 $ECHO $MINUS_e "Found entry point in file modules/$j/$k\n"
94                                                 $ECHO $MINUS_e "\t" >> $C_FILE
95                                                 $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
96                                                 $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
97                                         fi
98                                 fi
99                         done
100                         cd ..
101                 fi
102         done
103 fi
104
105 cd $CUR_DIR
106
107 if [ -d "user_modules" ] ; then
108         cd user_modules
109         for j in *
110         do
111                 if [ -d $j ] ; then
112                         cd $j
113                         for k in *.c
114                         do
115                                 if [ -f "$k" ] ; then
116                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
117                                         if [ $RES != "X" ] ; then
118                                                 RES_OUT=`echo $RES | cut -b2-`
119                                                 $ECHO $MINUS_e "Found entry point in file user_modules/$j/$k\n"
120                                                 $ECHO $MINUS_e "\t" >> $C_FILE
121                                                 $ECHO $MINUS_E "lprintf (CTDL_INFO, \\\"%%s\\\n\\\", CTDL_INIT_CALL($RES_OUT));\n" >> $C_FILE
122                                                 $ECHO $MINUS_E "CTDL_MODULE_INIT($RES_OUT) ;\n" >> $H_FILE
123                                         fi
124                                 fi
125                         done
126                         cd ..
127                 fi
128         done
129 fi
130
131 cd $CUR_DIR
132
133 $ECHO $MINUS_e "\n\n" >> $C_FILE
134 $ECHO $MINUS_e "\tfor (filter = 1; filter != 0; filter = filter << 1)\n" >> $C_FILE
135 $ECHO $MINUS_e "\t\tif ((filter & DetailErrorFlags) != 0)\n" >> $C_FILE
136 $ECHO $MINUS_e "\t\t\tLogPrintMessages(filter);\n" >> $C_FILE
137 $ECHO $MINUS_e "}\n" >> $C_FILE
138
139
140 $ECHO $MINUS_e "\n#endif /* MODULES_INIT_H */\n" >> $H_FILE