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