groupdav_delete.o groupdav_put.o http_datestring.o setup_wizard.o \
downloads.o addressbook_popup.o pushemail.o sysdep.o openid.o \
decode.o modules_init.o paramhandling.o utils.o \
+ ical_maps.o ical_subst.o \
$(LIBOBJS)
$(CC) $(LDFLAGS) $(LIBOBJS) $(LIBS) \
webserver.o context_loop.o cookie_conversion.o \
groupdav_options.o autocompletion.o tabs.o smtpqueue.o sieve.o \
groupdav_put.o http_datestring.o setup_wizard.o fmt_date.o modules_init.o \
gettext.o downloads.o addressbook_popup.o pushemail.o sysdep.o decode.o \
- paramhandling.o utils.o \
+ paramhandling.o utils.o ical_maps.o ical_subst.o \
-o webcit \
$(LIBS)
--- /dev/null
+#!/bin/sh
+
+(
+printf '#include "webcit.h"\n\n\nIcalEnumMap icalproperty_kind_map[] = {\n'
+cat /usr/include/libical/ical.h |\
+sed 's;/\*.*\*/;;' |\
+./get_ical_data.sed |\
+sed -e 's;.*icalproperty_kind {\(.*\)} icalproperty_kind.*;\1,;' \
+ -e 's;/\*.*\*/;;' \
+ -e 's;/;\n/\n;g' \
+ -e 's;,;,\n;g' \
+ -e 's; *;;g' \
+ -e 's;^t*;;g' \
+ -e 's;\=0;;g'|\
+sed -e 's;\(.*\),;{HKEY("\1"), \1},;'
+printf '{"", 0, 0}\n};\n'
+
+)>ical_maps.c
\ No newline at end of file
--- /dev/null
+#include "webcit.h"
+
+
+extern IcalEnumMap icalproperty_kind_map[];
+
+
+HashList *IcalComponentMap = NULL;
+
+void SortPregetMatter(HashList *Cals)
+{
+ disp_cal *Cal;
+ void *vCal;
+ const char *Key;
+ long KLen;
+ IcalEnumMap *SortMap[10];
+ IcalEnumMap *Map;
+ void *vSort;
+ const char *Next = NULL;
+ const StrBuf *SortVector;
+ StrBuf *SortBy;
+ int i = 0;
+ HashPos *It;
+
+ SortVector = SBSTR("ICALSortVec");
+ if (SortVector == NULL)
+ return;
+
+ for (i = 0; i < 10; i++) SortMap[i] = NULL;
+ SortBy = NewStrBuf();
+ while (StrBufExtract_NextToken(SortBy, SortVector, &Next, ':') > 0) {
+ GetHash(IcalComponentMap, SKEY(SortBy), &vSort);
+ Map = (IcalEnumMap*) vSort;
+ SortMap[i] = Map;
+ i++;
+ if (i > 9)
+ break;
+ }
+
+ if (i == 0)
+ return;
+
+ switch (SortMap[i - 1]->map) {
+ /// case
+
+ default:
+ break;
+ }
+
+
+ It = GetNewHashPos(Cals, 0);
+ while (GetNextHashPos(Cals, It, &KLen, &Key, &vCal)) {
+ i = 0;
+ Cal = (disp_cal*) vCal;
+ Cal->Status = icalcomponent_get_status(Cal->cal);
+ Cal->SortBy = Cal->cal;
+
+
+ while ((SortMap[i] != NULL) &&
+ (Cal->SortBy != NULL))
+ {
+ Cal->SortBy = icalcomponent_get_first_property(Cal->SortBy, SortMap[i++]->map);
+ }
+ }
+
+
+}
+
+
+void tmplput_ICalItem(StrBuf *Target, WCTemplputParams *TP)
+{
+
+}
+
+void CreateIcalComponendKindLookup(void)
+{
+ int i = 0;
+
+ IcalComponentMap = NewHash (1, NULL);
+ while (icalproperty_kind_map[i].NameLen != 0) {
+ RegisterNS(icalproperty_kind_map[i].Name,
+ icalproperty_kind_map[i].NameLen,
+ 0,
+ 10,
+ tmplput_ICalItem,
+ CTX_ICAL);
+ Put(IcalComponentMap,
+ icalproperty_kind_map[i].Name,
+ icalproperty_kind_map[i].NameLen,
+ &icalproperty_kind_map[i],
+ reference_free_handler);
+
+
+ i++;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+InitModule_ICAL_SUBST
+(void)
+{
+ CreateIcalComponendKindLookup ();
+
+}