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