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