3f80db31bb5e96730564273f3630410760259b80
[citadel.git] / webcit / scripts / get_ical_data.sh
1 #!/bin/sh
2 ICAL=/usr/local/ctdlsupport/include/libical/ical.h
3 if test -f /usr/include/libical/ical.h; then 
4     ICAL=/usr/include/libical/ical.h
5 fi
6
7 if test ! -f ${ICAL}; then 
8     echo "failed to locate libical headers - please install the libical development packages or heardes"
9     exit 500
10 fi
11
12 ICALTYPES="icalproperty_kind"\
13 " icalcomponent_kind"\
14 " icalrequeststatus"\
15 " ical_unknown_token_handling"\
16 " icalrecurrencetype_frequency"\
17 " icalrecurrencetype_weekday"\
18 " icalvalue_kind"\
19 " icalproperty_action"\
20 " icalproperty_carlevel"\
21 " icalproperty_class"\
22 " icalproperty_cmd"\
23 " icalproperty_method"\
24 " icalproperty_querylevel"\
25 " icalproperty_status"\
26 " icalproperty_transp"\
27 " icalproperty_xlicclass"\
28 " icalparameter_kind"\
29 " icalparameter_action"\
30 " icalparameter_cutype"\
31 " icalparameter_enable"\
32 " icalparameter_encoding"\
33 " icalparameter_fbtype"\
34 " icalparameter_local"\
35 " icalparameter_partstat"\
36 " icalparameter_range"\
37 " icalparameter_related"\
38 " icalparameter_reltype"\
39 " icalparameter_role"\
40 " icalparameter_rsvp"\
41 " icalparameter_value"\
42 " icalparameter_xliccomparetype"\
43 " icalparameter_xlicerrortype"\
44 " icalparser_state"\
45 " icalerrorenum"\
46 " icalerrorstate"\
47 " icalrestriction_kind"
48
49 (
50     printf '#include "webcit.h"\n\n\n'
51
52     for icaltype in $ICALTYPES; do 
53         printf "typedef struct _Ical_${icaltype} {\n"\
54 "       const char *Name;\n"\
55 "       long NameLen;\n"\
56 "       ${icaltype} map;\n"\
57 "} Ical_${icaltype};\n\n\n"
58
59     done
60
61     for icaltype in $ICALTYPES; do 
62         cat ./scripts/get_ical_data__template.sed | \
63             sed -e "s;__ICALTYPE__;$icaltype;g" > \
64             /tmp/get_ical_data.sed
65     
66         printf "Ical_${icaltype} ${icaltype}_map[] = {\n"
67         cat ${ICAL} |\
68 sed -e 's;/\*.*\*/;;' -e 's;\t;;g' |\
69 sed -nf /tmp/get_ical_data.sed |\
70 sed -e "s;.*typedef *enum *${icaltype} *{\(.*\)} ${icaltype} *\;.*;\1,;" \
71             -e 's;/\*.*\*/;;' \
72             -e 's;/;\n/\n;g' \
73             -e 's;,;,\n;g' \
74             -e 's; *;;g' \
75             -e 's;^t*;;g' \
76             -e 's;\=[0-9]*;;g'|\
77 sed -e 's;\(.*\),;{HKEY("\1"), \1},;'
78         printf '{"", 0, 0}\n};\n\n\n' 
79         
80     done
81
82
83     printf "void \nInitModule_ICAL_MAPS\n(void)\n{\n\tint i;\n"
84     for icaltype in $ICALTYPES; do 
85         printf "\tfor (i=0; ${icaltype}_map[i].NameLen > 0; i++)\n"\
86 "               RegisterTokenParamDefine (\n"\
87 "                       ${icaltype}_map[i].Name,\n"\
88 "                       ${icaltype}_map[i].NameLen,\n"\
89 "                       ${icaltype}_map[i].map);\n"\
90
91     done
92     printf "\n}\n\n"
93
94 ) > ical_maps.c