8ffd366327ef2134f6ab64cd2ba17e79c25524d3
[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 /usr/bin/printf "Scanning extension modules for entry points.\n"
28 /usr/bin/printf "This version of echo $ECHO supports $MINUS_e $MINUS_E.\n"
29
30
31 cat <<EOF  >$C_FILE
32
33 #start ofs the files which inturn removes any existing file
34 #
35 /*
36  * $C_FILE
37  * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE
38  */
39
40
41
42 #include "sysdep.h"
43 #include <stdlib.h>
44 #include <time.h>
45 #include <ctype.h>
46 #include <stdio.h>
47 #include "citadel.h"
48 #include "modules_init.h"
49 #include "sysdep_decls.h"
50
51
52 void LogPrintMessages(long err);
53 extern long DetailErrorFlags;
54
55
56
57 void initialise_modules (void)
58 {
59     long filter;
60     nSizErrmsg = 0;
61
62     lprintf (CTDL_INFO, "New citadel module init proceedure.\n");
63 EOF
64
65
66 #start the header file
67 cat <<EOF > $H_FILE
68 /* 
69  * $H_FILE
70  * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE
71  */
72
73
74 #ifndef MODULES_INIT_H
75 #define MODULES_INIT_H
76 #include "ctdl_module.h"
77 extern size_t nSizErrmsg;
78 void initialise_modules (void);
79
80 EOF
81
82 for i in serv_*.c
83 do
84         RES=X`grep CTDL_MODULE_INIT $i | cut -f2 -d\( | cut -f1 -d\)`
85         if [ $RES != "X" ] ; then
86                 RES_OUT=`echo $RES | cut -b2-`
87                 /usr/bin/printf "Found entry point in file $i\n"
88 cat <<EOF  >> $C_FILE
89         lprintf (CTDL_INFO, "%%s\n", CTDL_INIT_CALL($RES_OUT));
90
91 EOF
92 cat <<EOF >>$H_FILE
93 CTDL_MODULE_INIT($RES_OUT);
94 EOF
95         fi
96 done
97
98
99 if [ -d "modules" ] ; then
100         cd modules
101         for j in *
102         do
103                 if [ -d $j ] ; then
104                         cd $j
105                         for k in *.c
106                         do
107                                 if [ -f "$k" ] ; then
108                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
109                                         if [ $RES != "X" ] ; then
110                                                 RES_OUT=`echo $RES | cut -b2-`
111                                                 /usr/bin/printf "Found entry point in file modules/$j/$k\n"
112 cat <<EOF >> $C_FILE
113         lprintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL($RES_OUT));
114 EOF
115 cat <<EOF >> $H_FILE
116         CTDL_MODULE_INIT($RES_OUT);
117 EOF
118                                         fi
119                                 fi
120                         done
121                         cd ..
122                 fi
123         done
124 fi
125
126 cd $CUR_DIR
127
128 if [ -d "user_modules" ] ; then
129         cd user_modules
130         for j in *
131         do
132                 if [ -d $j ] ; then
133                         cd $j
134                         for k in *.c
135                         do
136                                 if [ -f "$k" ] ; then
137                                         RES=X`grep CTDL_MODULE_INIT $k | cut -f2 -d\( | cut -f1 -d\)`
138                                         if [ $RES != "X" ] ; then
139                                                 RES_OUT=`echo $RES | cut -b2-`
140                                                 /usr/bin/printf "Found entry point in file user_modules/$j/$k\n"
141 cat <<EOF >> $C_FILE
142         lprintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL($RES_OUT));
143 EOF
144 cat <<EOF >> $H_FILE
145 CTDL_MODULE_INIT($RES_OUT);
146 EOF
147                                         fi
148                                 fi
149                         done
150                         cd ..
151                 fi
152         done
153 fi
154
155 cd $CUR_DIR
156
157 /usr/bin/printf "\n\n" >> $C_FILE
158 /usr/bin/printf "\tfor (filter = 1; filter != 0; filter = filter << 1)\n" >> $C_FILE
159 /usr/bin/printf "\t\tif ((filter & DetailErrorFlags) != 0)\n" >> $C_FILE
160 /usr/bin/printf "\t\t\tLogPrintMessages(filter);\n" >> $C_FILE
161 /usr/bin/printf "}\n" >> $C_FILE
162
163
164 /usr/bin/printf "\n#endif /* MODULES_INIT_H */\n" >> $H_FILE