diff options
author | Edwin Groothuis <edwin@FreeBSD.org> | 2003-02-04 05:17:34 +0000 |
---|---|---|
committer | Edwin Groothuis <edwin@FreeBSD.org> | 2003-02-04 05:17:34 +0000 |
commit | 80fc392c0907bdbc2b0dc3e58797a6a3c66804e1 (patch) | |
tree | b5268ad9d665bddd7e2758d436d8da5afe39c445 /misc/libmcal | |
parent | af420be82bff27cffa084f6833a4cbfb2e94e898 (diff) | |
download | ports-80fc392c0907bdbc2b0dc3e58797a6a3c66804e1.tar.gz ports-80fc392c0907bdbc2b0dc3e58797a6a3c66804e1.zip |
Notes
Diffstat (limited to 'misc/libmcal')
-rw-r--r-- | misc/libmcal/files/patch-ad | 17 | ||||
-rw-r--r-- | misc/libmcal/files/patch-ae | 73 | ||||
-rw-r--r-- | misc/libmcal/files/patch-af | 65 | ||||
-rw-r--r-- | misc/libmcal/files/patch-ag | 121 | ||||
-rw-r--r-- | misc/libmcal/files/patch-ah | 25 | ||||
-rw-r--r-- | misc/libmcal/files/patch-ai | 88 | ||||
-rw-r--r-- | misc/libmcal/files/patch-aj | 193 | ||||
-rw-r--r-- | misc/libmcal/files/patch-ak | 106 | ||||
-rw-r--r-- | misc/libmcal/files/patch-al | 587 |
9 files changed, 0 insertions, 1275 deletions
diff --git a/misc/libmcal/files/patch-ad b/misc/libmcal/files/patch-ad deleted file mode 100644 index 5ece66b2d1e6..000000000000 --- a/misc/libmcal/files/patch-ad +++ /dev/null @@ -1,17 +0,0 @@ ---- bool.h.orig Thu Dec 2 09:01:39 1999 -+++ bool.h Wed Jun 28 00:17:14 2000 -@@ -1,4 +1,4 @@ --/* $Id: bool.h,v 1.1.1.1 1999/12/02 08:01:39 zircote Exp $ -+/* $Id: bool.h,v 1.2 2000/06/27 22:17:14 askalski Exp $ - * - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski -@@ -32,7 +32,7 @@ - #ifndef _BOOL_H - #define _BOOL_H - --#ifndef __cplusplus__ -+#ifndef __cplusplus - typedef enum { false, true } bool; - #endif - diff --git a/misc/libmcal/files/patch-ae b/misc/libmcal/files/patch-ae deleted file mode 100644 index c9b5de5b647e..000000000000 --- a/misc/libmcal/files/patch-ae +++ /dev/null @@ -1,73 +0,0 @@ ---- datetime.c.orig Sat Mar 11 03:14:42 2000 -+++ datetime.c Thu May 11 21:43:23 2000 -@@ -1,5 +1,5 @@ - /* -- * $Id: datetime.c,v 1.2 2000/03/11 02:14:42 chuck Exp $ -+ * $Id: datetime.c,v 1.3 2000/05/11 19:43:23 inan Exp $ - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski - * -@@ -280,8 +280,37 @@ - { - return dt_dayofepoch(dt) % 7; - } -- -- -+/* -+char* -+dt_dayofweekstr(const datetime_t *dt) -+{ -+ char output[3]; -+ switch (dt_dayofepoch(dt) % 7) { -+ case 0: -+ strcpy (output, "SU"); -+ break; -+ case 1: -+ strcpy (output, "MO"); -+ break; -+ case 2: -+ strcpy (output, "TU"); -+ break; -+ case 3: -+ strcpy (output, "WE"); -+ break; -+ case 4: -+ strcpy (output, "TH"); -+ break; -+ case 5: -+ strcpy (output, "FR"); -+ break; -+ case 6: -+ strcpy (output, "SA"); -+ break; -+ } -+ return output; -+} -+*/ - int - dt_dayofepoch(const datetime_t *dt) - { -@@ -460,3 +489,23 @@ - } - return w; - } -+ -+int -+dt_orderofmonth( const datetime_t *dt, const direction_t direction) -+{ -+ datetime_t temp_dt = DT_INIT; -+ int temp_int; -+ -+ switch (direction) { -+ case DT_FORWARD: -+ dt_setnthwday(&temp_dt, dt->year, dt->mon, 1, dt_dayofweek(dt) ); -+ temp_int = (dt->mday - temp_dt.mday)/7; -+ temp_int ++; //start count at 1, not zero -+ break; -+ case DT_BACKWARD: -+ // not built -+ return false; -+ } -+ return temp_int; -+} -+ diff --git a/misc/libmcal/files/patch-af b/misc/libmcal/files/patch-af deleted file mode 100644 index 6fab309d4a87..000000000000 --- a/misc/libmcal/files/patch-af +++ /dev/null @@ -1,65 +0,0 @@ ---- datetime.h.orig Sat Mar 11 03:14:43 2000 -+++ datetime.h Fri Mar 16 20:27:14 2001 -@@ -1,5 +1,5 @@ - /* -- * $Id: datetime.h,v 1.2 2000/03/11 02:14:43 chuck Exp $ -+ * $Id: datetime.h,v 1.4 2001/03/16 19:27:14 chuck Exp $ - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski - * -@@ -26,7 +26,7 @@ - * Andrew Skalski - * askalski@chek.com - * -- * mcal@lists.chek.com -+ * libmcal-users@lists.sourceforge.net - */ - - #ifndef _DATETIME_H -@@ -66,6 +66,11 @@ - DECEMBER - } month_t; - -+typedef enum { -+ DT_FORWARD, -+ DT_BACKWARD -+} direction_t; -+ - /** - * struct datetime - * -@@ -178,11 +183,34 @@ - /* Returns the week number for d=day, m=month, y=year */ - int dt_weekofyear(int d, int m, int y); - -+/* Returns the week number in the given month counting in the given direction */ -+int dt_orderofmonth( const datetime_t *dt, const direction_t direction); -+ - /* convenience macros to get the first/last days of a week */ - #define dt_startofweek(dt, ref, weekstart) \ - dt_setweekof((dt), (ref), (weekstart), (weekstart)) - #define dt_endofweek(dt, ref, weekstart) \ - dt_setweekof((dt), (ref), (weekstart), (7+(weekstart)-1)%7) -+#define dt_dayofweekstr(dayno) \ -+ (dayno) >= 4 ? \ -+ (dayno) = 6 ? \ -+ "SA" : \ -+ (dayno) = 5 ? \ -+ "FR" : \ -+ "TH" \ -+ ; \ -+ ;: \ -+ (dayno) >= 2 ? \ -+ (dayno) = 3 ? \ -+ "WE" : \ -+ "TU" \ -+ ;: \ -+ (dayno) = 1 ? \ -+ "MO" : \ -+ "SU" \ -+ ; \ -+ ; \ -+ - - /**********************************/ - diff --git a/misc/libmcal/files/patch-ag b/misc/libmcal/files/patch-ag deleted file mode 100644 index f73288c5191c..000000000000 --- a/misc/libmcal/files/patch-ag +++ /dev/null @@ -1,121 +0,0 @@ ---- icalroutines.c.orig Tue Jan 25 04:08:10 2000 -+++ icalroutines.c Sun Jan 20 13:21:22 2002 -@@ -1,5 +1,5 @@ - /* -- * #$Id: icalroutines.c,v 1.1 2000/01/25 03:08:10 markie Exp $ -+ * #$Id: icalroutines.c,v 1.3 2001/12/10 03:16:41 chuck Exp $ - * - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski -@@ -593,4 +593,111 @@ - } - putc(pad, out); - } -+} -+ -+#define MAX(a,b) (a)>(b) ? (a) :(b) -+void -+ical_set_byday ( char *output, const byday_t *input ) { -+ int i; -+ char temp_string[50]; -+ -+ strcpy (output, ""); -+ -+ for (i=0; i<=6; i++) { -+ /* wdays is a bit field corresponding to days of the week */ -+ if ((input->weekdays) & (0x1 <<i) ) { -+ if (input->ordwk[i] != 0) { -+ sprintf( temp_string, "%d", input->ordwk[i] ); -+ strcat ( output, temp_string ); -+ } -+ switch (i) { -+ case 0: -+ strcat ( output, "SU, "); -+ break; -+ case 1: -+ strcat ( output, "MO, "); -+ break; -+ case 2: -+ strcat ( output, "TU, "); -+ break; -+ case 3: -+ strcat ( output, "WE, "); -+ break; -+ case 4: -+ strcat ( output, "TH, "); -+ break; -+ case 5: -+ strcat ( output, "FR, "); -+ break; -+ case 6: -+ strcat ( output, "SA, "); -+ break; -+ } -+ } -+ } -+ output[MAX(strlen(output)-2,0)] = '\0'; -+ -+} -+#undef MAX -+ -+void -+ical_get_byday ( byday_t *output, const char *input ) { -+ char *temp_string; -+ char *token; -+ char *day_start; -+ int interval; -+ int day_index; -+ temp_string = strdup(input); -+ -+ token = strtok (temp_string, ","); -+ while ( token != NULL ) { -+ day_start = token + strlen(token) - 2; -+ if (strcasecmp (day_start, "SU")==0) { -+ output->weekdays |= M_SUNDAY; -+ day_index = 0; -+ } else if (strcasecmp (day_start, "MO")==0) { -+ output->weekdays |= M_MONDAY; -+ day_index = 1; -+ } else if (strcasecmp (day_start, "TU")==0) { -+ output->weekdays |= M_TUESDAY; -+ day_index = 2; -+ } else if (strcasecmp (day_start, "WE")==0) { -+ output->weekdays |= M_WEDNESDAY; -+ day_index = 3; -+ } else if (strcasecmp (day_start, "TH")==0) { -+ output->weekdays |= M_THURSDAY; -+ day_index = 4; -+ } else if (strcasecmp (day_start, "FR")==0) { -+ output->weekdays |= M_FRIDAY; -+ day_index = 5; -+ } else if (strcasecmp (day_start, "SA")==0) { -+ output->weekdays |= M_SATURDAY; -+ day_index = 6; -+ } -+ *day_start = '\0'; -+ interval = atoi (token); -+ output->ordwk[day_index] = interval; -+ } -+ -+ free( token ); -+ free( temp_string ); -+} -+ -+void -+ical_get_recur_freq( recur_t *output, const char *input, const char *byday) { -+ if (strncmp (input, "D",1)==0) { -+ *output = RECUR_DAILY; -+ } else if (strncmp (input, "W",1)==0) { -+ *output = RECUR_WEEKLY; -+ } else if (strncmp (input, "M",1)==0) { -+ if (strlen(byday) == 0) { -+ *output = RECUR_MONTHLY_MDAY; -+ } else { -+ *output = RECUR_MONTHLY_WDAY; -+ } -+ } else if (strncmp (input, "Y",1)==0) { -+ *output = RECUR_YEARLY; -+ } else { -+ *output = RECUR_NONE; -+ } - } diff --git a/misc/libmcal/files/patch-ah b/misc/libmcal/files/patch-ah deleted file mode 100644 index ef9e8eb686c9..000000000000 --- a/misc/libmcal/files/patch-ah +++ /dev/null @@ -1,25 +0,0 @@ ---- icalroutines.h.orig Tue Jan 25 04:08:10 2000 -+++ icalroutines.h Thu May 11 21:43:23 2000 -@@ -1,5 +1,5 @@ - /* -- * #$Id: icalroutines.h,v 1.1 2000/01/25 03:08:10 markie Exp $ -+ * #$Id: icalroutines.h,v 1.2 2000/05/11 19:43:23 inan Exp $ - * - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski -@@ -70,5 +70,15 @@ - const unsigned char *buf, - size_t size); - -+/* ICAL formatting. */ -+#define BYDAY_INIT {0, {0,0,0,0,0,0,0}} -+typedef struct { -+ unsigned int weekdays; -+ int ordwk[7]; -+} byday_t; -+ -+void ical_set_byday(char *output, const byday_t *input); -+void ical_get_byday(byday_t *output, const char *input); -+void ical_get_recur_freq( recur_t *output, const char *input, const char *byday); - - #endif diff --git a/misc/libmcal/files/patch-ai b/misc/libmcal/files/patch-ai deleted file mode 100644 index c1d91d33bdcb..000000000000 --- a/misc/libmcal/files/patch-ai +++ /dev/null @@ -1,88 +0,0 @@ ---- icap/icap.c.orig Mon Mar 27 06:12:33 2000 -+++ icap/icap.c Fri Jul 7 17:16:18 2000 -@@ -2,7 +2,7 @@ - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski - * -- * #$Id: icap.c,v 1.1.1.1 1999/12/02 08:02:27 zircote Exp $ -+ * #$Id: icap.c,v 1.4 2000/07/07 15:16:18 markie Exp $ - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public -@@ -36,7 +36,7 @@ - #include "icaproutines.h" - - --#define ICAP_VAR "0.3" -+#define ICAP_VAR "0.2" - /** ICAP Driver **/ - #define DATA_T struct icap_data - #define DATA ((DATA_T*) stream->data) -@@ -49,6 +49,7 @@ - const CALADDR *addr, long options); - static CALSTREAM* icap_close(CALSTREAM *stream, long options); - static bool icap_ping(CALSTREAM *stream); -+static bool icap_create(CALSTREAM *stream, const char *calendar); - static bool icap_search_range( CALSTREAM *stream, - const datetime_t *start, - const datetime_t *end); -@@ -72,6 +73,7 @@ - icap_open, - icap_close, - icap_ping, -+ icap_create, - icap_search_range, - icap_search_alarm, - icap_fetch, -@@ -243,6 +245,13 @@ - - - bool -+icap_create(CALSTREAM *stream, const char *calendar) -+{ -+ return false; -+} -+ -+ -+bool - icap_search_range( CALSTREAM *stream, - const datetime_t *start, - const datetime_t *end) -@@ -258,12 +267,12 @@ - - endq = query; - if (start && dt_hasdate(start)) { -- endq += sprintf(endq, " ICAL DTSTART>=%04u%02u%02u", -- start->year, start->mon, start->mday); -+ endq += sprintf(endq, " ICAL DTSTART > %04u%02u%02u", -+ start->year, start->mon, start->mday-1); - } - if (end && dt_hasdate(end)) { -- endq += sprintf(endq, " ICAL DTSTART<=%04u%02u%02u", -- end->year, end->mon, end->mday); -+ endq += sprintf(endq, " ICAL DTSTART < %04u%02u%02u", -+ end->year, end->mon, end->mday+1); - } - if (endq == query) - strcpy(query, " ALL"); -@@ -288,7 +297,7 @@ - if (dt_empty(when)) - return false; - -- sprintf(query, "UID SEARCH ALARMING %04u%02u%02uT%02u%02u%02uZ", -+ sprintf(query, "UID SEARCH COMPONENT VALARM ICAL DTSTART = %04u%02u%02uT%02u%02u%02uZ", - when->year, when->mon, when->mday, - when->hour, when->min, when->sec); - -@@ -373,9 +382,9 @@ - { - char query[1024]; - -- if (!icap_begin(DATA->net, "UID REMOVE ")) -+ if (!icap_begin(DATA->net, "UID STORE ")) - return false; -- sprintf(query, "%lu", id); -+ sprintf(query, "%lu +FLAGS \\Deleted", id); - if (!icap_opaque(DATA->net, query)) - return false; - if (icap_end(DATA->net) != ICAP_OK) diff --git a/misc/libmcal/files/patch-aj b/misc/libmcal/files/patch-aj deleted file mode 100644 index 6ecc29e8dbde..000000000000 --- a/misc/libmcal/files/patch-aj +++ /dev/null @@ -1,193 +0,0 @@ ---- mcal.c.orig Sun Feb 27 06:01:54 2000 -+++ mcal.c Sun Jan 20 13:13:15 2002 -@@ -1,5 +1,5 @@ - /* -- * $Id: mcal.c,v 1.6 2000/02/27 05:01:54 inan Exp $ -+ * $Id: mcal.c,v 1.10 2001/12/10 03:16:41 chuck Exp $ - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski - * -@@ -174,7 +174,7 @@ - /* size-count and sanity-check all fields */ - if (addr->host) { - /* sanity: host contains neither '/' nor '}' */ -- if (strchr(addr->host, '}') || strchr(addr->host, '/')) -+ if (strpbrk(addr->host, "}/")) - return NULL; - size += strlen(addr->host) + 2; - -@@ -318,10 +318,33 @@ - } - - -+bool -+calevent_valid(const CALEVENT *event) -+{ -+ int n = 0; -+ -+ /* both must have date field set */ -+ if (!dt_hasdate(&event->start) || !dt_hasdate(&event->end)) -+ return false; -+ -+ /* either none or both may have time field set */ -+ if (dt_hastime(&event->start)) n++; -+ if (dt_hastime(&event->end)) n++; -+ if (n == 1) -+ return false; -+ -+ /* start must precede end */ -+ if (dt_compare(&event->start, &event->end) > 0) -+ return false; -+ -+ return true; -+} -+ -+ - const char* --calevent_getattr(CALEVENT *event, const char *name) -+calevent_getattr(const CALEVENT *event, const char *name) - { -- CALATTR *attr; -+ const CALATTR *attr; - - for (attr = event->attrlist; attr; attr = attr->next) - if (!strcasecmp(attr->name, name)) -@@ -694,7 +717,7 @@ - int wday; - - -- nth = estart.mday / 7 + 1; -+ nth = (estart.mday - 1) / 7 + 1; - wday = dt_dayofweek(&estart); - - /* adjust estart to be the first candidate */ -@@ -750,6 +773,18 @@ - return false; - } - -+bool -+cal_create(CALSTREAM *stream,const char *calendar) { -+ bool output; -+ -+ if (stream == NULL) { -+ output = false; -+ } else { -+ output = stream->driver->create(stream, calendar); -+ } -+ -+ return output; -+} - - bool - cal_valid(const char *address) -@@ -880,6 +915,8 @@ - { - if (stream == NULL || stream->dead) - return false; -+ if (!calevent_valid(event)) -+ return false; - return stream->driver->append(stream, addr, id, event); - } - -@@ -944,12 +981,31 @@ - return good; - } - -+ -+bool -+cal_delete(CALSTREAM *stream, char *calendar) -+{ -+ if (stream == NULL || stream->dead) -+ return false; -+ return stream->driver->delete(stream, calendar); -+} -+ -+bool -+cal_rename(CALSTREAM *stream, char *src,char *dest) -+{ -+ if (stream == NULL || stream->dead) -+ return false; -+ return stream->driver->rename(stream, src,dest); -+} -+ -+ - /** Dummy Driver **/ - static bool dummy_valid(const CALADDR *addr); - static CALSTREAM* dummy_open( CALSTREAM *stream, - const CALADDR *addr, long options); - static CALSTREAM* dummy_close(CALSTREAM *stream, long options); - static bool dummy_ping(CALSTREAM *stream); -+static bool dummy_create(CALSTREAM *stream, const char *calendar); - static bool dummy_search_range( CALSTREAM *stream, - const datetime_t *start, - const datetime_t *end); -@@ -966,6 +1022,13 @@ - unsigned long id); - static bool dummy_snooze( CALSTREAM *stream, - unsigned long id); -+static bool dummy_store( CALSTREAM *stream, -+ const CALEVENT *event); -+static bool dummy_delete( CALSTREAM *stream, -+ char *calendar); -+ -+static bool dummy_rename( CALSTREAM *stream, -+ char *src,char *dest); - - const CALDRIVER dummy_driver = - { -@@ -973,12 +1036,17 @@ - dummy_open, - dummy_close, - dummy_ping, -+ dummy_create, - dummy_search_range, - dummy_search_alarm, - dummy_fetch, - dummy_append, - dummy_remove, - dummy_snooze, -+ dummy_store, -+ dummy_delete, -+ dummy_rename, -+ - }; - - -@@ -1011,6 +1079,12 @@ - return false; - } - -+bool -+dummy_create(CALSTREAM *stream, const char *calendar) -+{ -+ return false; -+} -+ - - bool - dummy_search_range( CALSTREAM *stream, -@@ -1052,6 +1126,24 @@ - - bool - dummy_snooze(CALSTREAM *stream, unsigned long id) -+{ -+ return false; -+} -+ -+bool -+dummy_store(CALSTREAM *stream, const CALEVENT *event) -+{ -+ return false; -+} -+ -+bool -+dummy_delete(CALSTREAM *stream, char *calendar) -+{ -+ return false; -+} -+ -+bool -+dummy_rename(CALSTREAM *stream, char *src,char *dest) - { - return false; - } diff --git a/misc/libmcal/files/patch-ak b/misc/libmcal/files/patch-ak deleted file mode 100644 index 5c84c5ada01d..000000000000 --- a/misc/libmcal/files/patch-ak +++ /dev/null @@ -1,106 +0,0 @@ ---- mcal.h.orig Mon Mar 27 06:00:33 2000 -+++ mcal.h Tue Jan 9 04:26:48 2001 -@@ -1,5 +1,6 @@ -+ - /* -- * $Id: mcal.h,v 1.6 2000/03/27 04:00:33 zircote Exp $ -+ * $Id: mcal.h,v 1.10 2001/01/09 03:26:48 markie Exp $ - * Libmcal - Modular Calendar Access Library - * Copyright (C) 1999 Mark Musone and Andrew Skalski - * -@@ -142,6 +143,15 @@ - size_t bufsize; /* buffer size */ - }; - -+/* calendar stream struct */ -+CALSTREAM { -+ const CALDRIVER *driver; /* stream driver */ -+ CALADDR *addr; /* folder address */ -+ bool dead; /* dead stream? */ -+ weekday_t startofweek; /* first day of week */ -+ void *data; /* driver-specific data */ -+}; -+ - - /* calendar driver structure */ - CALDRIVER { -@@ -169,7 +179,11 @@ - - /* return true if the stream is still alive */ - bool (*ping)( CALSTREAM *stream); -- -+ -+ /* return true if calendar created ok */ -+ bool (*create)( CALSTREAM *stream, -+ const char *calendar); -+ - /* search the current folder for events between <start> and - * <end> (inclusive.) if either lacks a date or is NULL, that - * bound will not be checked. if both lack a date or are NULL, -@@ -222,20 +236,17 @@ - bool (*store)( CALSTREAM *stream, - const CALEVENT *event); - -+ /* Delete an entire calendar */ -+ bool (*delete)( CALSTREAM *stream, char *calendar); - --}; -+ bool (*rename)( CALSTREAM *stream,char *src,char *dest); - - --/* calendar stream struct */ --CALSTREAM { -- const CALDRIVER *driver; /* stream driver */ -- CALADDR *addr; /* folder address */ -- bool dead; /* dead stream? */ -- weekday_t startofweek; /* first day of week */ -- void *data; /* driver-specific data */ - }; - - -+ -+ - /** calendar client callbacks **/ - - /* Called when a stream driver requires a username/password. It is -@@ -287,8 +298,11 @@ - /* Disposes of a CALEVENT, returns NULL for convenience. */ - CALEVENT* calevent_free(CALEVENT *event); - -+/* Check the validity of an event's fields. */ -+bool calevent_valid(const CALEVENT *event); -+ - /* Routines to set and fetch event attributes. */ --const char* calevent_getattr(CALEVENT *event, const char *name); -+const char* calevent_getattr(const CALEVENT *event, const char *name); - bool calevent_setattr(CALEVENT *event, const char *name, - const char *value); - -@@ -322,7 +336,10 @@ - */ - bool first_day_not_before( int mask, weekday_t *clamp, - weekday_t weekstart); -- -+/* Creates a new calendar -+ */ -+bool cal_create(CALSTREAM *stream,const char *calendar); -+ - /* Returns true if the address is valid for any of the calendar drivers */ - bool cal_valid(const char *address); - -@@ -400,6 +417,15 @@ - /* Cancels the alarm for event with id of <id>. Returns false on error. */ - bool cal_snooze( CALSTREAM *stream, - unsigned long id); -+ -+/* delete an entire calendar */ -+ -+bool cal_delete( CALSTREAM *stream, -+ char *calendar); -+ -+/* rename a calendar */ -+bool cal_rename( CALSTREAM *stream, -+ char *src,char *dest); - - - /* private functions */ diff --git a/misc/libmcal/files/patch-al b/misc/libmcal/files/patch-al deleted file mode 100644 index 623708c88fbc..000000000000 --- a/misc/libmcal/files/patch-al +++ /dev/null @@ -1,587 +0,0 @@ ---- mstore/mstore.c.orig Mon Mar 27 06:07:12 2000 -+++ mstore/mstore.c Sun Jan 20 13:36:14 2002 -@@ -1,31 +1,39 @@ --/* $Id: mstore.c,v 1.11 2000/03/27 04:07:12 zircote Exp $ */ -+/* $Id: mstore.c,v 1.22 2001/12/25 02:41:44 chuck Exp $ */ - - #include <stdlib.h> - #include <string.h> - #include <errno.h> - #include <pwd.h> -+#include <sys/time.h> - #include <unistd.h> - #include <crypt.h> -+ -+#ifdef USE_PAM -+#include <security/pam_appl.h> -+#endif /* USE_PAM */ -+ - #include "mcal.h" - #include "mstore.h" - #include "icap/icaproutines.h" - -- - #define MSTORE_VER "0.5" - #define DATA_T struct mstore_data - #define DATA ((DATA_T*) stream->data) - -- -+/* mpasswd path define */ -+#ifndef MPASSWD_PATH -+#define MPASSWD_PATH "/etc/mpasswd" -+#endif - - static void mstore_freestream(CALSTREAM *stream); - static bool mstore_validuser(const char *username,const char *password); --static bool mstore_userexists(const char *username); - - static bool mstore_valid(const CALADDR *addr); - static CALSTREAM* mstore_open( CALSTREAM *stream, - const CALADDR *addr, long options); - static CALSTREAM* mstore_close(CALSTREAM *stream, long options); - static bool mstore_ping(CALSTREAM *stream); -+static bool mstore_create (CALSTREAM *stream, const char *calendar); - static bool mstore_search_range( CALSTREAM *stream, - const datetime_t *start, - const datetime_t *end); -@@ -44,12 +52,18 @@ - unsigned long id); - static bool mstore_store( CALSTREAM *stream, - const CALEVENT *modified_event); -+static bool mstore_delete( CALSTREAM *stream, -+ char *calendar); -+static bool mstore_rename( CALSTREAM *stream, -+ char *src,char *dest); -+ - CALDRIVER mstore_driver = - { - mstore_valid, - mstore_open, - mstore_close, - mstore_ping, -+ mstore_create, - mstore_search_range, - mstore_search_alarm, - mstore_fetch, -@@ -57,6 +71,8 @@ - mstore_remove, - mstore_snooze, - mstore_store, -+ mstore_delete, -+ mstore_rename - }; - - -@@ -88,13 +104,98 @@ - } - - -+#ifdef USE_PAM -+ -+/* PAM support stuff goes here */ -+ -+static pam_handle_t *pamh = NULL; -+static char *PAM_username; -+static char *PAM_password; -+ -+#define COPY_STRING(s) (s) ? strdup(s) : NULL -+ -+static int PAM_conv (int num_msg, -+ const struct pam_message **msg, -+ struct pam_response **resp, -+ void *appdata_ptr) -+{ -+ struct pam_response *reply; -+ int count; -+ -+ if (num_msg < 1) -+ return PAM_CONV_ERR; -+ -+ reply = (struct pam_response *) -+ calloc (num_msg, sizeof(struct pam_response)); -+ -+ if (!reply) -+ return PAM_CONV_ERR; -+ -+ for (count=0; count<num_msg; count++) { -+ char *string = NULL; -+ -+ switch (msg[count]->msg_style) { -+ case PAM_PROMPT_ECHO_ON: -+ if (!(string = COPY_STRING(PAM_username))) -+ goto pam_fail_conv; -+ break; -+ case PAM_PROMPT_ECHO_OFF: -+ if (!(string = COPY_STRING(PAM_password))) -+ goto pam_fail_conv; -+ break; -+ case PAM_TEXT_INFO: -+#ifdef PAM_BINARY_PROMPT -+ case PAM_BINARY_PROMPT: -+#endif /* PAM_BINARY_PROMPT */ -+ /* ignore it */ -+ break; -+ case PAM_ERROR_MSG: -+ default: -+ goto pam_fail_conv; -+ } /* end switch msg[count]->msg_style */ -+ -+ if (string) { -+ reply[count].resp_retcode = 0; -+ reply[count].resp = string; -+ string = NULL; -+ } /* end if string */ -+ -+ } // end for count -+ -+ *resp = reply; -+ return PAM_SUCCESS; -+ -+pam_fail_conv: -+ for(count=0; count<num_msg; count++) { -+ if (!reply[count].resp) -+ continue; -+ switch (msg[count]->msg_style) { -+ case PAM_PROMPT_ECHO_ON: -+ case PAM_PROMPT_ECHO_OFF: -+ free(reply[count].resp); -+ break; -+ } /* end switch msg[count]->msg_style */ -+ } /* end for count */ -+ -+ free(reply); -+ return PAM_CONV_ERR; -+} /* end function static int PAM_conv (...) */ -+ -+static struct pam_conv PAM_conversation = { -+ &PAM_conv, -+ NULL -+}; -+ -+#endif /* USE_PAM */ -+ - bool - mstore_validuser(const char *username,const char *password) - { -+#ifndef USE_PAM - FILE *mpasswd; - char line[1000]; - char *musername,*mpassword; -- mpasswd=fopen("/etc/mpasswd","r"); -+ mpasswd=fopen(MPASSWD_PATH,"r"); - if(!mpasswd) - { - printf("Error! couldn't open mpasswd file!\n"); -@@ -123,36 +224,31 @@ - } - fclose(mpasswd); - return false; --} -- -- --bool --mstore_userexists(const char *username) --{ -- FILE *mpasswd; -- char line[1000]; -- char *musername,*mpassword; -- mpasswd=fopen("/etc/mpasswd","r"); -- if(!mpasswd) -- { -- printf("Error! couldn't open mpasswd file!\n"); -- exit(1); -- } -- while(fgets(line,900,mpasswd)) -- { -- if(line[strlen(line)-1]=='\n') line[strlen(line)-1]=0x00; -- musername=line; -- mpassword=strchr(line,':'); -- *mpassword=0x00; -- mpassword++; -- if(!strcmp(username,musername)) -- { -- fclose(mpasswd); -- return true; -- } -- } -- fclose(mpasswd); -- return false; -+#else -+ /* PAM authentication */ -+ int PAM_error; -+ -+ PAM_error = pam_start("mstore", username, &PAM_conversation, &pamh); -+ if (PAM_error != PAM_SUCCESS) -+ goto login_err; -+ pam_set_item(pamh, PAM_TTY, "mstore"); -+ pam_set_item(pamh, PAM_RHOST, "localhost"); -+ PAM_error = pam_authenticate(pamh, 0); -+ if (PAM_error != PAM_SUCCESS) -+ if (PAM_error == PAM_MAXTRIES) -+ goto login_err; -+#ifndef PAM_CRED_ESTABLISH -+#define PAM_CRED_ESTABLISH PAM_ESTABLISH_CRED -+#endif /* PAM_CRED_ESTABLISH */ -+ PAM_error = pam_setcred(pamh, PAM_CRED_ESTABLISH); -+ if (PAM_error != PAM_SUCCESS) -+ goto login_err; -+ -+login_err: -+ pam_end(pamh, PAM_error); -+ pamh = NULL; -+ return false; -+#endif /* ! USE_PAM */ - } - - -@@ -161,8 +257,6 @@ - { - if (!addr->proto || strcasecmp(addr->proto, "mstore")) - return false; -- if (addr->user && !mstore_userexists(addr->user)) -- return false; - return true; - } - -@@ -197,10 +291,18 @@ - } - - cc_login(&username, &password); -- if (username == NULL) -+ if (username == NULL) { -+ #ifdef DEBUG -+ printf("\nNULL username\n"); -+ #endif - goto fail; -- if (!mstore_validuser(username,password)) -+ } -+ if (!mstore_validuser(username,password)) { -+ #ifdef DEBUG -+ printf("\n!mstore_validuser(%s,%s)\n",username,password); -+ #endif - goto fail; -+ } - } - - if (!reopen) { -@@ -212,13 +314,23 @@ - - if (options & CAL_LOGIN) { - /* Copy login_userbuf, folder. */ -- if ((DATA->login_userbuf = strdup(username)) == NULL) -+ if ((DATA->login_userbuf = strdup(username)) == NULL) { -+ #ifdef DEBUG -+ printf("\ncouldn't get login_userbuf (%s)\n", -+ username); -+ #endif - goto fail; -+ } - - } - -- if ((DATA->folder = strdup(addr->folder)) == NULL) -+ if ((DATA->folder = strdup(addr->folder)) == NULL) { -+ #ifdef DEBUG -+ printf("\ncouldn't get folder (%s)\n", -+ addr->folder); -+ #endif - goto fail; -+ } - - /* Set up folder_user */ - if(addr->host) -@@ -229,8 +341,13 @@ - DATA->login_user=DATA->login_userbuf; - if (addr->user) { - /* Copy and split folder_userbuf */ -- if ((DATA->folder_userbuf = strdup(addr->user)) == NULL) -+ if ((DATA->folder_userbuf = strdup(addr->user)) == NULL) { -+#ifdef DEBUG -+ printf("\ncouldn't get folder_userbuf (%s)\n", -+ addr->user); -+#endif - goto fail; -+ } - /* Check for identical folder/login users. */ - DATA->folder_user=DATA->folder_userbuf; - if ( !strcmp(DATA->login_user, DATA->folder_user)) -@@ -246,7 +363,6 @@ - DATA->folder_user = DATA->login_user; - } - -- - return stream; - fail: - mstore_freestream(stream); -@@ -270,6 +386,36 @@ - } - - -+bool -+mstore_create(CALSTREAM *stream, const char *calendar) -+{ -+ FILE *calfile; -+ char userpath[1000]; -+ -+ /* -+ if (!(stream = mstore_open (stream, (const CALADDR *)calendar, 0))) { -+ #ifdef DEBUG -+ printf("Error! couldn't open calendar stream!\n"); -+ #endif -+ return false; -+ } -+ */ -+ snprintf(userpath, 900, "%s/%s", DATA->base_path, calendar); -+ #ifdef DEBUG -+ printf("attempting fopen on calendar file '%s'\n", userpath); -+ #endif -+ calfile = fopen (userpath, "w"); -+ if (!calfile) { -+ #ifdef DEBUG -+ printf("Error! couldn't create calendar file!\n"); -+ #endif -+ return false; -+ } -+ fclose (calfile); -+ return true; -+} -+ -+ - CALEVENT *read_event(FILE *calfile) - { - char line[100]; -@@ -334,79 +480,75 @@ - datetime_t _end = DT_INIT; - FILE *calfile; - char userpath[1000]; -- snprintf(userpath,900,"%s/%s",DATA->base_path,DATA->folder_user); -- calfile=fopen (userpath,"a+"); -- if(!calfile) -- { -+ -+ snprintf(userpath, 900, "%s/%s", DATA->base_path, DATA->folder_user); -+ calfile = fopen (userpath, "a+"); -+ if(!calfile) { - printf("Error! couldn't open calendar file!\n"); - exit(1); -- } -+ } - rewind(calfile); - - if (start) { -- if (!dt_hasdate(start)) -- start = NULL; -- else { -- dt_setdate(&_start, -- start->year, start->mon, start->mday); -- } -+ if (!dt_hasdate(start)) { -+ // LM:should this be _start = NULL? and again below for end? -+ start = NULL; -+ } else { -+ dt_setdate(&_start, -+ start->year, start->mon, start->mday); -+ } - } - if (end) { -- if (!dt_hasdate(end)) -- end = NULL; -- else -- dt_setdate(&_end, end->year, end->mon, end->mday); -- } -- -- while((event=read_event(calfile))) { -- datetime_t clamp = DT_INIT; -- -- if (!start) -- dt_setdate(&clamp, 1, JANUARY, 1); -- else { -- dt_setdate(&clamp, -- _start.year, _start.mon, _start.mday); -- } -+ if (!dt_hasdate(end)) -+ end = NULL; -+ else -+ dt_setdate(&_end, end->year, end->mon, end->mday); -+ } -+ -+ while ((event = read_event(calfile))) { -+ datetime_t clamp = DT_INIT; -+ -+ if (!start) { -+ dt_setdate(&clamp, 1, JANUARY, 1); -+ } else { -+ dt_setdate(&clamp, -+ _start.year, _start.mon, _start.mday); -+ } - -- calevent_next_recurrence(event, &clamp, stream->startofweek); -- if ( dt_hasdate(&clamp) && -- !(end && dt_compare(&clamp, &_end) > 0)) -- { -- cc_searched(event->id); -- } -+ calevent_next_recurrence(event, &clamp, stream->startofweek); -+ if (dt_hasdate(&clamp) && -+ !(end && dt_compare(&clamp, &_end) > 0)) { -+ cc_searched(event->id); -+ } - -- calevent_free(event); -+ calevent_free(event); - } -- fclose(calfile); -- return true; -+ fclose(calfile); -+ return true; - } - - - bool - mstore_search_alarm(CALSTREAM *stream, const datetime_t *when) - { -- datetime_t start; -- datetime_t end; -- long alarm = 0; -- unsigned long id = 0; - CALEVENT *event; - FILE *calfile; - char userpath[1000]; - -- snprintf(userpath,900,"%s/%s",DATA->base_path,DATA->folder_user); -- calfile=fopen (userpath,"a+"); -- if(!calfile) -- { -+ snprintf(userpath, 900, "%s/%s", DATA->base_path, DATA->folder_user); -+ calfile = fopen (userpath, "a+"); -+ if (!calfile) { - printf("Error! couldn't open calendar file!\n"); - exit(1); -- } -+ } - rewind(calfile); -- while((event=read_event(calfile))) { -- if (dt_roll_time(&(event->start), 0, -alarm, 0) && -- dt_compare(&(event->start),&start)<=0 && -- dt_compare(&end,&(event->end)) <=0) -+ while ((event = read_event(calfile))) { -+ if (event->alarm && -+ dt_roll_time(&(event->start), 0, -(event->alarm), 0) && -+ dt_compare(&(event->start), when) <= 0 && -+ dt_compare(when, &(event->end)) <=0) - { -- cc_searched(id); -+ cc_searched(event->id); - } - calevent_free(event); - } -@@ -422,13 +564,12 @@ - FILE *calfile; - char userpath[1000]; - -- snprintf(userpath,900,"%s/%s",DATA->base_path,DATA->folder_user); -- calfile=fopen (userpath,"a+"); -- if(!calfile) -- { -+ snprintf(userpath, 900, "%s/%s", DATA->base_path, DATA->folder_user); -+ calfile = fopen (userpath,"a+"); -+ if(!calfile) { - printf("Error! couldn't open calendar file!\n"); - exit(1); -- } -+ } - rewind(calfile); - while((event=read_event(calfile))) { - if(event->id==id) { -@@ -445,43 +586,45 @@ - - - bool --mstore_append( CALSTREAM *stream, const CALADDR *addr, -- unsigned long *id, const CALEVENT *event) -+mstore_append(CALSTREAM *stream, const CALADDR *addr, -+ unsigned long *id, const CALEVENT *event) - { -- CALEVENT myevent; -- FILE *calfile; -- char userpath[1000]; -+ CALEVENT myevent; -+ FILE *calfile; -+ char userpath[1000]; -+ -+ if (addr->host) { -+ return false; -+ } -+ if (addr->user) { -+ return false; -+ } -+ if (strcasecmp(addr->folder, "INBOX")) { -+ return false; -+ } - -- if (addr->host) -- return false; -- if (addr->user) -- return false; -- if (strcasecmp(addr->folder, "INBOX")) -- return false; -+ if (!dt_hasdate(&event->start)) { -+ return false; -+ } - -- if (DATA->folder_userbuf) -- return false; -- if (!dt_hasdate(&event->start)) -- return false; -+ snprintf(userpath, 900, "%s/%s", DATA->base_path, DATA->folder_user); -+ calfile = fopen(userpath, "a"); -+ if (!calfile) { -+ printf("Error! couldn't open calendar file %s\n",userpath); -+ perror("mstore_append"); -+ return false; -+ } - -- snprintf(userpath,900,"%s/%s",DATA->base_path,DATA->folder_user); -- calfile=fopen (userpath,"a"); -- if(!calfile) -- { -- printf("Error! couldn't open calendar file %s\n",userpath); -- perror("mstore_append"); -- return false; -- } -- -- myevent = *event; -- myevent.id = time(NULL); -- write_event(calfile, &myevent); -+ myevent = *event; -+ myevent.id = time(NULL); -+ -+ write_event(calfile, &myevent); - -- fclose(calfile); -+ fclose(calfile); - -- *id = myevent.id; -+ *id = myevent.id; - -- return true; -+ return true; - } - - -@@ -609,3 +752,15 @@ - return true; - } - -+ -+bool -+mstore_delete(CALSTREAM *stream, char *calendar) -+{ -+ return true; -+} -+ -+bool -+mstore_rename(CALSTREAM *stream, char *src,char *dest) -+{ -+ return true; -+} |