author | zautrix <zautrix> | 2004-06-29 11:59:46 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-06-29 11:59:46 (UTC) |
commit | da43dbdc6c82453228f34766fc74585615cba938 (patch) (unidiff) | |
tree | 16576932cea08bf117b2d0320b0d5f66ee8ad093 /libical/src/libicalss/icalcalendar.c | |
parent | 627489ea2669d3997676bc3cee0f5d0d0c16c4d4 (diff) | |
download | kdepimpi-da43dbdc6c82453228f34766fc74585615cba938.zip kdepimpi-da43dbdc6c82453228f34766fc74585615cba938.tar.gz kdepimpi-da43dbdc6c82453228f34766fc74585615cba938.tar.bz2 |
New lib ical.Some minor changes as well.
Diffstat (limited to 'libical/src/libicalss/icalcalendar.c') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libical/src/libicalss/icalcalendar.c | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/libical/src/libicalss/icalcalendar.c b/libical/src/libicalss/icalcalendar.c new file mode 100644 index 0000000..1f24f88 --- a/dev/null +++ b/libical/src/libicalss/icalcalendar.c | |||
@@ -0,0 +1,263 @@ | |||
1 | /*====================================================================== | ||
2 | FILE: icalcalendar.c | ||
3 | CREATOR: eric 23 December 1999 | ||
4 | |||
5 | $Id$ | ||
6 | $Locker$ | ||
7 | |||
8 | (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org | ||
9 | |||
10 | This program is free software; you can redistribute it and/or modify | ||
11 | it under the terms of either: | ||
12 | |||
13 | The LGPL as published by the Free Software Foundation, version | ||
14 | 2.1, available at: http://www.fsf.org/copyleft/lesser.html | ||
15 | |||
16 | Or: | ||
17 | |||
18 | The Mozilla Public License Version 1.0. You may obtain a copy of | ||
19 | the License at http://www.mozilla.org/MPL/ | ||
20 | |||
21 | ======================================================================*/ | ||
22 | |||
23 | |||
24 | #ifdef HAVE_CONFIG_H | ||
25 | #include "config.h" | ||
26 | #endif | ||
27 | |||
28 | |||
29 | #include "icalcalendar.h" | ||
30 | #include "icalset.h" | ||
31 | #include "icalfileset.h" | ||
32 | #include "icaldirset.h" | ||
33 | #include <limits.h> | ||
34 | #include <sys/stat.h> /* For mkdir, stat */ | ||
35 | #include <sys/types.h> /* For mkdir */ | ||
36 | #include <fcntl.h> /* For mkdir */ | ||
37 | |||
38 | #ifndef WIN32 | ||
39 | #include <unistd.h> /* For mkdir, stat */ | ||
40 | #endif | ||
41 | |||
42 | #ifndef PATH_MAX | ||
43 | #define PATH_MAX 512 | ||
44 | #endif | ||
45 | |||
46 | |||
47 | #include <stdlib.h> /* for malloc */ | ||
48 | #include <string.h> /* for strcat */ | ||
49 | #include <errno.h> | ||
50 | |||
51 | #define BOOKED_DIR "booked" | ||
52 | #define INCOMING_FILE "incoming.ics" | ||
53 | #define PROP_FILE "properties.ics" | ||
54 | #define FBLIST_FILE "freebusy.ics" | ||
55 | |||
56 | struct icalcalendar_impl | ||
57 | { | ||
58 | char* dir; | ||
59 | icalset* freebusy; | ||
60 | icalset* properties; | ||
61 | icalset* booked; | ||
62 | icalset* incoming; | ||
63 | }; | ||
64 | |||
65 | struct icalcalendar_impl* icalcalendar_new_impl(void) | ||
66 | { | ||
67 | struct icalcalendar_impl* impl; | ||
68 | |||
69 | if ( ( impl = (struct icalcalendar_impl*) | ||
70 | malloc(sizeof(struct icalcalendar_impl))) == 0) { | ||
71 | icalerror_set_errno(ICAL_NEWFAILED_ERROR); | ||
72 | return 0; | ||
73 | } | ||
74 | |||
75 | return impl; | ||
76 | } | ||
77 | |||
78 | |||
79 | icalerrorenum icalcalendar_create(struct icalcalendar_impl* impl) | ||
80 | { | ||
81 | char path[PATH_MAX]; | ||
82 | struct stat sbuf; | ||
83 | int r; | ||
84 | |||
85 | icalerror_check_arg_re((impl != 0),"impl",ICAL_BADARG_ERROR); | ||
86 | |||
87 | path[0] = '\0'; | ||
88 | strcpy(path,impl->dir); | ||
89 | strcat(path,"/"); | ||
90 | strcat(path,BOOKED_DIR); | ||
91 | |||
92 | r = stat(path,&sbuf); | ||
93 | |||
94 | if( r != 0 && errno == ENOENT){ | ||
95 | |||
96 | if(mkdir(path,0777)!=0){ | ||
97 | icalerror_set_errno(ICAL_FILE_ERROR); | ||
98 | return ICAL_FILE_ERROR; | ||
99 | } | ||
100 | } | ||
101 | |||
102 | return ICAL_NO_ERROR; | ||
103 | } | ||
104 | |||
105 | icalcalendar* icalcalendar_new(char* dir) | ||
106 | { | ||
107 | struct icalcalendar_impl* impl; | ||
108 | |||
109 | icalerror_check_arg_rz((dir != 0),"dir"); | ||
110 | |||
111 | impl = icalcalendar_new_impl(); | ||
112 | |||
113 | if (impl == 0){ | ||
114 | return 0; | ||
115 | } | ||
116 | |||
117 | impl->dir = (char*)strdup(dir); | ||
118 | impl->freebusy = 0; | ||
119 | impl->properties = 0; | ||
120 | impl->booked = 0; | ||
121 | impl->incoming = 0; | ||
122 | |||
123 | if (icalcalendar_create(impl) != ICAL_NO_ERROR){ | ||
124 | free(impl); | ||
125 | return 0; | ||
126 | } | ||
127 | |||
128 | return impl; | ||
129 | } | ||
130 | |||
131 | void icalcalendar_free(icalcalendar* impl) | ||
132 | { | ||
133 | if (impl->dir !=0){ | ||
134 | free(impl->dir); | ||
135 | } | ||
136 | |||
137 | if (impl->freebusy !=0){ | ||
138 | icalset_free(impl->booked); | ||
139 | } | ||
140 | |||
141 | if (impl->properties !=0){ | ||
142 | icalset_free(impl->properties); | ||
143 | } | ||
144 | |||
145 | if (impl->booked !=0){ | ||
146 | icalset_free(impl->booked); | ||
147 | } | ||
148 | |||
149 | if (impl->incoming !=0){ | ||
150 | icalset_free(impl->incoming); | ||
151 | } | ||
152 | |||
153 | impl->dir = 0; | ||
154 | impl->freebusy = 0; | ||
155 | impl->properties = 0; | ||
156 | impl->booked = 0; | ||
157 | impl->incoming = 0; | ||
158 | |||
159 | |||
160 | free(impl); | ||
161 | } | ||
162 | |||
163 | |||
164 | int icalcalendar_lock(icalcalendar* impl) | ||
165 | { | ||
166 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
167 | return 0; | ||
168 | } | ||
169 | |||
170 | int icalcalendar_unlock(icalcalendar* impl) | ||
171 | { | ||
172 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
173 | return 0; | ||
174 | } | ||
175 | |||
176 | int icalcalendar_islocked(icalcalendar* impl) | ||
177 | { | ||
178 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
179 | return 0; | ||
180 | } | ||
181 | |||
182 | int icalcalendar_ownlock(icalcalendar* impl) | ||
183 | { | ||
184 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
185 | return 0; | ||
186 | } | ||
187 | |||
188 | icalset* icalcalendar_get_booked(icalcalendar* impl) | ||
189 | { | ||
190 | char dir[PATH_MAX]; | ||
191 | |||
192 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
193 | |||
194 | dir[0] = '\0'; | ||
195 | strcpy(dir,impl->dir); | ||
196 | strcat(dir,"/"); | ||
197 | strcat(dir,BOOKED_DIR); | ||
198 | |||
199 | if (impl->booked == 0){ | ||
200 | icalerror_clear_errno(); | ||
201 | impl->booked = icaldirset_new(dir); | ||
202 | assert(icalerrno == ICAL_NO_ERROR); | ||
203 | } | ||
204 | |||
205 | return impl->booked; | ||
206 | |||
207 | } | ||
208 | |||
209 | icalset* icalcalendar_get_incoming(icalcalendar* impl) | ||
210 | { | ||
211 | char path[PATH_MAX]; | ||
212 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
213 | |||
214 | path[0] = '\0'; | ||
215 | strcpy(path,impl->dir); | ||
216 | strcat(path,"/"); | ||
217 | strcat(path,INCOMING_FILE); | ||
218 | |||
219 | if (impl->properties == 0){ | ||
220 | impl->properties = icalfileset_new(path); | ||
221 | } | ||
222 | |||
223 | return impl->properties; | ||
224 | } | ||
225 | |||
226 | icalset* icalcalendar_get_properties(icalcalendar* impl) | ||
227 | { | ||
228 | char path[PATH_MAX]; | ||
229 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
230 | |||
231 | path[0] = '\0'; | ||
232 | strcpy(path,impl->dir); | ||
233 | strcat(path,"/"); | ||
234 | strcat(path,PROP_FILE); | ||
235 | |||
236 | if (impl->properties == 0){ | ||
237 | impl->properties = icalfileset_new(path); | ||
238 | } | ||
239 | |||
240 | return impl->properties; | ||
241 | } | ||
242 | |||
243 | icalset* icalcalendar_get_freebusy(icalcalendar* impl) | ||
244 | { | ||
245 | char path[PATH_MAX]; | ||
246 | icalerror_check_arg_rz((impl != 0),"impl"); | ||
247 | |||
248 | path[0] = '\0'; | ||
249 | strcpy(path,impl->dir); | ||
250 | strcat(path,"/"); | ||
251 | strcat(path,FBLIST_FILE); | ||
252 | |||
253 | |||
254 | if (impl->freebusy == 0){ | ||
255 | impl->freebusy = icalfileset_new(path); | ||
256 | } | ||
257 | |||
258 | return impl->freebusy; | ||
259 | } | ||
260 | |||
261 | |||
262 | |||
263 | |||