#!/usr/bin/perl use POSIX; print "create table calendar (uid integer NOT NULL, tag text, value text)\n"; print "create table calendar_urn (uid INTEGER PRIMARY KEY)\n"; print "create table calendar_dbinfo (version integer NOT NULL)\n"; print "insert into calendar_dbinfo values (1);\n"; $id = 2; while (<>) { chomp; if (/UID:(.*)/) { $id++; print "insert into calendar_urn values ($id);\n"; print "insert into calendar values ($id, 'eventid', '$1');\n"; } elsif (/(DESCRIPTION|SUMMARY):(.*)/) { print "insert into calendar values ($id, '" . lc($1) . "', '$2');\n"; } elsif (/RRULE:FREQ=DAILY;UNTIL=(....)(..)(..)/) { print "insert into calendar values ($id, 'recur', '1');\n"; print "insert into calendar values ($id, 'rincrement', '1');\n"; print "insert into calendar values ($id, 'rend', '$1-$2-$3');\n"; } elsif (/RRULE:FREQ=YEARLY/) { print "insert into calendar values ($id, 'recur', '4');\n"; print "insert into calendar values ($id, 'rincrement', '1');\n"; } elsif (/DTSTART;VALUE=DATE:(....)(..)(..)/) { print "insert into calendar values ($id, 'start', '$1-$2-$3');\n"; } elsif (/DTSTART:(....)(..)(..)T(..)(..)../) { print "insert into calendar values ($id, 'start', '$1-$2-$3 $4:$5');\n"; $start = POSIX::mktime(0, $5, $4, $3, $2, $1); } elsif (/DTEND:(....)(..)(..)T(..)(..)../) { $start = (POSIX::mktime(0, $5, $4, $3, $2, $1) - $start); $start = 3600 if $start == 0; print "insert into calendar values ($id, 'duration', '$start');\n"; } elsif (/DTSTAMP:(....)(..)(..)T(..)(..)(..)./) { print "insert into calendar values ($id, 'modified', '" . POSIX::mktime($6,$5,$4,$3,$2,$1) . "');\n"; } }