File indexing completed on 2024-04-14 03:50:34
0001 #!/usr/bin/perl 0002 0003 # Written 2005 Reinhold Kainhofer <reinhold@kainhofer.com> 0004 # This file is put into the public domain, I claim no copyright on that code 0005 # 0006 # This little (really dumb) script can be used to split a large calendar file 0007 # up into several small files each containing one event/journal/todo/freebusy. 0008 # All lines before the first VEVENT/VTODO/VJOURNAL/VFREEBUSY will be copied to 0009 # every file, so timezones should be fine. 0010 # 0011 # Usage: 0012 # createtestcases.pl InputFile.ics OutputBaseFileName [ext] 0013 # 0014 # InputFile.ics .. The large calendar file containing multiple incidences 0015 # OutputBaseFileName .. The base name of the output files. They will be 0016 # numbered sequentially, i.e. OutputBaseFileName1.ext, 0017 # OutputBaseFileName2.ext, etc. 0018 # [ext].. optional file name extension for the output files. If none is given, 0019 # ics is used. 0020 # 0021 # Disclaimer: This script exists merely for development purposes to help us 0022 # KDE developer generate atomic test cases for libkcalcore's test suite. 0023 0024 0025 use Cwd; 0026 0027 my $infile=shift @ARGV; 0028 my $filebase=shift @ARGV; 0029 my $ext=shift @ARGV; 0030 if ( !$ext ) { 0031 $ext = "ics"; 0032 } 0033 my $filenr=0; 0034 my $filename="$filebase$filenr.$ext"; 0035 0036 print "Infile: $infile\n"; 0037 print "filebase: $filebase\n"; 0038 print "filenr: $filenr\n"; 0039 print "filename: $filename\n"; 0040 0041 my $pre = 1; 0042 my $inevent = 0; 0043 my $pretext = ""; 0044 my $opened = 0; 0045 0046 0047 open(INFILE, $infile); 0048 while (<INFILE>) { 0049 my $line = $_; 0050 0051 if ( !$inevent && ($line =~ m/BEGIN:V(EVENT|TODO|FREEBUSY|JOURNAL)/) ) { 0052 if ( !$opened ) { 0053 $opened = 1; 0054 $filenr=$filenr+1; 0055 $filename="$filebase$filenr.$ext"; 0056 open fh, "> $filename"; 0057 if ( $pretext ) { 0058 print fh $pretext; 0059 } else { 0060 # TODO: close file, open new file 0061 print fh "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//K Desktop Environment (KDE)//LibKCal test cases 1.0//EN\n\n"; 0062 } 0063 0064 } 0065 $pre = 0; 0066 $inevent = 1; 0067 print fh $line; 0068 } elsif ( $inevent && ($line =~ m/END:V(EVENT|TODO|FREEBUSY|JOURNAL)/) ) { 0069 $inevent = 0; 0070 print fh $line; 0071 print fh "END:VCALENDAR\n"; 0072 close fh; 0073 $opened = 0; 0074 } elsif ( $inevent ) { 0075 print fh $line; 0076 } elsif ( $pre ) { 0077 $pretext="$pretext$line"; 0078 print "PRE: $pretext"; 0079 } 0080 0081 } 0082