aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libical/ChangeLog8
-rw-r--r--libical/src/libicalss/icalcsdb.h67
-rw-r--r--libical/src/libicalss/icalcstp.h138
-rw-r--r--libical/test-data/stresstest.ics178
4 files changed, 391 insertions, 0 deletions
diff --git a/libical/ChangeLog b/libical/ChangeLog
index b256f7641a..45d222ada8 100644
--- a/libical/ChangeLog
+++ b/libical/ChangeLog
@@ -1,3 +1,11 @@
+2000-09-12 JP Rosevear <jpr@helixcode.com>
+
+ * test-data/stresstest.ics: Merge missing file for distcheck
+
+ * src/libicalss/icalcstp.h: ditto
+
+ * src/libicalss/icalcsdb.h: ditto
+
2000-09-08 JP Rosevear <jpr@helixcode.com>
* src/libical/icaltime.c (icaltime_compare_date_only): New
diff --git a/libical/src/libicalss/icalcsdb.h b/libical/src/libicalss/icalcsdb.h
new file mode 100644
index 0000000000..4619b94fd0
--- /dev/null
+++ b/libical/src/libicalss/icalcsdb.h
@@ -0,0 +1,67 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+ FILE: icalcsdb.h Calendar Server Database
+ CREATOR: eric 23 December 1999
+
+
+ $Id$
+ $Locker$
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either:
+
+ The LGPL as published by the Free Software Foundation, version
+ 2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+ Or:
+
+ The Mozilla Public License Version 1.0. You may obtain a copy of
+ the License at http://www.mozilla.org/MPL/
+
+
+======================================================================*/
+
+#ifndef ICALCSDB_H
+#define ICALCSDB_H
+
+#include "ical.h"
+
+typedef void icalcsdb;
+
+icalcsdb* icalcsdb_new(char* path);
+
+void icalcsdb_free(icalcsdb* csdb);
+
+icalerrorenum icalcsdb_create(icalcsdb* db, char* calid);
+
+icalerrorenum icalcsdb_delete(icalcsdb* db, char* calid);
+
+icalerrorenum icalcsdb_move(icalcsdb* db, char* oldcalid, char* newcalid);
+
+icalerrorenum icalcsdb_noop(icalcsdb* db);
+
+char* icalcsdb_generateuid(icalcsdb* db);
+
+icalcomponent* icalcsdb_expand_upn(icalcsdb* db, char* upn);
+icalcomponent* icalcsdb_expand_calid(icalcsdb* db, char* calid);
+
+icalerrorenum icalcsbd_senddata(icalcsdb* db, icalcomponent* comp);
+
+icalset* icalcsdb_get_calendar(icalcsdb* db, char* calid,
+ icalcomponent *gauge);
+
+icalset* icalcsdb_get_vcars(icalcsdb* db);
+
+icalset* icalcsdb_get_properties(icalcsdb* db);
+
+icalset* icalcsdb_get_capabilities(icalcsdb* db);
+
+icalset* icalcsdb_get_timezones(icalcsdb* db);
+
+
+#endif /* !ICALCSDB_H */
+
+
+
diff --git a/libical/src/libicalss/icalcstp.h b/libical/src/libicalss/icalcstp.h
new file mode 100644
index 0000000000..fea6c89616
--- /dev/null
+++ b/libical/src/libicalss/icalcstp.h
@@ -0,0 +1,138 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+ FILE: icalcstp.h
+ CREATOR: eric 20 April 1999
+
+ $Id$
+
+
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either:
+
+ The LGPL as published by the Free Software Foundation, version
+ 2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+ Or:
+
+ The Mozilla Public License Version 1.0. You may obtain a copy of
+ the License at http://www.mozilla.org/MPL/
+
+ The original code is icalcstp.h
+
+======================================================================*/
+
+
+#ifndef ICALCSTP_H
+#define ICALCSTP_H
+
+#include "ical.h"
+
+typedef void* icalcstp;
+
+typedef struct icalcstp_stubs;
+
+icalcstp* icalcstp_new(icalcstp_stubs* stubs,
+ int incoming, int outgoing);
+
+void* icalcstp_free(icalcstp* cstp);
+
+/* Send or recieve data directly to/from the network. These calls are
+ needed for the AUTHENTICATE command and possibly others */
+ssize_t icalcstp_send(icalcstp* cstp, char* msg);
+ssize_t icalcstp_recieve(icalcstp* cstp, char* msg);
+
+int icalcstp_set_timeout(icalcstp* cstp, int sec);
+
+typedef struct icalcstp_response {
+ icalrequeststatus code
+ char *arg; /* These strings are owned by libical */
+ char *debug_text;
+ char *more_text;
+ void* result;
+} icalcstp_response;
+
+
+/********************** Server (Reciever) Interfaces *************************/
+
+/* On the server side, the caller will recieve data from the incoming
+ socket and pass it to icalcstp_process_incoming. The caller then
+ takes the return from _process_incoming and sends it out through
+ the socket. This gives the caller a point of control. If the cstp
+ code connected to the socket itself, it would be hard for the
+ caller to do anything else after the cstp code was started.
+
+ However, some commands will use the sockets directly, though the
+ _send and _recieve routines. Example is Authenticate and Starttls,
+ which need several exchanges of data
+
+ All of the server abd client command routines will generate
+ response codes. On the server side, these responses will be turned
+ into text and sent to the client. On the client side, the reponse
+ is the one sent from the server.
+
+ Since each command can return multiple responses, the responses are
+ stored in the icalcstp object and are accesses by
+ icalcstp_first_response() and icalcstp_next_response()
+
+*/
+
+
+
+/* Process a single line of incomming data */
+char* icalcstp_process_incoming(icalcstp* cstp, char* string);
+
+/* Er, they aren't really stubs, but pointers to the rountines that
+ icalcstp_process_incoming will call when it recognizes a CSTP
+ command in the data. BTW, the CONTINUE command is named 'cont'
+ because 'continue' is a C keyword */
+
+struct icalcstp_server_stubs {
+ icalerrorenum (*abort)(icalcstp* cstp);
+ icalerrorenum (*authenticate)(icalcstp* cstp, char* mechanism,
+ char* data);
+ icalerrorenum (*calidexpand)(icalcstp* cstp, char* calid);
+ icalerrorenum (*capability)(icalcstp* cstp);
+ icalerrorenum (*cont)(icalcstp* cstp, unsigned int time);
+ icalerrorenum (*identify)(icalcstp* cstp, char* id);
+ icalerrorenum (*disconnect)(icalcstp* cstp);
+ icalerrorenum (*sendata)(icalcstp* cstp, unsigned int time,
+ icalcomponent *comp);
+ icalerrorenum (*starttls)(icalcstp* cstp, char* command,
+ char* data);
+ icalerrorenum (*upnexpand)(icalcstp* cstp, char* upn);
+ icalerrorenum (*unknown)(icalcstp* cstp, char* command, char* data);
+}
+
+/********************** Client (Sender) Interfaces **************************/
+
+/* On the client side, the cstp code is connected directly to the
+ socket, because the callers point of control is at the interfaces
+ below. */
+
+icalerrorenum icalcstp_abort(icalcstp* cstp);
+icalerrorenum icalcstp_authenticate(icalcstp* cstp, char* mechanism,
+ char* data);
+icalerrorenum icalcstp_capability(icalcstp* cstp);
+icalerrorenum icalcstp_calidexpand(icalcstp* cstp,char* calid);
+icalerrorenum icalcstp_continue(icalcstp* cstp, unsigned int time);
+icalerrorenum icalcstp_disconnect(icalcstp* cstp);
+icalerrorenum icalcstp_identify(icalcstp* cstp, char* id);
+icalerrorenum icalcstp_starttls(icalcstp* cstp, char* command,
+ char* data);
+icalerrorenum icalcstp_senddata(icalcstp* cstp, unsigned int time,
+ icalcomponent *comp);
+icalerrorenum icalcstp_upnexpand(icalcstp* cstp,char* calid);
+icalerrorenum icalcstp_sendata(icalcstp* cstp, unsigned int time,
+ icalcomponent *comp);
+
+icalcstp_response icalcstp_first_response(icalcstp* cstp);
+icalcstp_response icalcstp_next_response(icalcstp* cstp);
+
+
+
+#endif /* !ICALCSTP_H */
+
+
+
diff --git a/libical/test-data/stresstest.ics b/libical/test-data/stresstest.ics
new file mode 100644
index 0000000000..f64cf6bbc9
--- /dev/null
+++ b/libical/test-data/stresstest.ics
@@ -0,0 +1,178 @@
+BEGIN:VCALENDAR
+ACTION:AUDIO
+ACTION:
+ACTION:~!@#$%^&*()_+}{:"<>?/.,
+ATTACH:ftp://ftp.example.com/~pub%eof/ed/minutes100197.txt
+ATTACH:http://www.dukes.com/
+ATTENDEE:MAILTO:john_doe@host.com
+ATTENDEE:;john_public@host2.com
+ATTENDEE:MAILTO:john_public@host2.com
+ATTENDEE:Mailto:B@example.com
+ATTENDEE;PARTSTAT=ACCEPTED;PARTSTAT=DECLINED:Mailto:B@example.com
+ATTENDEE;PARTSTAT=*&^*&:Mailto:B@example.com
+ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
+ATTENDEE;ROLE=ATTENDEE:Mailto:A@example.com
+ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com
+ATTENDEE;ROLE=NONPARTICIPANT;RSVP=NO:Mailto:E@example.com
+ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
+ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@example.com
+CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION;ANNIVERSARY,PERSONAL,SPECIAL OCCASION;ANNIVERSARY,PERSONAL,SPECIAL OCCASION;
+CATEGORIES;RSVP=TRUE;RSVP=FALSE:one,two
+CLASS:PUBLIC
+COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR
+ DUKES forfeit the game
+ I'll send you my input by e-mail
+ May we bump this by an hour? I have a conflict
+ Mr. B cannot attend. It's raining. Lets cancel.
+Sorry, I cannot change this meeting time
+Sorry, I will be out of town at that time.
+This iCalendar file contains busy time information for
+COMMENT:This time works much better and I think the big conference
+COMMENT:You're off the hook for this meeting
+CREATED:19980309T130000Z
+CREATED:19980309T130000
+CREATED:19980309T13000
+CREATED:19980309T1300
+CREATED:19980309T130
+CREATED:19980309T13
+CREATED:19980309T1
+CREATED:19980309T
+CREATED:19980309
+CREATED:1998030
+CREATED:199803
+CREATED:19980
+CREATED:1998
+CREATED:199
+CREATED:19
+CREATED:1
+CREATED:
+DTSTAMP:9999999T9999999X
+DTSTART:T103012
+DTSTART;VALUE=DATE:19970317
+DTSTART;VALUE=TIME:19970714
+DUE:19980415T235959
+DUE:19980415T235959
+DURATION:P15DT5H0M20S
+DURATION:P7W7W8w
+DURATION:PT15M
+DURATION:PT1H
+FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M,19980101T180000Z/19980101T190000Z,19980103T020000Z/19980103T050000Z,19980107T020000Z/19980107T050000Z
+FREEBUSY:19980318T030000Z/19980318T040000Z
+FREEBUSY:19980318T030000Z/19980318T040000
+FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
+LOCATION;VALUE=URI:http://www.midwaystadium.com/
+METHOD:ADD
+METHOD:DESTROY
+METHOD:xyz
+METHOD:X-LIC-METHOD
+PERCENT-COMPLETE:40
+PERCENT-COMPLETE:.75
+PERCENT-COMPLETE:0
+PRIORITY:1
+PRIORITY:2
+PRIORITY:134645983456666098345624598726459872445897345987
+PRODID:"-//RDU Software//NONSGML HandCal//EN"
+PRODID:'-//ABC Corporation//NONSGML '
+PRODID:-//ABC Corporation;foo//NONSGML My Product//EN
+RDATE:19970406T020000
+RDATE:19971026T020000
+RDATE:19980304T180000Z
+RDATE:19980304T180000Z
+RDATE:19980311T160000Z
+RDATE:19980311T180000Z
+RDATE:19980315T180000Z
+RDATE:19980318T180000Z
+RDATE:19981025T020000
+RDATE:19981025T020000
+RDATE:19990404T020000
+RDATE:19990404T020000
+RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z
+RECURRENCE-ID:19970701T210000Z
+RECURRENCE-ID:19970715T210000Z
+RECURRENCE-ID:19970801T210000Z
+RECURRENCE-ID:19970809T210000Z
+RECURRENCE-ID:19980101T170000Z
+RECURRENCE-ID:19980311T160000Z
+RECURRENCE-ID:19980311T180000Z
+RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z
+RELATED-TO:0981234-1234234-14@example.com
+RELATED-TO:0981234-1234234-2402-35@example.com
+REPEAT:2
+REPEAT:23
+REPEAT:4
+REPEAT:4
+REPEAT:4
+REQUEST-STATUS:2.0;Success
+REQUEST-STATUS:2.0;Success
+REQUEST-STATUS:2.0;Success
+REQUEST-STATUS:2.0;Success
+REQUEST-STATUS:2.0;Success
+REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single
+REQUEST-STATUS:3.0;Invalid Property Name;FOO
+RESOURCES:SCOREBOARD
+RRULE:FREQ=MONTHLY;BYMONTHDAY=1
+RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
+RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
+RRULE:FREQ=WEEKLY
+RRULE:FREQ=WEEKLY
+RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU
+RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU
+RRULE:FREQ=YEARLY
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+RRULE:WKST=SU;BYDAY=TH;FREQ=WEEKLY
+RRULE:WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY
+SCALE:GREGORIAN
+SEQUENCE:0
+SEQUENCE:.03486
+SEQUENCE:dflkjhfg
+SEQUENCE:
+SEQUENCE:7
+STATUS:CANCELLED
+STATUS:NEEDS-ACTION
+STATUS:Needs Action
+SUMMARY: Bastille Day
+SUMMARY:"No Property"
+SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING ***
+SUMMARY:1996 Income Tax Preparation
+SUMMARY:Annual Employee Review
+SUMMARY:Bastille Day Party
+SUMMARY:Calendaring Interoperability Planning Meeting
+SUMMARY:Calendaring Interoperability Planning Meeting
+SUMMARY;RSVP=TRUE;RSVP=FALSE:Calendaring Interoperability Planning Meeting
+TRANSP:TRANSPARENT
+TRIGGER:-P2D
+TRIGGER:-PT2H
+TRIGGER:-PT30M
+TRIGGER:-PT30M
+TRIGGER;VALUE=DATE-TIME:19970317T133000Z
+TRIGGER;VALUE=DATE-TIME:19980101T050000Z
+TRIGGER;VALUE=DATE-TIME:19980403T120000
+TRIGGER;VALUE=DATE-TIME:19980403T120000Z
+TZID:America-Chicago
+TZID:America-SanJose
+TZNAME:PST
+TZOFFSETFROM:-0600
+TZOFFSETFROM:0700
+TZOFFSETFROM:4.56
+TZURL:http://zones.stds_r_us.net/tz/America-Chicago
+TZURL:http://zones.stds_r_us.net/tz/America-SanJose
+TZURL:http://zones.stds_r_us.net/tz/US-Eastern
+UID:uid5@host1.com
+URL:http://www.host.com/calendar/busytime/jsmith.ifb
+VERSION:2.0
+VERSION:.0
+VERSION:2.0.0.0
+X-SKI-TITLE;RSVP=TRUE: This is an extension property
+END:VCALENDAR \ No newline at end of file