]> err.no Git - sope/blob - sope-ical/samples/ievalrrule.m
added ievalrrule tool
[sope] / sope-ical / samples / ievalrrule.m
1 /*
2   Copyright (C) 2005 SKYRIX Software AG
3
4   This file is part of SOPE.
5
6   SOPE is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with SOPE; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21
22 #include <NGiCal/iCalRecurrenceRule.h>
23 #include "common.h"
24
25 static int usage(NSArray *args) {
26   fprintf(stderr,
27           "usage: %s <rrule> <startdate> <enddate>\n"
28           "\n"
29           "sample:\n"
30           "  %s 'FREQ=MONTHLY;BYDAY=2TU' 20050901 20060301\n",
31           [[args objectAtIndex:0] cString],
32           [[args objectAtIndex:0] cString]);
33   return 1;
34 }
35
36 static int runIt(NSArray *args) {
37   iCalRecurrenceRule *rrule;
38   NSCalendarDate *from, *to;
39   NSString *pattern;
40   NSString *s;
41   
42   if ([args count] < 4)
43     return usage(args);
44   
45   pattern = [args objectAtIndex:1];
46   s       = [[args objectAtIndex:2] stringByAppendingString:@" 00:00"];
47   from    = [NSCalendarDate dateWithString:s calendarFormat:@"%Y%m%d %H:%M"];
48   s       = [[args objectAtIndex:3] stringByAppendingString:@" 23:59"];
49   to      = [NSCalendarDate dateWithString:s calendarFormat:@"%Y%m%d %H:%M"];
50   
51   if (from == nil || to == nil || ![pattern isNotEmpty])
52     return usage(args);
53
54   if ((rrule = [[iCalRecurrenceRule alloc] initWithString:pattern]) == nil) {
55     usage(args);
56     fprintf(stderr, "error: could not parse reccurence rule: '%s'\n",
57             [pattern cString]);
58     return 2;
59   }
60   
61   NSLog(@"from: %@ to: %@", from, to);
62   NSLog(@"rrule: %@", rrule);
63   
64   return 0;
65 }
66
67 int main(int argc, char **argv, char **env)  {
68   NSAutoreleasePool *pool;
69   int rc;
70   
71   pool = [[NSAutoreleasePool alloc] init];
72 #if LIB_FOUNDATION_LIBRARY  
73   [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
74 #endif
75   
76   rc = runIt([[NSProcessInfo processInfo] argumentsWithoutDefaults]);
77   [pool release];
78   return rc;
79 }