pax_global_header 0000666 0000000 0000000 00000000064 12415522231 0014507 g ustar 00root root 0000000 0000000 52 comment=da69aae790f680b633100475cac14c776fbda722
libical-1.0.1/ 0000775 0000000 0000000 00000000000 12415522231 0013105 5 ustar 00root root 0000000 0000000 libical-1.0.1/.gitignore 0000664 0000000 0000000 00000000030 12415522231 0015066 0 ustar 00root root 0000000 0000000 *.kdev4
*~
*.rej
*.orig
libical-1.0.1/.travis.yml 0000664 0000000 0000000 00000001273 12415522231 0015221 0 ustar 00root root 0000000 0000000 env:
global:
- secure: "NlWO/NTPlOU6cowOMuPOvjAprXVwIjmpHHf9CoMR71E2c/eBFFKIHj10kXuyFwz2KihHAIExmo9OlGtGniNWobvIrVrabO3dsOSb6UGbPAQkzQiyQLKsDNQAZx3nMuWEKBtMsVRee6rd7/2uGTY4WB5Ot3VhrUYcN1FoRgQQ9gk="
os:
- linux
- osx
before_install: ./scripts/setup-travis.sh
language: c
compiler:
- gcc
- clang
script: mkdir build && cd build && cmake .. && make && make test
addons:
coverity_scan:
project:
name: libical/libical
description: "Libical is an Open Source implementation of the iCalendar protocols and protocol data units."
notification_email: allen.winter@kdab.com
build_command_prepend: cd build && cmake ..
build_command: make
branch_pattern: coverity_scan
libical-1.0.1/AUTHORS 0000664 0000000 0000000 00000000140 12415522231 0014150 0 ustar 00root root 0000000 0000000
There are now far too many contributors to libical to list here.
Thanks to everyone involved!
libical-1.0.1/CMakeLists.txt 0000664 0000000 0000000 00000021767 12415522231 0015662 0 ustar 00root root 0000000 0000000 # This is the top-level CMakeLists.txt file for the libical project.
#
# Pass the following variables to cmake to control the build:
# (See doc/UsingLibical.txt for more information)
#
# -DICAL_ERRORS_ARE_FATAL=[true|false]
# Set to make icalerror_* calls abort instead of internally signaling an error
# Default=false
#
# -DNO_WARN_DEPRECATED=[true|false]
# Set if you DO NOT WANT to see deprecated messages.
# Default=true
#
# -DICAL_ALLOW_EMPTY_PROPERTIES=[true|false]
# Set to prevent empty properties from being replaced with X-LIC-ERROR properties.
# Default=false
#
# -DICAL_UNIX_NEWLINE=[true|false]
# Set to terminate each line with the RFC2445 specified line terminator "\\n";
# else it will terminate lines with "\\n\\r"
# Default=true (on non-Windows systems; else false)
#
# -DUSE_BUILTIN_TZDATA=[true|false]
# Set to build using our own timezone data.
# Default=false (use the system timezone data on non-Windows systems)
# ALWAYS true on Windows systems
#
# -DSTATIC_ONLY=[true|false]
# Set to build static libraries only.
# Default=false (build shared and static libs)
#
# -DSHARED_ONLY=[true|false]
# Set to build shared (dynamic) libraries only.
# Default=false (build shared and static libs)
# Takes precedence over STATIC_ONLY
#
# -DGOBJECT_INTROSPECTION=[true|false]
# Set to build GObject introspection "typelib" files
# Requires GObject Introspection development package v0.6.7 or higher
# Default=false (do not generate the introspection files)
#
# -DUSE_32BIT_TIME_T=[true|false]
# Set to build using a 32bit time_t (ignored unless building with MSVC on Windows)
# Default=false (use the default size of time_t)
#
cmake_minimum_required(VERSION 2.8.9)
project(libical C CXX)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
cmake_policy(SET CMP0005 OLD)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
enable_testing()
if(WINCE)
find_package(Wcecompat REQUIRED)
include_directories(${WCECOMPAT_INCLUDE_DIR})
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${WCECOMPAT_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${WCECOMPAT_LIBRARIES})
endif()
set(LIBICAL_LIB_MAJOR_VERSION "1")
set(LIBICAL_LIB_MINOR_VERSION "0")
set(LIBICAL_LIB_PATCH_VERSION "1")
set(LIBICAL_LIB_VERSION_STRING
"${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}.${LIBICAL_LIB_PATCH_VERSION}"
)
set(PROJECT_VERSION "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}")
set(PROJECT_URL "http://libical.github.io/libical/")
# library build types
set(LIBICAL_STATIC 0)
set(LIBRARY_TYPE SHARED)
if(STATIC_ONLY)
set(LIBICAL_STATIC 1)
add_definitions(-DLIBICAL_STATIC)
set(LIBRARY_TYPE STATIC)
endif()
if(SHARED_ONLY)
set(STATIC_ONLY False)
set(LIBICAL_STATIC 0)
remove_definitions(-DLIBICAL_STATIC)
set(LIBRARY_TYPE SHARED)
endif()
# must have Perl to create the derived stuff
find_package(Perl REQUIRED)
# MSVC specific definitions
if(WIN32)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NO_UNISTD_H)
if(USE_32BIT_TIME_T)
add_definitions(-D_USE_32BIT_TIME_T)
endif()
endif()
add_definitions(-DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DBYTE_ORDER=BIG_ENDIAN)
endif()
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name" FORCE)
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE STRING "Include directory name" FORCE)
set(SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Share directory name" FORCE)
# set the output paths
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
if(WIN32)
set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
set(LIB_INSTALL_DIR lib)
set(BIN_INSTALL_DIR bin)
else()
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
endif()
if(APPLE)
set(CMAKE_INSTALL_NAME_DIR ${LIB_DESTINATION})
endif()
if(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
set(ICAL_ERRORS_ARE_FATAL 0)
else()
if(ICAL_ERRORS_ARE_FATAL)
set(ICAL_ERRORS_ARE_FATAL 1)
else()
set(ICAL_ERRORS_ARE_FATAL 0)
endif()
endif()
if(NOT DEFINED ICAL_UNIX_NEWLINE)
if(WIN32 OR WINCE)
set(ICAL_UNIX_NEWLINE 0)
else()
set(ICAL_UNIX_NEWLINE 1)
endif()
else()
if(ICAL_UNIX_NEWLINE)
set(ICAL_UNIX_NEWLINE 1)
else()
set(ICAL_UNIX_NEWLINE 0)
endif()
endif()
if(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
else()
if(ICAL_ALLOW_EMPTY_PROPERTIES)
set(ICAL_ALLOW_EMPTY_PROPERTIES 1)
else()
set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
endif()
endif()
if(NOT DEFINED NO_WARN_DEPRECATED)
set(NO_WARN_DEPRECATED 1)
else()
if(NO_WARN_DEPRECATED)
set(NO_WARN_DEPRECATED 1)
else()
set(NO_WARN_DEPRECATED 0)
endif()
endif()
if(NOT DEFINED USE_BUILTIN_TZDATA)
set(USE_BUILTIN_TZDATA 0)
else()
if(USE_BUILTIN_TZDATA)
set(USE_BUILTIN_TZDATA 1)
else()
set(USE_BUILTIN_TZDATA 0)
endif()
endif()
#Always use builtin tzdata on Windows systems.
if(WIN32 OR WINCE)
message(STATUS "Currently unable to use system tzdata on Windows. Falling back to builtin tzdata")
set(USE_BUILTIN_TZDATA 1)
endif()
include(ConfigureChecks.cmake)
add_definitions(-DHAVE_CONFIG_H)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
set(INSTALL_TARGETS_DEFAULT_ARGS
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)
if(GOBJECT_INTROSPECTION)
set(MIN_GOBJECT_INTROSPECTION "0.6.7")
find_package(GObjectIntrospection ${MIN_GOBJECT_INTROSPECTION})
if(INTROSPECTION_FOUND)
set(HAVE_INTROSPECTION TRUE)
else()
message(FATAL_ERROR "You requested to build with GObject Introspection but the necessary development package is missing or too low a version (version ${MIN_GOBJECT_INTROSPECTION} or higher is required)")
endif()
endif()
#
# Compiler settings
#
if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
include(CheckCCompilerFlag)
check_c_compiler_flag(-Wunused-but-set-variable HAVE_GCC_UNUSED_BUT_SET)
check_c_compiler_flag(-Wlogical-op HAVE_GCC_LOGICAL_OP)
check_c_compiler_flag(-Wsizeof-pointer-memaccess HAVE_GCC_POINTER_MEMACCESS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated -Wall -Wextra -Winit-self -Wmissing-include-dirs -Wunused -Wno-div-by-zero -Wundef -Wpointer-arith -Werror=return-type")
if(HAVE_GCC_UNUSED_BUT_SET)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-but-set-variable")
endif()
if(HAVE_GCC_LOGICAL_OP)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wlogical-op")
endif()
if(HAVE_GCC_POINTER_MEMACCESS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wsizeof-pointer-memaccess")
endif()
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-Wunused-but-set-variable HAVE_GCC_UNUSED_BUT_SET)
check_cxx_compiler_flag(-Wlogical-op HAVE_GCC_LOGICAL_OP)
check_cxx_compiler_flag(-Wsizeof-pointer-memaccess HAVE_GCC_POINTER_MEMACCESS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wall -Wextra -Woverloaded-virtual -Winit-self -Wmissing-include-dirs -Wunused -Wno-div-by-zero -Wundef -Wpointer-arith -Werror=return-type")
if(HAVE_GCC_UNUSED_BUT_SET)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-but-set-variable")
endif()
if(HAVE_GCC_LOGICAL_OP)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wlogical-op")
endif()
if(HAVE_GCC_POINTER_MEMACCESS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsizeof-pointer-memaccess")
endif()
endif()
################# build subdirs ########################
add_subdirectory(design-data)
add_subdirectory(doc)
add_subdirectory(scripts)
add_subdirectory(test-data)
add_subdirectory(src)
add_subdirectory(examples)
if(USE_BUILTIN_TZDATA)
# use our zoneinfo if cmake is passed -DUSE_BUILTIN_TZDATA
add_subdirectory(zoneinfo)
endif()
########### create and install pkg-config file #########
set(VERSION "${PROJECT_VERSION}")
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "\${prefix}")
set(libdir "\${exec_prefix}/lib")
set(includedir "\${prefix}/include")
set(PTHREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libical.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
########### Create and install the CMake Config files ##########
include(CMakePackageConfigHelpers)
configure_package_config_file(
LibIcalConfig.cmake.in ${libical_BINARY_DIR}/LibIcalConfig.cmake
INSTALL_DESTINATION ${LIB_INSTALL_DIR}/cmake/LibIcal
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR
)
# Create a version file
write_basic_package_version_file(
${libical_BINARY_DIR}/LibIcalConfigVersion.cmake
VERSION ${LIBICAL_LIB_VERSION_STRING}
COMPATIBILITY SameMajorVersion
)
install(
FILES ${libical_BINARY_DIR}/LibIcalConfigVersion.cmake ${libical_BINARY_DIR}/LibIcalConfig.cmake
DESTINATION ${LIB_INSTALL_DIR}/cmake/LibIcal
)
install(
EXPORT icalTargets
DESTINATION ${LIB_INSTALL_DIR}/cmake/LibIcal
FILE LibIcalTargets.cmake
)
libical-1.0.1/COPYING 0000664 0000000 0000000 00000001232 12415522231 0014136 0 ustar 00root root 0000000 0000000 libical is distributed under two licenses.
You may choose the terms of either:
* The Mozilla Public License (MPL) v1.0
or
* The GNU Library General Public License (LGPL) v2.1
----------------------------------------------------------------------
Software distributed under these licenses is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing rights
and limitations under the License.
The Original Code is libical.
The Initial Developer of the Original Code is Eric Busboom
All Rights Reserved.
Contributor(s): See individual source files.
libical-1.0.1/ConfigureChecks.cmake 0000664 0000000 0000000 00000003426 12415522231 0017156 0 ustar 00root root 0000000 0000000 include(CheckIncludeFiles)
check_include_files(assert.h HAVE_ASSERT_H)
check_include_files(byteswap.h HAVE_BYTESWAP_H)
check_include_files(ctype.h HAVE_CTYPE_H)
check_include_files(dlfcn.h HAVE_DLFCN_H)
check_include_files(endian.h HAVE_ENDIAN_H)
check_include_files(inttypes.h HAVE_INTTYPES_H)
check_include_files(memory.h HAVE_MEMORY_H)
check_include_files(pthread.h HAVE_PTHREAD_H)
check_include_files(stdint.h HAVE_STDINT_H)
check_include_files(stdlib.h HAVE_STDLIB_H)
check_include_files(strings.h HAVE_STRINGS_H)
check_include_files(string.h HAVE_STRING_H)
check_include_files(sys/endian.h HAVE_SYS_ENDIAN_H)
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
check_include_files(time.h HAVE_TIME_H)
check_include_files(unistd.h HAVE_UNISTD_H)
check_include_files(wctype.h HAVE_WCTYPE_H)
include(CheckFunctionExists)
check_function_exists(backtrace HAVE_BACKTRACE)
check_function_exists(gmtime_r HAVE_GMTIME_R)
check_function_exists(isspace HAVE_ISSPACE)
check_function_exists(iswspace HAVE_ISWSPACE)
check_function_exists(setenv HAVE_SETENV)
check_function_exists(snprintf HAVE_SNPRINTF)
check_function_exists(strdup HAVE_STRDUP)
check_function_exists(unsetenv HAVE_UNSETENV)
include(CheckTypeSize)
check_type_size(mode_t SIZEOF_MODE_T)
check_type_size(size_t SIZEOF_SIZE_T)
check_type_size(intptr_t INTPTR_T) # please do not rename HAVE_INTPTR_T will automatically be defined
check_type_size(pid_t HAVE_PID_T)
check_type_size(time_t SIZEOF_TIME_T)
include(FindThreads)
check_library_exists(pthread pthread_attr_get_np "" HAVE_PTHREAD_ATTR_GET_NP)
check_library_exists(pthread pthread_getattr_np "" HAVE_PTHREAD_GETATTR_NP)
check_library_exists(pthread pthread_create "" HAVE_PTHREAD_CREATE)
check_include_files("pthread.h;pthread_np.h" HAVE_PTHREAD_NP_H)
libical-1.0.1/Install.txt 0000664 0000000 0000000 00000003226 12415522231 0015257 0 ustar 00root root 0000000 0000000 Libical v1.0 and above uses the CMake buildsystem.
The autoconf build system has been removed and is no longer supported.
Please see the comments at the top of CMakeLists.txt for
the available configuration options you can pass to cmake.
The installation directory defaults to /usr/local on UNIX
and c:/Program Files on Windows. You can change this by
passing -DCMAKE_INSTALL_PREFIX=/install/path to cmake.
To build a debug version pass -DCMAKE_BUILD_TYPE=Debug to cmake.
To build libical you will need:
- CMake version 2.8.9 or higher
- Perl
- a C compiler (let us know if the build fails with your C compiler)
Building on Unix with gcc or clang:
% mkdir build
% cd build
% cmake ..
% make
% make install
Building on Windows with MicroSoft Visual Studio:
% mkdir build
% cd build
% cmake -G "NMake Makefiles" ..
% nmake
% nmake install
Building on Windows with mingw:
% mkdir build
% cd build
% cmake -G "MinGW Makefiles" ..
% mingw32-make
% mingw32-make install
Building on Windows under Cygwin:
% mkdir build
% cd build
% cmake ..
% make
% make install
Building on MSYS with mingw:
% mkdir build
% cd build
% cmake -G "MSYS Makefiles" ..
% nmake
% nmake install
To run the test suite, from inside the build directory
run 'make test' (or 'nmake test' or 'mingw32-make test')
To run the test suite in verbose mode, pass ARGS="-V" to the make command
For example: nmake test ARGS="-V"
By default, the buildsystem creates shared(dynamic) and static versions
of the libraries, but that behavior can be modified at CMake time:
- To build the static libraries only, pass -DSTATIC_ONLY=True to CMake.
- To build the shared libraries only, pass -DSHARED_ONLY=True to CMake.
libical-1.0.1/LICENSE 0000664 0000000 0000000 00000001262 12415522231 0014113 0 ustar 00root root 0000000 0000000 libical is distributed under two licenses.
You may choose the terms of either:
* The Mozilla Public License (MPL) v1.0
or
* The GNU Library General Public License (LGPL) v2.1
----------------------------------------------------------------------
Software distributed under these licenses is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing rights
and limitations under the License.
Libical is distributed under both the LGPL and the MPL. The MPL
notice, reproduced below, covers the use of either of the licenses.
----------------------------------------------------------------------
libical-1.0.1/LibIcalConfig.cmake.in 0000664 0000000 0000000 00000000575 12415522231 0017150 0 ustar 00root root 0000000 0000000 @PACKAGE_INIT@
set_and_check(LibIcal_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
set_and_check(LibIcal_LIBRARIES_DIR "@PACKAGE_LIB_INSTALL_DIR@")
include("${CMAKE_CURRENT_LIST_DIR}/LibIcalTargets.cmake")
set(LibIcal_LIBRARIES ical icalss icalvcal)
# Temporary, will be removed once issue#87 is fixed
set(LibIcal_STATIC_LIBRARIES ical-static icalss-static icalvcal-static)
libical-1.0.1/ReadMe.md 0000777 0000000 0000000 00000000000 12415522231 0016455 2ReadMe.txt ustar 00root root 0000000 0000000 libical-1.0.1/ReadMe.txt 0000664 0000000 0000000 00000004670 12415522231 0015012 0 ustar 00root root 0000000 0000000 # Libical [](https://travis-ci.org/libical/libical) [](https://scan.coverity.com/projects/2367)
Introduction
============
Libical -- an implementation of iCalendar protocols and data formats
Most of the code in here was written by Eric Busboom with help from
dozens of contributors. It is currently maintained by Art Cancro
and Wilfried Goesgens.
Libical is an Open Source implementation of the iCalendar protocols
and protocol data units. The iCalendar specification describes how
calendar clients can communicate with calendar servers so users can
store their calendar data and arrange meetings with other users.
Libical implements RFC2445, RFC2446 and some of RFC2447.
License
========
The code and datafiles in this distribution are licensed under the
Mozilla Public License (MPL) v1.0. See http://www.mozilla.org/MPL/1.0
for a copy of the license.
Alternately, you may use libical under the terms of the GNU Library
General Public License (LGPL) v2.1. See http://www.gnu.org/licenses/lgpl-2.1.txt
for a copy of the license.
This dual license ensures that the library can be incorporated into
both proprietary code and GPL'd programs, and will benefit from improvements
made by programmers in both realms. I will only accept changes into
my version of the library if they are similarly dual-licensed.
Acknowledgments
===============
Portions of this distribution are (C) Copyright 1996 Apple Computer,
Inc., AT&T Corp., International Business Machines Corporation and
Siemens Rolm Communications Inc. See src/libicalvcal/README.TXT for
details.
Portions of this distribution are Copyright (c) 1997 Theo de
Raadt. See the header for src/libical/vsnprintf.c for the full
copyright statement.
Get Involved
============
Subscribe to our mailing lists:
For developer discussions
http://lists.infradead.org/mailman/listinfo/libical-devel
For general discussions about libical and related projects
http://lists.infradead.org/mailman/listinfo/libical-interest
Report bugs to our issue tracker at
https://github.com/libical/libical/issues
Building the library
====================
See the top-level Install.txt file.
Using the Library
=================
There is rudimentary, unfinished documentation in the /doc directory,
and annotated examples in /examples and the test code in src/test.
libical-1.0.1/ReleaseNotes.txt 0000664 0000000 0000000 00000003113 12415522231 0016235 0 ustar 00root root 0000000 0000000 Release Highlights
==================
Version 1.0.1:
--------------
* [Bug] issue74: Do not escape double quote character
* [Bug] issue80,issue92: fix crashes using icaltimezone_load_builtin_timezone() recursively
* [Bug] Fix icalcomponent_foreach_recurrence() and large durations between recurrences (e.g. FREQ=YEARLY)
* [Bug] Properly handle UTCOFFSETs of the form +/-00mmss
* [Bug] Properly skip bogus dates (e.g. 2/30, 4/31) in RRULE:FREQ=MONTHLY
* [Bug] Properly handle RRULE:FREQ=MONTHLY;BYDAY;BYMONTHDAY when DTSTART isn't on BYDAY
* [Bug] Fix RRULE:FREQ=YEARLY;BYDAY;BYWEEKNO - MUST use ISO weeks
* [Bug] Properly skip bogus dates (e.g. 2/29) in RRULE:FREQ=YEARLY[;BYMONTH][;BYMONTHDAY]
* [New] Update tzdata to version 2014g
* [New] Support added for schedule params: agent, status, force-send
* [New] Added a UID to the VFREEBUSY component
* [New] Allow dates > 2038 if sizeof(time_t) > 4
* [New] Add properties from draft-ietf-tzdist-service
* [New] Add support for RRULE:FREQ=YEARLY;BYDAY;BYYEARDAY and fixed RRULE:FREQ=YEARLY;BYYEARDAY with negative days
* [Build] Autotools build system is removed
* [Build] CMake version 2.8.9 (or higher) is required (was CMake version 2.4.0)
* [Build] Add new -DSHARED_ONLY and -DSTATIC_ONLY CMake options
* [Build] Remove -DSTATIC_LIBRARY CMake option
* [Build] MSYS2 builds (fixed instructions)
* [Build/Doc] Now can build api documentation with make docs
* [Quality] More regression tests added, in particular for recurrence
* [Quality] Almost all compile warnings silenced
* [Quality] A bunch of Coverity Scan warnings silenced
libical-1.0.1/TEST 0000664 0000000 0000000 00000000117 12415522231 0013606 0 ustar 00root root 0000000 0000000
Parser Tests
------------
Use iCAL keywords as first words of unquoted strings libical-1.0.1/THANKS 0000664 0000000 0000000 00000004536 12415522231 0014030 0 ustar 00root root 0000000 0000000 Thanks to:
Allan Clark for testing libical against
UnixWare.
Graham Davison for MacOS support and
miscelaneous code bits
Seth Alves for the first cut at the Makefile.am
files and various utility functions.
Russ Steinthal for several utility functions and
comments.
Ola Lundqvist for the vCal test data file.
Colin DuPlantis for new functions in icalparser.c
Holger Schmidt for all of icalcstp.c, The
CSTP protocol implementation, and modifications to icalcstp.h
Gisle Hannemyr The decode*() functions in sspm.c
are based on the decode() routine in the mimelite program, Copyright
(c) 1994 Gisle Hannemyr.
The Evolution team at Helixcode ( Federico Mena Quintero
, JP Rosevear , Ettore
Perazzoli , Christopher James Lahey
, Peter Williams ) for
miscelaneous patches and adjustments to the build system.
Cornelius Schumacher for many insightful
suggestions and a few patches.
Mark D. Anderson for discussions and ideas.
Martin Neimeier for correcting bugs in icalrecur.c
Tom Leitner For several bug fixes in
compiling on Tru64 UNIX.
Patrick Lewis for several bug reports and
substantial ( co-authorship) contributions to the Python bindings
Larry W. Virden for several bug reports in compiling
on Solaris.
Bryan Bartone for code changes based on porting
libical to Windows.
Hubert V for checking and analyzing the output
of the recurrence rule system.
Jonathan Yue for icalproperty_get_name()
Jeff Mace for finding bugs in gauges.
John Gray for routing memory leaks, porting to
WIN32, and taking over leadership of the project.
Andrea Campi for miscellaneous updates and beginning
of Doxygen documentation.
Paul Lindner for several contributions, including
C++ binding, reentrant parser, thread safe memory allocator, and a
lot of documentation.
Mark Tearle for keeping the Python bindings up
to date.
libical-1.0.1/TODO 0000664 0000000 0000000 00000002256 12415522231 0013602 0 ustar 00root root 0000000 0000000
TODOs for libical
-----------------
libical treats properties with multiple values incorrecty -- it always
seperates multiple values into multiple properties. This is not
acceptable for CATEGORIES and RESOURCES.
Some TEXT valued properties, like METHOD, have a limited set of valid
values. The code should check that the values of these properites are
valid. ( Although METHOD now uses enums, and is not really TEXT valued )
Finish implementing values
ATTACH/BINARY
content_type
language
Check for buffer overflow on external input.
Error Handling
Dates and times: the parser will accept many illegal date time
values
RECUR values ignore integers in BYDAY clauses, ie 'FREQ=MONTHLY;BYDAY=-1SU'
Restrictions code does not catch lack of DTEND or DURATION
For some value types, if there illegal characters in the value ( like
4.56 in an integer value), the parser will output the characters to
stdout.
Check all uses of strcpy and sprinf for buffer overflows
Make the mime parsing code in sspm grow the list of parts as needed,
rather than having a hard limit.
in sspm.c, and unrecognized content-transfer-encoding values must
force a content type of application/octet-stream.
libical-1.0.1/cmake/ 0000775 0000000 0000000 00000000000 12415522231 0014165 5 ustar 00root root 0000000 0000000 libical-1.0.1/cmake/modules/ 0000775 0000000 0000000 00000000000 12415522231 0015635 5 ustar 00root root 0000000 0000000 libical-1.0.1/cmake/modules/FindGObjectIntrospection.cmake 0000664 0000000 0000000 00000003765 12415522231 0023551 0 ustar 00root root 0000000 0000000 # - try to find gobject-introspection
#
# Once done this will define
#
# INTROSPECTION_FOUND - system has gobject-introspection
# INTROSPECTION_SCANNER - the gobject-introspection scanner, g-ir-scanner
# INTROSPECTION_COMPILER - the gobject-introspection compiler, g-ir-compiler
# INTROSPECTION_GENERATE - the gobject-introspection generate, g-ir-generate
# INTROSPECTION_GIRDIR
# INTROSPECTION_TYPELIBDIR
# INTROSPECTION_CFLAGS
# INTROSPECTION_LIBS
#
# Copyright (C) 2010, Pino Toscano,
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
macro(_GIR_GET_PKGCONFIG_VAR _outvar _varname)
execute_process(
COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${_varname} gobject-introspection-1.0
OUTPUT_VARIABLE _result
RESULT_VARIABLE _null
)
if (_null)
else()
string(REGEX REPLACE "[\r\n]" " " _result "${_result}")
string(REGEX REPLACE " +$" "" _result "${_result}")
separate_arguments(_result)
set(${_outvar} ${_result} CACHE INTERNAL "")
endif()
endmacro(_GIR_GET_PKGCONFIG_VAR)
find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
if(PACKAGE_FIND_VERSION_COUNT GREATER 0)
set(_gir_version_cmp ">=${PACKAGE_FIND_VERSION}")
endif()
pkg_check_modules(_pc_gir gobject-introspection-1.0${_gir_version_cmp})
if(_pc_gir_FOUND)
set(INTROSPECTION_FOUND TRUE)
_gir_get_pkgconfig_var(INTROSPECTION_SCANNER "g_ir_scanner")
_gir_get_pkgconfig_var(INTROSPECTION_COMPILER "g_ir_compiler")
_gir_get_pkgconfig_var(INTROSPECTION_GENERATE "g_ir_generate")
_gir_get_pkgconfig_var(INTROSPECTION_GIRDIR "girdir")
_gir_get_pkgconfig_var(INTROSPECTION_TYPELIBDIR "typelibdir")
set(INTROSPECTION_CFLAGS "${_pc_gir_CFLAGS}")
set(INTROSPECTION_LIBS "${_pc_gir_LIBS}")
endif()
endif()
mark_as_advanced(
INTROSPECTION_SCANNER
INTROSPECTION_COMPILER
INTROSPECTION_GENERATE
INTROSPECTION_GIRDIR
INTROSPECTION_TYPELIBDIR
INTROSPECTION_CFLAGS
INTROSPECTION_LIBS
)
libical-1.0.1/cmake/modules/FindICU.cmake 0000664 0000000 0000000 00000005245 12415522231 0020066 0 ustar 00root root 0000000 0000000 # Finds the International Components for Unicode (ICU) Library
#
# ICU_FOUND - True if ICU found.
# ICU_I18N_FOUND - True if ICU's internationalization library found.
# ICU_INCLUDE_DIRS - Directory to include to get ICU headers
# Note: always include ICU headers as, e.g.,
# unicode/utypes.h
# ICU_LIBRARIES - Libraries to link against for the common ICU
# ICU_I18N_LIBRARIES - Libraries to link against for ICU internationaliation
# (note: in addition to ICU_LIBRARIES)
if(ICU_INCLUDE_DIR AND ICU_LIBRARY)
# Already in cache, be silent
set(ICU_FIND_QUIETLY TRUE)
endif()
# Look for the header file.
find_path(
ICU_INCLUDE_DIR
NAMES unicode/utypes.h
DOC "Include directory for the ICU library")
mark_as_advanced(ICU_INCLUDE_DIR)
# Look for the library.
find_library(
ICU_LIBRARY
NAMES icuuc cygicuuc cygicuuc32
DOC "Libraries to link against for the common parts of ICU")
mark_as_advanced(ICU_LIBRARY)
# Copy the results to the output variables.
if (ICU_INCLUDE_DIR AND ICU_LIBRARY)
set(ICU_FOUND 1)
set(ICU_LIBRARIES ${ICU_LIBRARY})
set(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIR})
set(ICU_VERSION 0)
set(ICU_MAJOR_VERSION 0)
set(ICU_MINOR_VERSION 0)
file(READ "${ICU_INCLUDE_DIR}/unicode/uversion.h" _ICU_VERSION_CONENTS)
string(REGEX REPLACE ".*#define U_ICU_VERSION_MAJOR_NUM ([0-9]+).*" "\\1" ICU_MAJOR_VERSION "${_ICU_VERSION_CONENTS}")
string(REGEX REPLACE ".*#define U_ICU_VERSION_MINOR_NUM ([0-9]+).*" "\\1" ICU_MINOR_VERSION "${_ICU_VERSION_CONENTS}")
set(ICU_VERSION "${ICU_MAJOR_VERSION}.${ICU_MINOR_VERSION}")
# Look for the ICU internationalization libraries
find_library(
ICU_I18N_LIBRARY
NAMES icuin icui18n cygicuin cygicuin32
DOC "Libraries to link against for ICU internationalization")
mark_as_advanced(ICU_I18N_LIBRARY)
if (ICU_I18N_LIBRARY)
set(ICU_I18N_FOUND 1)
set(ICU_I18N_LIBRARIES ${ICU_I18N_LIBRARY})
else ()
set(ICU_I18N_FOUND 0)
set(ICU_I18N_LIBRARIES)
endif ()
else ()
set(ICU_FOUND 0)
set(ICU_I18N_FOUND 0)
set(ICU_LIBRARIES)
set(ICU_I18N_LIBRARIES)
set(ICU_INCLUDE_DIRS)
set(ICU_VERSION)
set(ICU_MAJOR_VERSION)
set(ICU_MINOR_VERSION)
endif ()
if (ICU_FOUND)
if (NOT ICU_FIND_QUIETLY)
message(STATUS "Found ICU header files in ${ICU_INCLUDE_DIRS}")
message(STATUS "Found ICU libraries: ${ICU_LIBRARIES}")
endif ()
else ()
if (ICU_FIND_REQUIRED)
message(FATAL_ERROR "Could not find ICU")
else ()
message(STATUS "Optional package ICU was not found")
endif ()
endif ()
libical-1.0.1/cmake/modules/FindWcecompat.cmake 0000664 0000000 0000000 00000002235 12415522231 0021364 0 ustar 00root root 0000000 0000000 # Try to find Wcecompat functionality
# Once done this will define
#
# WCECOMPAT_FOUND - system has Wcecompat
# WCECOMPAT_INCLUDE_DIR - Wcecompat include directory
# WCECOMPAT_LIBRARIES - Libraries needed to use Wcecompat
#
# Copyright (c) 2010, Andreas Holzammer,
#
# Redistribution and use is allowed according to the terms of the BSD license.
if(WCECOMPAT_INCLUDE_DIR AND WCECOMPAT_LIB_FOUND)
set(Wcecompat_FIND_QUIETLY TRUE)
endif(WCECOMPAT_INCLUDE_DIR AND WCECOMPAT_LIB_FOUND)
find_path(WCECOMPAT_INCLUDE_DIR errno.h PATH_SUFFIXES wcecompat)
set(WCECOMPAT_LIB_FOUND FALSE)
if(WCECOMPAT_INCLUDE_DIR)
find_library(WCECOMPAT_LIBRARIES NAMES wcecompat wcecompatex )
if(WCECOMPAT_LIBRARIES)
set(WCECOMPAT_LIB_FOUND TRUE)
endif(WCECOMPAT_LIBRARIES)
endif(WCECOMPAT_INCLUDE_DIR)
# I have no idea what this is about, but it seems to be used quite often, so I add this here
set(WCECOMPAT_CONST const)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Wcecompat DEFAULT_MSG WCECOMPAT_LIBRARIES WCECOMPAT_LIB_FOUND)
mark_as_advanced(WCECOMPAT_INCLUDE_DIR WCECOMPAT_LIBRARIES WCECOMPAT_CONST WCECOMPAT_LIB_FOUND)
libical-1.0.1/cmake/modules/GObjectIntrospectionMacros.cmake 0000664 0000000 0000000 00000006664 12415522231 0024116 0 ustar 00root root 0000000 0000000 # Copyright (C) 2010, Pino Toscano,
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
macro(_gir_list_prefix _outvar _listvar _prefix)
set(${_outvar})
foreach(_item IN LISTS ${_listvar})
list(APPEND ${_outvar} ${_prefix}${_item})
endforeach()
endmacro(_gir_list_prefix)
macro(gir_add_introspections introspections_girs)
set(_gir_girs)
set(_gir_typelibs)
foreach(gir IN LISTS ${introspections_girs})
set(_gir_name "${gir}")
## Transform the gir filename to something which can reference through a variable
## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir
string(REPLACE "-" "_" _gir_name "${_gir_name}")
string(REPLACE "." "_" _gir_name "${_gir_name}")
# Namespace and Version is either fetched from the gir filename
# or the _NAMESPACE/_VERSION variable combo
set(_gir_namespace "${${_gir_name}_NAMESPACE}")
if (_gir_namespace STREQUAL "")
string(REGEX REPLACE "([^-]+)-.*" "\\1" _gir_namespace "${gir}")
endif ()
set(_gir_version "${${_gir_name}_VERSION}")
if (_gir_version STREQUAL "")
string(REGEX REPLACE ".*-([^-]+).gir" "\\1" _gir_version "${gir}")
endif ()
# _PROGRAM is an optional variable which needs it's own --program argument
set(_gir_program "${${_gir_name}_PROGRAM}")
if (NOT _gir_program STREQUAL "")
set(_gir_program "--program=${_gir_program}")
endif ()
# Variables which provides a list of things
_gir_list_prefix(_gir_libraries ${_gir_name}_LIBS "--library=")
_gir_list_prefix(_gir_packages ${_gir_name}_PACKAGES "--pkg=")
_gir_list_prefix(_gir_includes ${_gir_name}_INCLUDES "--include=")
# Reuse the LIBTOOL variable from by automake if it's set
set(_gir_libtool "--no-libtool")
add_custom_command(
COMMAND ${INTROSPECTION_SCANNER}
${INTROSPECTION_SCANNER_ARGS}
--namespace=${_gir_namespace}
--nsversion=${_gir_version}
${_gir_libtool}
${_gir_program}
${_gir_libraries}
${_gir_packages}
${_gir_includes}
${${_gir_name}_SCANNERFLAGS}
${${_gir_name}_CFLAGS}
${${_gir_name}_FILES}
--output ${CMAKE_CURRENT_BINARY_DIR}/${gir}
--accept-unprefixed
DEPENDS ${${_gir_name}_FILES}
${${_gir_name}_LIBS}
OUTPUT ${gir}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
VERBATIM
)
list(APPEND _gir_girs ${CMAKE_CURRENT_BINARY_DIR}/${gir})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${gir} DESTINATION share/gir-1.0)
string(REPLACE ".gir" ".typelib" _typelib "${gir}")
add_custom_command(
COMMAND ${INTROSPECTION_COMPILER}
${INTROSPECTION_COMPILER_ARGS}
--includedir=.
${CMAKE_CURRENT_BINARY_DIR}/${gir}
-o ${CMAKE_CURRENT_BINARY_DIR}/${_typelib}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${gir}
OUTPUT ${_typelib}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
list(APPEND _gir_typelibs ${CMAKE_CURRENT_BINARY_DIR}/${_typelib})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_typelib} DESTINATION lib${LIB_SUFFIX}/girepository-1.0)
endforeach()
add_custom_target(gir-girs ALL DEPENDS ${_gir_girs})
add_custom_target(gir-typelibs ALL DEPENDS ${_gir_typelibs})
endmacro(gir_add_introspections)
libical-1.0.1/cmake/run_test.cmake 0000664 0000000 0000000 00000002244 12415522231 0017034 0 ustar 00root root 0000000 0000000 #-------------------------------------------------
# some argument checking:
# test_cmd is the command to run with all its arguments
if(NOT test_cmd)
message(FATAL_ERROR "Variable test_cmd not defined")
endif()
# output_blessed contains the name of the "blessed" output file
if(NOT output_blessed)
message(FATAL_ERROR "Variable output_blessed not defined")
endif()
# output_test contains the name of the output file the test_cmd will produce
if(NOT output_test)
message(FATAL_ERROR "Variable output_test not defined")
endif()
# convert the space-separated string to a list
separate_arguments(test_args)
execute_process(
COMMAND ${test_cmd} ${test_args}
RESULT_VARIABLE test_not_successful
ERROR_VARIABLE err
)
if(test_not_successful)
message(SEND_ERROR "Unable to run test '${test_cmd}': ${err} : shell output: ${test_not_successful}!")
endif()
execute_process(
COMMAND ${CMAKE_COMMAND} -E compare_files ${output_blessed} ${output_test}
RESULT_VARIABLE test_not_successful
ERROR_VARIABLE err
)
if(test_not_successful)
message(SEND_ERROR "Output does not match for ${output_blessed} and ${output_test}: ${err} : shell output: ${test_not_successful}!")
endif()
libical-1.0.1/config-libical.h.cmake 0000664 0000000 0000000 00000001527 12415522231 0017204 0 ustar 00root root 0000000 0000000 /* config.h. Generated by cmake from config.h.cmake */
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_STDINT_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_STDLIB_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_WCTYPE_H 1
/* FIXME:
These are statically defined, as the configure check fails too often
This prevents libical's snprintf() copy to be used, which is buggy and causes dbus
to crash in handle_error()
In case there is a platform to be supported without working vsnprintf(),
a) fix the configure check
b) fix libical's vsnprintf.c/provide a better snprintf() implementation
*/
#define HAVE_SNPRINTF 1
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `iswspace' function. */
#cmakedefine HAVE_ISWSPACE 1
libical-1.0.1/config.h.cmake 0000664 0000000 0000000 00000012341 12415522231 0015603 0 ustar 00root root 0000000 0000000 /* config.h. Generated by cmake from config.h.cmake */
/* Define if you have the ICU library. */
#cmakedefine HAVE_LIBICU 1
/* Define if you have the ICU internationalization library. */
#cmakedefine HAVE_LIBICU_I18N 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_ASSERT_H 1
/* Define to 1 if you have the `backtrace' function. */
#cmakedefine HAVE_BACKTRACE 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_BYTESWAP_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_CTYPE_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_DLFCN_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_ENDIAN_H 1
/* Define to 1 if you have the `gmtime_r' function. */
#cmakedefine HAVE_GMTIME_R 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_INTTYPES_H 1
/* Define to 1 if you have type 'intptr_t' defined. */
#cmakedefine HAVE_INTPTR_T 1
/* Define to 1 if you have the `isspace' function. */
#cmakedefine HAVE_ISSPACE 1
/* Define to 1 if you have the `iswspace' function. */
#cmakedefine HAVE_ISWSPACE 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_MEMORY_H 1
/* Define if we have pthread. */
#cmakedefine HAVE_PTHREAD_ATTR_GET_NP 1
#cmakedefine HAVE_PTHREAD_GETATTR_NP 1
#cmakedefine HAVE_PTHREAD_CREATE 1
#cmakedefine HAVE_PTHREAD_NP_H 1
#if defined(HAVE_PTHREAD_ATTR_GET_NP) || defined(HAVE_PTHREAD_GETATTR_NP) || defined(HAVE_PTHREAD_CREATE) || defined(HAVE_PTHREAD_NP_H)
#define HAVE_PTHREAD 1
#endif
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_PTHREAD_H 1
/* Define to 1 if you have the `snprintf' function. */
#cmakedefine HAVE_SNPRINTF 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_STDINT_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_STDLIB_H 1
/* Define to 1 if you have the `strdup' function. */
#cmakedefine HAVE_STRDUP 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_STRINGS_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_STRING_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_SYS_ENDIAN_H 1
/* Define to 1 if you have the `setenv' function. */
#cmakedefine HAVE_SETENV 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_SYS_STAT_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_TIME_H 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_UNISTD_H 1
/* Define to 1 if you have the `unsetenv' function. */
#cmakedefine HAVE_UNSETENV 1
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_WCTYPE_H 1
/* Define to make icalerror_* calls abort instead of internally signalling an
error */
#define ICAL_ERRORS_ARE_FATAL ${ICAL_ERRORS_ARE_FATAL}
/* Define to prevent empty properties from being replaced with X-LIC-ERROR properties */
#define ICAL_ALLOW_EMPTY_PROPERTIES ${ICAL_ALLOW_EMPTY_PROPERTIES}
/* Define if we want _REENTRANT */
#cmakedefine ICAL_REENTRANT 1
/* Define to terminate lines with "\n" instead of "\r\n" */
#define ICAL_UNIX_NEWLINE ${ICAL_UNIX_NEWLINE}
/* Define to 1 if you DO NOT WANT to see deprecated messages */
#define NO_WARN_DEPRECATED ${NO_WARN_DEPRECATED}
/* Define to 1 if you DO NO WANT to see the warning messages related to
ICAL_MALFORMEDDATA_ERROR and parsing .ics zoneinfo files */
#cmakedefine NO_WARN_ICAL_MALFORMEDDATA_ERROR_HACK 1
/* Name of package */
#define PACKAGE "${CMAKE_PROJECT_NAME}"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "${PROJECT_URL}"
/* Define to the full name of this package. */
#define PACKAGE_NAME "${CMAKE_PROJECT_NAME}"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "${CMAKE_PROJECT_NAME} ${PROJECT_VERSION}"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "${CMAKE_PROJECT_NAME}"
/* Define to the version of this package. */
#define PACKAGE_VERSION "${PROJECT_VERSION}"
/* Define to 1 if you have the ANSI C header files. */
#cmakedefine STDC_HEADERS 1
/* Define to 1 if your declares `struct tm'. */
#cmakedefine TM_IN_SYS_TIME 1
/* whether we should bring our own TZ-Data */
#cmakedefine USE_BUILTIN_TZDATA
/* Version number of package */
#define VERSION "${PROJECT_VERSION}"
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
`char[]'. */
#cmakedefine YYTEXT_POINTER 1
/* Define to empty if `const' does not conform to ANSI C. */
#cmakedefine const
/* Define to `int' if does not define. */
#cmakedefine HAVE_SIZEOF_MODE_T
#if !defined(HAVE_SIZEOF_MODE_T)
#define mode_t int
#endif
/* Define to `unsigned int' if does not define. */
#cmakedefine HAVE_SIZEOF_SIZE_T
#if !defined(HAVE_SIZEOF_SIZE_T)
#define size_t int
#endif
#cmakedefine HAVE_PID_T 1
#if !HAVE_PID_T
typedef int pid_t;
#endif
#cmakedefine SIZEOF_TIME_T ${SIZEOF_TIME_T}
#if !defined(_MSC_VER)
#define _unused(x) (void)x;
#else
#define _unused(x)
#endif
libical-1.0.1/debian/ 0000775 0000000 0000000 00000000000 12415522231 0014327 5 ustar 00root root 0000000 0000000 libical-1.0.1/debian/.svnignore 0000664 0000000 0000000 00000000046 12415522231 0016342 0 ustar 00root root 0000000 0000000 libical-dev
libical0
libical0-dbg
tmp
libical-1.0.1/debian/changelog 0000664 0000000 0000000 00000002226 12415522231 0016203 0 ustar 00root root 0000000 0000000 libical (0.43-6) stable; urgency=high
* new upstream release
-- Wilfried Goesgens Sat, 13 Sep 2008 10:00:00 +0001
libical (0.31-4) stable; urgency=high
* new release fixing a crash
-- Wilfried Goesgens Mon, 17 Mar 2008 20:00:00 +0001
libical (0.30-1) unstable; urgency=low
[ Wilfried Goesgens ]
* remove CDBS
* merge into upstream libical
* merge in several patches roaming arround
-- Wilfried Goesgens Wed, 30 Nov 2007 12:19:06 +0100
libical (0.26.6-1) unstable; urgency=low
[ Fathi Boudra ]
* Initial Debian release (Closes: #404862)
* Remove dirs and README.Debian
* Add soname patch
* compat: bumped to 5
* control:
* convert package to cdbs
* add myself as uploader
* bump Standards-Version to 3.7.2
* rewrite descriptions
* copyright: complete rewrite
[ Wilfried Goesgens ]
* Update to aurore ical.
-- Fathi Boudra Wed, 27 Dec 2006 12:19:06 +0100
libical (0.24-1) unstable; urgency=low
* Initial release
-- Wilfried Goesgens Fri, 22 Jul 2005 13:09:43 +0200
libical-1.0.1/debian/compat 0000664 0000000 0000000 00000000002 12415522231 0015525 0 ustar 00root root 0000000 0000000 5
libical-1.0.1/debian/control 0000664 0000000 0000000 00000004705 12415522231 0015740 0 ustar 00root root 0000000 0000000 Source: libical
Section: libs
Priority: optional
Maintainer: Wilfried Goesgens
Uploaders: Fathi Boudra
Build-Depends: debhelper (>= 5.0.42), autotools-dev, tzdata, swig,
python-all-dev (>= 2.4.4), python-support (>= 0.5.6), python (>= 2.4.4)
XS-Python-Version: all
Standards-Version: 3.7.2
Homepage: http://freeassociation.sourceforge.net
Package: libical-dev
Section: libdevel
Architecture: any
Depends: ${misc:Depends}, libical0 (= ${binary:Version})
Description: iCalendar library implementation in C (development)
libical is an open source implementation of the IETF's iCalendar calendaring
and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components
and provides a C API for manipulating the component properties, parameters,
and subcomponents.
.
This package contains the libical development files.
Package: libical0
Section: libs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, tzdata
Description: iCalendar library implementation in C (runtime)
libical is an open source implementation of the IETF's iCalendar calendaring
and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components
and provides a C API for manipulating the component properties, parameters,
and subcomponents.
.
This package contains the files necessary for running applications that use
the libical library.
Package: libical0-dbg
Section: libs
Priority: extra
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libical0 (= ${binary:Version})
Description: iCalendar library implementation in C (runtime)
libical is an open source implementation of the IETF's iCalendar calendaring
and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components
and provides a C API for manipulating the component properties, parameters,
and subcomponents.
.
This package contains the files necessary for running and debugging
applications that use the libical library.
Package: python-libical
Section: python
Architecture: any
Depends: ${shlibs:Depends}, ${python:Depends}, libical0 (= ${binary:Version})
Description: iCalendar library implementation python language bindings
libical is an open source implementation of the IETF's iCalendar calendaring
and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components
and provides a C API for manipulating the component properties, parameters,
and subcomponents.
.
This package contains the python language bindings.
libical-1.0.1/debian/copyright 0000664 0000000 0000000 00000062526 12415522231 0016275 0 ustar 00root root 0000000 0000000 This package was debianized by Fathi Boudra on
Wed, 27 Dec 2006 12:19:06 +0100.
It was downloaded from http://www.aurore.net/projects/libical/
This is a modified version of the original libical project from softwarestudio
and the original author is Eric Busboom .
Upstream Authors:
John Gray
Andrea Campi
Omar Kilani
Copyright for generated icalderivedproperties:
(C) 1999 Eric Busboom
Copyright for generated restrictionrecords and parameterrestrictions:
(C) 1999 Graham Davison
Copyright for sspm based on code from the mimelite distribution:
(C) 1994 Gisle Hannemyr
(C) 2000 Eric Busboom
Copyright for snprintf:
(C) 1997 Theo de Raadt
Copyright for astime and caldate:
(C) 1986-2000 Hiram Clawson
Copyright for icalattach:
(C) 2002 Andrea Campi
Copyright for icaltimezone:
(C) 2001 Damon Chaplin
Copyright for icalarray:
(C) 2001 Ximian Inc.
astime and caldate license:
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.
Redistributions in binary form must reproduce the
above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or
other materials provided with the distribution.
Neither name of The Museum of Hiram nor the names of
its contributors may be used to endorse or promote products
derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
snprintf license:
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
sspm license:
Permission is granted to hack, make and distribute copies of this
program as long as this copyright notice is not removed.
libical license:
The code and datafiles in this distribution are licensed under the
Mozilla Public License. See http://www.mozilla.org/NPL/MPL-1.0.html
for a copy of the license. Alternately, you may use libical under the
terms of the GNU Library General Public License. See
http://www.fsf.org/copyleft/lesser.html for a copy of the LGPL.
This dual license ensures that the library can be incorporated into
both proprietary code and GPL'd programs, and will benefit from
improvements made by programmers in both realms. I will only accept
changes into my version of the library if they are similarly
dual-licensed.
This program is free software; you can redistribute it and/or modify
it under the terms of either:
The LGPL as published by the Free Software Foundation, version
2.1, available at: http://www.fsf.org/copyleft/lesser.html
Or:
The Mozilla Public License Version 1.0. You may obtain a copy of
the License at http://www.mozilla.org/MPL/
MPL 1.0 license:
MOZILLA PUBLIC LICENSE
Version 1.0
----------------
1. Definitions.
1.1. ``Contributor'' means each entity that creates or contributes to
the creation of Modifications.
1.2. ``Contributor Version'' means the combination of the Original
Code, prior Modifications used by a Contributor, and the Modifications
made by that particular Contributor.
1.3. ``Covered Code'' means the Original Code or Modifications or the
combination of the Original Code and Modifications, in each case
including portions thereof.
1.4. ``Electronic Distribution Mechanism'' means a mechanism generally
accepted in the software development community for the electronic
transfer of data.
1.5. ``Executable'' means Covered Code in any form other than Source
Code.
1.6. ``Initial Developer'' means the individual or entity identified as
the Initial Developer in the Source Code notice required by Exhibit A.
1.7. ``Larger Work'' means a work which combines Covered Code or
portions thereof with code not governed by the terms of this License.
1.8. ``License'' means this document.
1.9. ``Modifications'' means any addition to or deletion from the
substance or structure of either the Original Code or any previous
Modifications. When Covered Code is released as a series of files, a
Modification is:
A. Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications.
B. Any new file that contains any part of the Original Code or
previous Modifications.
1.10. ``Original Code'' means Source Code of computer software code
which is described in the Source Code notice required by Exhibit A as
Original Code, and which, at the time of its release under this License
is not already Covered Code governed by this License.
1.11. ``Source Code'' means the preferred form of the Covered Code for
making modifications to it, including all modules it contains, plus any
associated interface definition files, scripts used to control
compilation and installation of an Executable, or a list of source code
differential comparisons against either the Original Code or another
well known, available Covered Code of the Contributor's choice. The
Source Code can be in a compressed or archival form, provided the
appropriate decompression or de-archiving software is widely available
for no charge.
1.12. ``You'' means an individual or a legal entity exercising rights
under, and complying with all of the terms of, this License or a future
version of this License issued under Section 6.1. For legal entities,
``You'' includes any entity which controls, is controlled by, or is
under common control with You. For purposes of this definition,
``control'' means (a) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (b) ownership of fifty percent (50%) or more of the
outstanding shares or beneficial ownership of such entity.
2. Source Code License.
2.1. The Initial Developer Grant.
The Initial Developer hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property
claims:
(a) to use, reproduce, modify, display, perform, sublicense and
distribute the Original Code (or portions thereof) with or without
Modifications, or as part of a Larger Work; and
(b) under patents now or hereafter owned or controlled by Initial
Developer, to make, have made, use and sell (``Utilize'') the
Original Code (or portions thereof), but solely to the extent that
any such patent is reasonably necessary to enable You to Utilize
the Original Code (or portions thereof) and not to any greater
extent that may be necessary to Utilize further Modifications or
combinations.
2.2. Contributor Grant.
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property
claims:
(a) to use, reproduce, modify, display, perform, sublicense and
distribute the Modifications created by such Contributor (or
portions thereof) either on an unmodified basis, with other
Modifications, as Covered Code or as part of a Larger Work; and
(b) under patents now or hereafter owned or controlled by
Contributor, to Utilize the Contributor Version (or portions
thereof), but solely to the extent that any such patent is
reasonably necessary to enable You to Utilize the Contributor
Version (or portions thereof), and not to any greater extent that
may be necessary to Utilize further Modifications or combinations.
3. Distribution Obligations.
3.1. Application of License.
The Modifications which You create or to which You contribute are
governed by the terms of this License, including without limitation
Section 2.2. The Source Code version of Covered Code may be distributed
only under the terms of this License or a future version of this
License released under Section 6.1, and You must include a copy of this
License with every copy of the Source Code You distribute. You may not
offer or impose any terms on any Source Code version that alters or
restricts the applicable version of this License or the recipients'
rights hereunder. However, You may include an additional document
offering the additional rights described in Section 3.5.
3.2. Availability of Source Code.
Any Modification which You create or to which You contribute must be
made available in Source Code form under the terms of this License
either on the same media as an Executable version or via an accepted
Electronic Distribution Mechanism to anyone to whom you made an
Executable version available; and if made available via Electronic
Distribution Mechanism, must remain available for at least twelve (12)
months after the date it initially became available, or at least six
(6) months after a subsequent version of that particular Modification
has been made available to such recipients. You are responsible for
ensuring that the Source Code version remains available even if the
Electronic Distribution Mechanism is maintained by a third party.
3.3. Description of Modifications.
You must cause all Covered Code to which you contribute to contain a
file documenting the changes You made to create that Covered Code and
the date of any change. You must include a prominent statement that the
Modification is derived, directly or indirectly, from Original Code
provided by the Initial Developer and including the name of the Initial
Developer in (a) the Source Code, and (b) in any notice in an
Executable version or related documentation in which You describe the
origin or ownership of the Covered Code.
3.4. Intellectual Property Matters
(a) Third Party Claims.
If You have knowledge that a party claims an intellectual property
right in particular functionality or code (or its utilization
under this License), you must include a text file with the source
code distribution titled ``LEGAL'' which describes the claim and
the party making the claim in sufficient detail that a recipient
will know whom to contact. If you obtain such knowledge after You
make Your Modification available as described in Section 3.2, You
shall promptly modify the LEGAL file in all copies You make
available thereafter and shall take other steps (such as notifying
appropriate mailing lists or newsgroups) reasonably calculated to
inform those who received the Covered Code that new knowledge has
been obtained.
(b) Contributor APIs.
If Your Modification is an application programming interface and
You own or control patents which are reasonably necessary to
implement that API, you must also include this information in the
LEGAL file.
3.5. Required Notices.
You must duplicate the notice in Exhibit A in each file of the Source
Code, and this License in any documentation for the Source Code, where
You describe recipients' rights relating to Covered Code. If You
created one or more Modification(s), You may add your name as a
Contributor to the notice described in Exhibit A. If it is not possible
to put such notice in a particular Source Code file due to its
structure, then you must include such notice in a location (such as a
relevant directory file) where a user would be likely to look for such
a notice. You may choose to offer, and to charge a fee for, warranty,
support, indemnity or liability obligations to one or more recipients
of Covered Code. However, You may do so only on Your own behalf, and
not on behalf of the Initial Developer or any Contributor. You must
make it absolutely clear than any such warranty, support, indemnity or
liability obligation is offered by You alone, and You hereby agree to
indemnify the Initial Developer and every Contributor for any liability
incurred by the Initial Developer or such Contributor as a result of
warranty, support, indemnity or liability terms You offer.
3.6. Distribution of Executable Versions.
You may distribute Covered Code in Executable form only if the
requirements of Section 3.1-3.5 have been met for that Covered Code,
and if You include a notice stating that the Source Code version of the
Covered Code is available under the terms of this License, including a
description of how and where You have fulfilled the obligations of
Section 3.2. The notice must be conspicuously included in any notice in
an Executable version, related documentation or collateral in which You
describe recipients' rights relating to the Covered Code. You may
distribute the Executable version of Covered Code under a license of
Your choice, which may contain terms different from this License,
provided that You are in compliance with the terms of this License and
that the license for the Executable version does not attempt to limit
or alter the recipient's rights in the Source Code version from the
rights set forth in this License. If You distribute the Executable
version under a different license You must make it absolutely clear
that any terms which differ from this License are offered by You alone,
not by the Initial Developer or any Contributor. You hereby agree to
indemnify the Initial Developer and every Contributor for any liability
incurred by the Initial Developer or such Contributor as a result of
any such terms You offer.
3.7. Larger Works.
You may create a Larger Work by combining Covered Code with other code
not governed by the terms of this License and distribute the Larger
Work as a single product. In such a case, You must make sure the
requirements of this License are fulfilled for the Covered Code.
4. Inability to Comply Due to Statute or Regulation.
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Code due to statute
or regulation then You must: (a) comply with the terms of this License
to the maximum extent possible; and (b) describe the limitations and
the code they affect. Such description must be included in the LEGAL
file described in Section 3.4 and must be included with all
distributions of the Source Code. Except to the extent prohibited by
statute or regulation, such description must be sufficiently detailed
for a recipient of ordinary skill to be able to understand it.
5. Application of this License.
This License applies to code to which the Initial Developer has
attached the notice in Exhibit A, and to related Covered Code.
6. Versions of the License.
6.1. New Versions.
Netscape Communications Corporation (``Netscape'') may publish revised
and/or new versions of the License from time to time. Each version will
be given a distinguishing version number.
6.2. Effect of New Versions.
Once Covered Code has been published under a particular version of the
License, You may always continue to use it under the terms of that
version. You may also choose to use such Covered Code under the terms
of any subsequent version of the License published by Netscape. No one
other than Netscape has the right to modify the terms applicable to
Covered Code created under this License.
6.3. Derivative Works.
If you create or use a modified version of this License (which you may
only do in order to apply it to code which is not already Covered Code
governed by this License), you must (a) rename Your license so that the
phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or
any confusingly similar phrase do not appear anywhere in your license
and (b) otherwise make it clear that your version of the license
contains terms which differ from the Mozilla Public License and
Netscape Public License. (Filling in the name of the Initial Developer,
Original Code or Contributor in the notice described in Exhibit A shall
not of themselves be deemed to be modifications of this License.)
7. DISCLAIMER OF WARRANTY.
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS,
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
8. TERMINATION.
This License and the rights granted hereunder will terminate
automatically if You fail to comply with terms herein and fail to cure
such breach within 30 days of becoming aware of the breach. All
sublicenses to the Covered Code which are properly granted shall
survive any termination of this License. Provisions which, by their
nature, must remain in effect beyond the termination of this License
shall survive.
9. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER
PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND
ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE
BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
10. U.S. GOVERNMENT END USERS.
The Covered Code is a ``commercial item,'' as that term is defined in
48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer
software'' and ``commercial computer software documentation,'' as such
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
all U.S. Government End Users acquire Covered Code with only those
rights set forth herein.
11. MISCELLANEOUS.
This License represents the complete agreement concerning subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. This License shall be governed by
California law provisions (except to the extent applicable law, if any,
provides otherwise), excluding its conflict-of-law provisions. With
respect to disputes in which at least one party is a citizen of, or an
entity chartered or registered to do business in, the United States of
America: (a) unless otherwise agreed in writing, all disputes relating
to this License (excepting any dispute relating to intellectual
property rights) shall be subject to final and binding arbitration,
with the losing party paying all costs of arbitration; (b) any
arbitration relating to this Agreement shall be held in Santa Clara
County, California, under the auspices of JAMS/EndDispute; and (c) any
litigation relating to this Agreement shall be subject to the
jurisdiction of the Federal Courts of the Northern District of
California, with venue lying in Santa Clara County, California, with
the losing party responsible for costs, including without limitation,
court costs and reasonable attorneys fees and expenses. The application
of the United Nations Convention on Contracts for the International
Sale of Goods is expressly excluded. Any law or regulation which
provides that the language of a contract shall be construed against the
drafter shall not apply to this License.
12. RESPONSIBILITY FOR CLAIMS.
Except in cases where another Contributor has failed to comply with
Section 3.4, You are responsible for damages arising, directly or
indirectly, out of Your utilization of rights under this License, based
on the number of copies of Covered Code you made available, the
revenues you received from utilizing such rights, and other relevant
factors. You agree to work with affected parties to distribute
responsibility on an equitable basis.
EXHIBIT A.
``The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
The Original Code is ______________________________________.
The Initial Developer of the Original Code is ________________________.
Portions created by ______________________ are Copyright (C) ______
_______________________. All Rights Reserved.
Contributor(s): ______________________________________.''
LGPL license:
This package is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU Lesser General
Public License can be found in `/usr/share/common-licenses/LGPL'.
The Debian packaging is (C) 2006, Fathi Boudra and
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
libical-1.0.1/debian/docs 0000664 0000000 0000000 00000000021 12415522231 0015173 0 ustar 00root root 0000000 0000000 NEWS
README
TODO
libical-1.0.1/debian/libical-dev.install 0000664 0000000 0000000 00000000243 12415522231 0020071 0 ustar 00root root 0000000 0000000 usr/include
usr/lib/libical.a
usr/lib/libical.so
usr/lib/libicalss.a
usr/lib/libicalss.so
usr/lib/libicalvcal.a
usr/lib/libicalvcal.so
usr/lib/pkgconfig/libical.pc libical-1.0.1/debian/libical0.install 0000664 0000000 0000000 00000000022 12415522231 0017370 0 ustar 00root root 0000000 0000000 usr/lib/lib*.so.*
libical-1.0.1/debian/python-libical.install 0000664 0000000 0000000 00000000023 12415522231 0020630 0 ustar 00root root 0000000 0000000 usr/lib/pymodules/* libical-1.0.1/debian/rules 0000775 0000000 0000000 00000011676 12415522231 0015422 0 ustar 00root root 0000000 0000000 #!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
CFLAGS = -Wall -g
EXTRA_ARGS=
PROFILE_ARGS=
# To enable debugging: export DEB_BUILD_OPTIONS="debug profiling threadoff"
ifneq (,$(findstring profiling,$(DEB_BUILD_OPTIONS)))
PROFILE_ARGS= --with-gprof
endif
ifneq (,$(findstring backtrace,$(DEB_BUILD_OPTIONS)))
EXTRA_ARGS=--with-backtrace
BTCFLAGS=-rdynamic
endif
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0 -ggdb -D_GNU_SOURCE -MD -MP -Wl,--as-needed -Wall -ansi
else
CFLAGS += -O2
endif
# shared library versions, option 1
version=2.0.5
major=2
# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
#version=`ls src/.libs/lib*.so.* | \
# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
#major=`ls src/.libs/lib*.so.* | \
# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
PYVERS=$(shell pyversions -vr)
build: build-c $(PYVERS:%=build-python%/build-stamp)
install: build install-c $(PYVERS:%=install-python%)
clean: clean-c $(PYVERS:%=clean-python%)
### Python libraries build rules ###
build-python%/configure-stamp:
dh_testdir
mkdir build-python$*
cd build-python$* && \
PYTHON=/usr/bin/python$* CFLAGS="$(BTCFLAGS) $(CFLAGS)" ../configure \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--srcdir=.. \
--prefix=/usr \
--includedir="/usr/include" \
--mandir="/usr/share/man" \
--sysconfdir=/etc \
--localstatedir=/var \
$(EXTRA_ARGS) $(PROFILE_ARGS) \
--libexecdir="/usr/lib/libical" \
--enable-python
touch $@
build-python%/build-stamp: build-c build-python%/configure-stamp
dh_testdir
# Trick into using already built build-c libs so we don't end up
# building the same ical lib more than once.
find "build-python$*/src" -maxdepth 1 -mindepth 1 | grep -v python$$ | xargs -r -t rm -rf
find "build-c/src" -maxdepth 1 -mindepth 1 | grep -v python$$ | xargs -r -t -I{} ln -s "../../{}" "build-python$*/src"
$(MAKE) -C build-python$*/src/python pyexecdir=/usr/lib/pymodules/python$*
touch $@
install-python%: build-python%/build-stamp
dh_testdir
dh_testroot
# dh_clean -k
dh_installdirs
# install with hack to move installed python libs to pymodule dir
$(MAKE) -C build-python$*/src/python install pyexecdir=/usr/lib/pymodules/python$* DESTDIR=$(CURDIR)/debian/tmp && \
mv -i $(CURDIR)/debian/tmp/usr/lib/python$*/*/* $(CURDIR)/debian/tmp/usr/lib/pymodules/python$*/
clean-python%:
# mkdir -p build-python$* && cd build-python$*
dh_testdir
# dh_testroot
rm -rf build-python$*
dh_prep
### C libraries build rules ###
build-c/configure-stamp: configure
#config.status: configure
dh_testdir
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
cp -f /usr/share/misc/config.sub config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
cp -f /usr/share/misc/config.guess config.guess
endif
mkdir build-c
cd build-c && \
CFLAGS="$(BTCFLAGS) $(CFLAGS)" ../configure \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--includedir="/usr/include" \
--mandir="/usr/share/man" \
--sysconfdir=/etc \
--localstatedir=/var \
$(EXTRA_ARGS) $(PROFILE_ARGS) \
--libexecdir="/usr/lib/libical"
touch $@
build-c: build-c/build-stamp
build-c/build-stamp: build-c/configure-stamp
dh_testdir
# $(MAKE) clean
$(MAKE) -C build-c
touch $@
clean-c:
dh_testdir
dh_testroot
rm -rf build-c
dh_prep
install-c: build-c
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
$(MAKE) -C build-c DESTDIR=$(CURDIR)/debian/tmp install
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs ChangeLog
dh_installdocs
dh_installexamples
dh_install -s --sourcedir=debian/tmp
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
dh_pysupport
# dh_makeshlibs
dh_installdeb
# dh_shlibdeps
# We need to exclude dependency resolving for the python extension
# module because if libical0 is installed but libical-dev is not
# we get build errors. The lib in /usr/lib will be found first
# but no .la will exist to get the dependency info from. Is there
# a way to tell dh_shlibdeps to find the lib first in debian/tmp?
dh_shlibdeps -XLibicalWrap
# dh_shlibdeps -l$(CURDIR)/debian/tmp/usr/lib -- -v
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
libical-1.0.1/design-data/ 0000775 0000000 0000000 00000000000 12415522231 0015265 5 ustar 00root root 0000000 0000000 libical-1.0.1/design-data/.svnignore 0000664 0000000 0000000 00000000053 12415522231 0017276 0 ustar 00root root 0000000 0000000 Makefile.in
Makefile
.deps
.libs
*.lo
*.la
libical-1.0.1/design-data/CMakeLists.txt 0000664 0000000 0000000 00000000054 12415522231 0020024 0 ustar 00root root 0000000 0000000
########### install files ###############
libical-1.0.1/design-data/components.txt 0000664 0000000 0000000 00000000366 12415522231 0020220 0 ustar 00root root 0000000 0000000 ANY
VAGENDA
VALARM
VAVAILABILITY
VCALENDAR
VCAR
VCOMMAND
VEVENT
VFREEBUSY
VJOURNAL
VQUERY
VPOLL
VSCHEDULE
VTIMEZONE
VTODO
X
XAUDIOALARM
XAVAILABLE
XDAYLIGHTSAVINGSTIME
XDISPLAYALARM
XEMAILALARM
XLICINVALID
XMIMEPART
XPROCEDUREALARM
XSTANDARDTIME
libical-1.0.1/design-data/parameters.csv 0000664 0000000 0000000 00000005435 12415522231 0020154 0 ustar 00root root 0000000 0000000 "#Name ","C icalparameter_kind Enum","C Type","Enumeration Values"
"ALTREP","2","const char*",
"CHARSET","3","const char*",
"CN","4","const char*",
"CUTYPE","5","icalparameter_cutype","X=20004;INDIVIDUAL;GROUP;RESOURCE;ROOM;UNKNOWN;NONE"
"DELEGATED-FROM","6","const char*",
"DELEGATED-TO","7","const char*",
"DIR","8","const char*",
"ENCODING","10","icalparameter_encoding","X=20015;8BIT;BASE64;NONE"
"FBTYPE","11","icalparameter_fbtype","X=20019;FREE;BUSY;BUSY-UNAVAILABLE;BUSY-TENTATIVE;NONE"
"FMTTYPE","12","const char*",
"LANGUAGE","14","const char*",
"MEMBER","18","const char*",
"PARTSTAT","20","icalparameter_partstat","X=20029;NEEDS-ACTION;ACCEPTED;DECLINED;TENTATIVE;DELEGATED;COMPLETED;INPROCESS;NONE"
"RANGE","21","icalparameter_range","X=20038;THISANDPRIOR;THISANDFUTURE;NONE"
"RELATED","22","icalparameter_related","X=20042;START;END;NONE"
"RELTYPE","23","icalparameter_reltype","X=20046;PARENT;CHILD;SIBLING;NONE;POLL=20107"
"ROLE","24","icalparameter_role","X=20051;CHAIR;REQ-PARTICIPANT;OPT-PARTICIPANT;NON-PARTICIPANT;NONE"
"RSVP","25","icalparameter_rsvp","X=20057;TRUE;FALSE;NONE"
"SENT-BY","26","const char*",
"TZID","27","const char*",
"VALUE","28","icalparameter_value","X=20069;BINARY;BOOLEAN;DATE;DURATION;FLOAT;INTEGER;PERIOD;RECUR;TEXT;URI;ERROR;DATE-TIME;UTC-OFFSET;CAL-ADDRESS;NONE"
"X","29","const char*",
"X-LIC-ERRORTYPE","31","icalparameter_xlicerrortype","X=20096;COMPONENT-PARSE-ERROR;PROPERTY-PARSE-ERROR;PARAMETER-NAME-PARSE-ERROR;PARAMETER-VALUE-PARSE-ERROR;VALUE-PARSE-ERROR;INVALID-ITIP;UNKNOWN-VCAL-PROP-ERROR;MIME-PARSE-ERROR;VCAL-PROP-PARSE-ERROR;NONE"
"X-LIC-COMPARETYPE","30","icalparameter_xliccomparetype","X=20085;EQUAL;NOTEQUAL;LESS;GREATER;LESSEQUAL;GREATEREQUAL;REGEX;ISNULL;ISNOTNULL;NONE"
"#Parameters from CalDAV Scheduling Extensions to WebDAV"
"SCHEDULE-AGENT","34","icalparameter_scheduleagent","X=20061;SERVER;CLIENT;NONE"
"SCHEDULE-FORCE-SEND","35","icalparameter_scheduleforcesend","X=20065;REQUEST;REPLY;NONE"
"SCHEDULE-STATUS","36","const char*",
"#CAP Parameters","Draft 8",
"#this parameter should really be called ACTION, but this conflicts with the ACTION property"
"ACTIONPARAM","1","icalparameter_action","X=20000;ASK;ABORT;NONE"
"ID","13","const char*",
"ENABLE","9","icalparameter_enable","X=20011;TRUE;FALSE;NONE"
"LATENCY","15","const char*",
"LOCAL","16","icalparameter_local","X=20025;TRUE;FALSE;NONE"
"LOCALIZE","17","const char*",
"OPTIONS","19","const char*",
"NO","32",,
"#In practice any unknown paramater that is not an xparam is treated as an ianaparam"
"IANA","33","const char*",
"ANY","0",,
"#VPOLL Parameters","draft-york-vpoll",
"PUBLIC-COMMENT","37","const char*",
"RESPONSE","38","int",
"STAY-INFORMED","39","icalparameter_stayinformed","X=20108;TRUE;FALSE;NONE"
"#NOTE for updaters. Preserve the icalparameter_kind Enum values to aid forward compatibility"
libical-1.0.1/design-data/params-in-prop.txt 0000664 0000000 0000000 00000004241 12415522231 0020674 0 ustar 00root root 0000000 0000000 ACKNOWLEDGED X
ACTION VALUE X
ATTACH FMTTYPE ENCODING VALUE X
ATTENDEE CN CUTYPE DELEGATED-FROM DELEGATED-TO DIR LANGUAGE MEMBER PARTSTAT ROLE RSVP SENT-BY SCHEDULE-AGENT SCHEDULE-FORCE-SEND SCHEDULE-STATUS X
CALSCALE X
CATEGORIES LANGUAGE X
CLASS X
CMD ACTIONPARAM ID LATENCY LOCALIZE OPTIONS X
COMMENT ALTREP LANGUAGE X
COMPLETED X
CONTACT ALTREP LANGUAGE X
CREATED X
DESCRIPTION ALTREP LANGUAGE X
DTEND VALUE TZID X
DTSTAMP X
DTSTART VALUE TZID X
DUE VALUE TZID X
DURATION X
EXDATE VALUE TZID X
EXRULE X
FREEBUSY FBTYPE X
GEO X
LAST-MODIFIED X
LOCATION ALTREP LANGUAGE X
METHOD X
ORGANIZER CN DIR LANGUAGE SCHEDULE-AGENT SCHEDULE-FORCE-SEND SCHEDULE-STATUS SENT-BY X
PERCENT-COMPLETE X
PRIORITY X
PRODID X
RDATE VALUE TZID X
RECURRENCE-ID VALUE RANGE TZID X
RELATED-TO RELTYPE X
REPEAT X
REQUEST-STATUS LANGUAGE X
RESOURCES ALTREP LANGUAGE X
RRULE X
SEQUENCE LOCAL X
STATUS X
SUMMARY ALTREP LANGUAGE X
TRANSP X
TRIGGER ENABLE VALUE RELATED X
TZID X
TZNAME LANGUAGE X
TZOFFSETFROM X
TZOFFSETTO X
TZURL X
UID X
URL X
VERSION X
XPROP LANGUAGE X
X-LIC-ERROR XLICEERRORTYPE X
SCOPE X
MAXRESULTS X
MAXRESULTSSIZE X
QUERY X
QUERYNAME X
TARGET X
EXPAND X
BUSYTYPE X
ACCEPT-RESPONSE X
POLL-ITEM-ID PUBLIC-COMMENT RESPONSE STAY-INFORMED X
POLL-MODE X
POLL-PROPERTIES X
POLL-WINNER X
VOTER CN CUTYPE DELEGATED-FROM DELEGATED-TO DIR LANGUAGE MEMBER RESPONSE ROLE RSVP SCHEDULE-AGENT SCHEDULE-FORCE-SEND SCHEDULE-STATUS SENT-BY STAY-INFORMED X
libical-1.0.1/design-data/properties.csv 0000664 0000000 0000000 00000010672 12415522231 0020204 0 ustar 00root root 0000000 0000000 ,,
"#Property Name","C icalproperty_kind Enum","libical Value type","iCalendar default value"
"#iCalendar Properties","RFC5545 Section 8.3.2",
"CALSCALE","8","TEXT","TEXT"
"METHOD","48","METHOD","METHOD"
"PRODID","57","TEXT","TEXT"
"VERSION","89","TEXT","TEXT"
"ATTACH","4","ATTACH","URI"
"CATEGORIES","12","TEXT","TEXT"
"CLASS","13","CLASS","CLASS"
"COMMENT","15","TEXT","TEXT"
"DESCRIPTION","29","TEXT","TEXT"
"GEO","39","GEO","GEO"
"LOCATION","43","TEXT","TEXT"
"PERCENT-COMPLETE","54","INTEGER","INTEGER"
"PRIORITY","56","INTEGER","INTEGER"
"RESOURCES","71","TEXT","TEXT"
"STATUS","76","STATUS","STATUS"
"SUMMARY","78","TEXT","TEXT"
"COMPLETED","16","DATE-TIME","DATE-TIME"
"DTEND","30","DATE-TIME","DATE-TIME"
"DUE","33","DATE-TIME","DATE-TIME"
"DTSTART","32","DATE-TIME","DATE-TIME"
"DURATION","34","DURATION","DURATION"
"FREEBUSY","38","PERIOD","PERIOD"
"TRANSP","80","TRANSP","TRANSP"
"TZID","82","TEXT","TEXT"
"TZNAME","83","TEXT","TEXT"
"TZOFFSETFROM","84","UTC-OFFSET","UTC-OFFSET"
"TZOFFSETTO","85","UTC-OFFSET","UTC-OFFSET"
"TZURL","86","URI","URI"
"ATTENDEE","5","CAL-ADDRESS","CAL-ADDRESS"
"CONTACT",""18,"TEXT","TEXT"
"ORGANIZER","52","CAL-ADDRESS","CAL-ADDRESS"
"RECURRENCE-ID","66","DATE-TIME","DATE-TIME"
"RELATED-TO","67","TEXT","TEXT"
"URL","88","URI","URI"
"UID","87","TEXT","TEXT"
"EXDATE","35","DATE-TIME","DATE-TIME"
"EXRULE","37","RECUR","RECUR"
"RDATE",""62,"DATE-TIME-PERIOD","DATE-TIME"
"RRULE","73","RECUR","RECUR"
"ACTION","2","ACTION","ACTION"
"REPEAT","69","INTEGER","INTEGER"
"TRIGGER","81","TRIGGER","DURATION"
"CREATED","19","DATE-TIME","DATE-TIME"
"DTSTAMP",""31,"DATE-TIME","DATE-TIME"
"LAST-MODIFIED",""42,"DATE-TIME","DATE-TIME"
"SEQUENCE","75","INTEGER","INTEGER"
"REQUEST-STATUS","70","REQUEST-STATUS","REQUEST-STATUS"
"X","90","X","X"
"#CAP Properties","RFC 4324 Section 2.1.2",
,"FIXME","Should be BOOLEAN"
"ALLOW-CONFLICT","3","TEXT","TEXT"
"CAP-VERSION","9","TEXT","TEXT"
"CAR-LEVEL","10","CAR-LEVEL","CAR-LEVEL"
"COMPONENTS","17","TEXT","TEXT"
"CSID","20","URI","URI"
"CALID","6","TEXT","TEXT"
"CALMASTER","7","TEXT","TEXT"
"CARID","11","TEXT","TEXT"
"CMD","14","CMD","CMD"
"DECREED","23","TEXT","TEXT"
"DEFAULT-CHARSET","24","TEXT","TEXT"
"DEFAULT-LOCALE","25","TEXT","TEXT"
"DEFAULT-TZID","26","TEXT","TEXT"
"DEFAULT-VCARS","27","TEXT","TEXT"
,"FIXME","Should be UPN-FILTER"
"DENY","28","TEXT","TEXT"
,"FIXME","Should be BOOLEAN"
"EXPAND","36","INTEGER","INTEGER"
,"FIXME","Should be UPN-FILTER"
"GRANT","40","TEXT","TEXT"
"ITIP-VERSION","41","TEXT","TEXT"
"MAXDATE","45","DATE-TIME","DATE-TIME"
"MAX-COMPONENT-SIZE","44","INTEGER","INTEGER"
"MINDATE","49","DATE-TIME","DATE-TIME"
"MULTIPART","50","TEXT","TEXT"
"NAME","51","TEXT","TEXT"
"OWNER","53","TEXT","TEXT"
"PERMISSION","55","TEXT","TEXT"
"QUERY","58","QUERY","QUERY"
"QUERYID","60","TEXT","TEXT"
"QUERY-LEVEL","59","QUERY-LEVEL","QUERY-LEVEL"
"RECUR-ACCEPTED","63","TEXT","TEXT"
"RECUR-EXPAND","64","TEXT","TEXT"
"RECUR-LIMIT","65","TEXT","TEXT"
"RESTRICTION","72","QUERY","QUERY"
"SCOPE","74","TEXT","TEXT"
"STORES-EXPANDED","77","TEXT","TEXT"
"TARGET","79","CAL-ADDRESS","CAL-ADDRESS"
"#Miscellaneous Properties","Origin Unknown",
"MAXRESULTS","46","INTEGER","INTEGER"
"MAXRESULTSSIZE","47","INTEGER","INTEGER"
"QUERYNAME","61","TEXT","TEXT"
"RELCALID","68","TEXT","TEXT"
"DATE-MAX","21","DATE-TIME","DATE-TIME"
"DATE-MIN","22","DATE-TIME","DATE-TIME"
"#libical Internal Properties",,
"X-LIC-ERROR","93","TEXT","TEXT"
"X-LIC-CLUSTERCOUNT","92","STRING","STRING"
"X-LIC-MIMECONTENTTYPE","96","STRING","STRING"
"X-LIC-MIMECHARSET","94","STRING","STRING"
"X-LIC-MIMEENCODING","97","STRING","STRING"
"X-LIC-MIMEOPTINFO","99","STRING","STRING"
"X-LIC-MIMECID","95","STRING","STRING"
"X-LIC-MIMEFILENAME","98","STRING","STRING"
"X-LIC-CLASS","91","X-LIC-CLASS","X-LIC-CLASS"
"ANY","0","NO","NO"
"NO","100","NO","NO"
"#VALARM Extension Properties","draft-daboo-valarm-extensions Section 13.1",
"ACKNOWLEDGED","1","DATE-TIME","DATE-TIME"
"#VAVAILABILITY Properties","draft-daboo-calendar-availability",
"BUSYTYPE","101","BUSYTYPE","BUSYTYPE"
"#VPOLL Properties","draft-york-vpoll",
"ACCEPT-RESPONSE","102","TEXT,"TEXT"
"POLL-ITEM-ID","103","INTEGER,"INTEGER"
"POLL-MODE","104","POLLMODE,"POLLMODE"
"POLL-PROPERTIES","105","TEXT,"TEXT"
"POLL-WINNER","106","INTEGER,"INTEGER"
"VOTER","107","CAL-ADDRESS,"CAL-ADDRESS"
"#TZdist Properties","draft-ietf-tzdist-service",
"TZID-ALIAS-OF","108","TEXT","TEXT"
"TZUNTIL","109","DATE-TIME","DATE-TIME"
"#NOTE for updaters. Preserve the icalproperty_kind Enum values to aid forward compatibility"
libical-1.0.1/design-data/restrictions.csv 0000664 0000000 0000000 00000177134 12415522231 0020547 0 ustar 00root root 0000000 0000000 # Method, Target component, Property, Sub-component, Restriction
PUBLISH,VEVENT,NONE,NONE,ONEPLUS
PUBLISH,VEVENT,DTSTAMP,NONE,ONE
PUBLISH,VEVENT,DTSTART,NONE,ONE
PUBLISH,VEVENT,ORGANIZER,NONE,ONE
PUBLISH,VEVENT,SUMMARY,NONE,ONE
PUBLISH,VEVENT,UID,NONE,ONE
PUBLISH,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
PUBLISH,VEVENT,SEQUENCE,NONE,ZEROORONE
PUBLISH,VEVENT,ATTACH,NONE,ZEROPLUS
PUBLISH,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
PUBLISH,VEVENT,CLASS,NONE,ZEROORONE
PUBLISH,VEVENT,COMMENT,NONE,ZEROORONE
PUBLISH,VEVENT,CONTACT,NONE,ZEROPLUS
PUBLISH,VEVENT,CREATED,NONE,ZEROORONE
PUBLISH,VEVENT,DESCRIPTION,NONE,ZEROORONE
PUBLISH,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
PUBLISH,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
PUBLISH,VEVENT,EXDATE,NONE,ZEROPLUS
PUBLISH,VEVENT,EXRULE,NONE,ZEROPLUS
PUBLISH,VEVENT,GEO,NONE,ZEROORONE
PUBLISH,VEVENT,LASTMODIFIED,NONE,ZEROORONE
PUBLISH,VEVENT,LOCATION,NONE,ZEROORONE
PUBLISH,VEVENT,PRIORITY,NONE,ZEROORONE
PUBLISH,VEVENT,RDATE,NONE,ZEROPLUS
PUBLISH,VEVENT,RELATEDTO,NONE,ZEROPLUS
PUBLISH,VEVENT,RESOURCES,NONE,ZEROORONE
PUBLISH,VEVENT,RRULE,NONE,ZEROPLUS
PUBLISH,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf_cancel
PUBLISH,VEVENT,TRANSP,NONE,ZEROORONE
PUBLISH,VEVENT,URL,NONE,ZEROORONE
PUBLISH,VEVENT,X,NONE,ZEROPLUS
PUBLISH,VEVENT,ATTENDEE,NONE,ZERO
PUBLISH,VEVENT,REQUESTSTATUS,NONE,ZERO
PUBLISH,VEVENT,NONE,VALARM,ZEROPLUS
PUBLISH,VEVENT,NONE,VFREEBUSY,ZERO
PUBLISH,VEVENT,NONE,VJOURNAL,ZERO
PUBLISH,VEVENT,NONE,VTODO,ZERO
PUBLISH,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
PUBLISH,VEVENT,NONE,X,ZEROPLUS
PUBLISH,VEVENT,RELCALID,NONE,ZEROORONE
REQUEST,VEVENT,NONE,NONE,ONEPLUS
REQUEST,VEVENT,ATTENDEE,NONE,ONEPLUS
REQUEST,VEVENT,DTSTAMP,NONE,ONE
REQUEST,VEVENT,DTSTART,NONE,ONE
REQUEST,VEVENT,ORGANIZER,NONE,ONE
REQUEST,VEVENT,SEQUENCE,NONE,ZEROORONE
REQUEST,VEVENT,SUMMARY,NONE,ONE
REQUEST,VEVENT,UID,NONE,ONE
REQUEST,VEVENT,ATTACH,NONE,ZEROPLUS
REQUEST,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
REQUEST,VEVENT,CLASS,NONE,ZEROORONE
REQUEST,VEVENT,COMMENT,NONE,ZEROORONE
REQUEST,VEVENT,CONTACT,NONE,ZEROPLUS
REQUEST,VEVENT,CREATED,NONE,ZEROORONE
REQUEST,VEVENT,DESCRIPTION,NONE,ZEROORONE
REQUEST,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
REQUEST,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
REQUEST,VEVENT,EXDATE,NONE,ZEROPLUS
REQUEST,VEVENT,EXRULE,NONE,ZEROPLUS
REQUEST,VEVENT,GEO,NONE,ZEROORONE
REQUEST,VEVENT,LASTMODIFIED,NONE,ZEROORONE
REQUEST,VEVENT,LOCATION,NONE,ZEROORONE
REQUEST,VEVENT,PRIORITY,NONE,ZEROORONE
REQUEST,VEVENT,RDATE,NONE,ZEROPLUS
REQUEST,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
REQUEST,VEVENT,RELATEDTO,NONE,ZEROPLUS
REQUEST,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
REQUEST,VEVENT,RESOURCES,NONE,ZEROORONE
REQUEST,VEVENT,RRULE,NONE,ZEROPLUS
REQUEST,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf
REQUEST,VEVENT,TRANSP,NONE,ZEROORONE
REQUEST,VEVENT,URL,NONE,ZEROORONE
REQUEST,VEVENT,X,NONE,ZEROPLUS
REQUEST,VEVENT,NONE,VALARM,ZEROPLUS
REQUEST,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
REQUEST,VEVENT,NONE,X,ZEROPLUS
REQUEST,VEVENT,NONE,VFREEBUSY,ZERO
REQUEST,VEVENT,NONE,VJOURNAL,ZERO
REQUEST,VEVENT,NONE,VTODO,ZERO
REQUEST,VEVENT,RELCALID,NONE,ZEROORONE
REPLY,VEVENT,NONE,NONE,ONEPLUS
REPLY,VEVENT,ATTENDEE,NONE,ONE
REPLY,VEVENT,DTSTAMP,NONE,ONE
REPLY,VEVENT,ORGANIZER,NONE,ONE
REPLY,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
REPLY,VEVENT,UID,NONE,ONE
REPLY,VEVENT,SEQUENCE,NONE,ZEROORONE
REPLY,VEVENT,ATTACH,NONE,ZEROPLUS
REPLY,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
REPLY,VEVENT,CLASS,NONE,ZEROORONE
REPLY,VEVENT,COMMENT,NONE,ZEROORONE
REPLY,VEVENT,CONTACT,NONE,ZEROPLUS
REPLY,VEVENT,CREATED,NONE,ZEROORONE
REPLY,VEVENT,DESCRIPTION,NONE,ZEROORONE
REPLY,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
REPLY,VEVENT,DTSTART,NONE,ZEROORONE
REPLY,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
REPLY,VEVENT,EXDATE,NONE,ZEROPLUS
REPLY,VEVENT,EXRULE,NONE,ZEROPLUS
REPLY,VEVENT,GEO,NONE,ZEROORONE
REPLY,VEVENT,LASTMODIFIED,NONE,ZEROORONE
REPLY,VEVENT,LOCATION,NONE,ZEROORONE
REPLY,VEVENT,PRIORITY,NONE,ZEROORONE
REPLY,VEVENT,RDATE,NONE,ZEROPLUS
REPLY,VEVENT,RELATEDTO,NONE,ZEROPLUS
REPLY,VEVENT,RESOURCES,NONE,ZEROORONE
REPLY,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
REPLY,VEVENT,RRULE,NONE,ZEROPLUS
REPLY,VEVENT,STATUS,NONE,ZEROORONE
REPLY,VEVENT,SUMMARY,NONE,ZEROORONE
REPLY,VEVENT,TRANSP,NONE,ZEROORONE
REPLY,VEVENT,URL,NONE,ZEROORONE
REPLY,VEVENT,X,NONE,ZEROPLUS
REPLY,VEVENT,NONE,VTIMEZONE,ZEROORONE,must_if_tz_ref
REPLY,VEVENT,NONE,X,ZEROPLUS
REPLY,VEVENT,NONE,VALARM,ZERO
REPLY,VEVENT,NONE,VFREEBUSY,ZERO
REPLY,VEVENT,NONE,VJOURNAL,ZERO
REPLY,VEVENT,NONE,VTODO,ZERO
REPLY,VEVENT,RELCALID,NONE,ZEROORONE
ADD,VEVENT,NONE,NONE,ONE
ADD,VEVENT,DTSTAMP,NONE,ONE
ADD,VEVENT,DTSTART,NONE,ONE
ADD,VEVENT,ORGANIZER,NONE,ONE
ADD,VEVENT,SEQUENCE,NONE,ONE
ADD,VEVENT,SUMMARY,NONE,ONE
ADD,VEVENT,UID,NONE,ONE
ADD,VEVENT,ATTACH,NONE,ZEROPLUS
ADD,VEVENT,ATTENDEE,NONE,ZEROPLUS
ADD,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
ADD,VEVENT,CLASS,NONE,ZEROORONE
ADD,VEVENT,COMMENT,NONE,ZEROORONE
ADD,VEVENT,CONTACT,NONE,ZEROPLUS
ADD,VEVENT,CREATED,NONE,ZEROORONE
ADD,VEVENT,DESCRIPTION,NONE,ZEROORONE
ADD,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
ADD,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
ADD,VEVENT,EXDATE,NONE,ZEROPLUS
ADD,VEVENT,EXRULE,NONE,ZEROPLUS
ADD,VEVENT,GEO,NONE,ZEROORONE
ADD,VEVENT,LASTMODIFIED,NONE,ZEROORONE
ADD,VEVENT,LOCATION,NONE,ZEROORONE
ADD,VEVENT,PRIORITY,NONE,ZEROORONE
ADD,VEVENT,RDATE,NONE,ZEROPLUS
ADD,VEVENT,RELATEDTO,NONE,ZEROPLUS
ADD,VEVENT,RESOURCES,NONE,ZEROORONE
ADD,VEVENT,RRULE,NONE,ZEROPLUS
ADD,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf
ADD,VEVENT,TRANSP,NONE,ZEROORONE
ADD,VEVENT,URL,NONE,ZEROORONE
ADD,VEVENT,X,NONE,ZEROPLUS
ADD,VEVENT,RECURRENCEID,NONE,ZERO,must_be_recurring
ADD,VEVENT,REQUESTSTATUS,NONE,ZERO
ADD,VEVENT,NONE,VALARM,ZEROPLUS
ADD,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
ADD,VEVENT,NONE,X,ZEROPLUS
ADD,VEVENT,NONE,VFREEBUSY,ZERO
ADD,VEVENT,NONE,VTODO,ZERO
ADD,VEVENT,NONE,VJOURNAL,ZERO
ADD,VEVENT,RELCALID,NONE,ZEROORONE
CANCEL,VEVENT,NONE,NONE,ONEPLUS
CANCEL,VEVENT,ATTENDEE,NONE,ZEROPLUS
CANCEL,VEVENT,DTSTAMP,NONE,ONE
CANCEL,VEVENT,ORGANIZER,NONE,ONE
CANCEL,VEVENT,SEQUENCE,NONE,ONE
CANCEL,VEVENT,UID,NONE,ONE
CANCEL,VEVENT,COMMENT,NONE,ZEROORONE
CANCEL,VEVENT,ATTACH,NONE,ZEROPLUS
CANCEL,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
CANCEL,VEVENT,CLASS,NONE,ZEROORONE
CANCEL,VEVENT,CONTACT,NONE,ZEROPLUS
CANCEL,VEVENT,CREATED,NONE,ZEROORONE
CANCEL,VEVENT,DESCRIPTION,NONE,ZEROORONE
CANCEL,VEVENT,DTEND,NONE,ONEEXCLUSIVE ,no_duration
CANCEL,VEVENT,DTSTART,NONE,ZEROORONE
CANCEL,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
CANCEL,VEVENT,EXDATE,NONE,ZEROPLUS
CANCEL,VEVENT,EXRULE,NONE,ZEROPLUS
CANCEL,VEVENT,GEO,NONE,ZEROORONE
CANCEL,VEVENT,LASTMODIFIED,NONE,ZEROORONE
CANCEL,VEVENT,LOCATION,NONE,ZEROORONE
CANCEL,VEVENT,PRIORITY,NONE,ZEROORONE
CANCEL,VEVENT,RDATE,NONE,ZEROPLUS
CANCEL,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
CANCEL,VEVENT,RELATEDTO,NONE,ZEROPLUS
CANCEL,VEVENT,RESOURCES,NONE,ZEROORONE
CANCEL,VEVENT,RRULE,NONE,ZEROPLUS
CANCEL,VEVENT,STATUS,NONE,ZEROORONE,must_be_canceled_no_attendee
CANCEL,VEVENT,SUMMARY,NONE,ZEROORONE
CANCEL,VEVENT,TRANSP,NONE,ZEROORONE
CANCEL,VEVENT,URL,NONE,ZEROORONE
CANCEL,VEVENT,X,NONE,ZEROPLUS
CANCEL,VEVENT,REQUESTSTATUS,NONE,ZERO
CANCEL,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
CANCEL,VEVENT,NONE,X,ZEROPLUS
CANCEL,VEVENT,NONE,VTODO,ZERO
CANCEL,VEVENT,NONE,VJOURNAL,ZERO
CANCEL,VEVENT,NONE,VFREEBUSY,ZERO
CANCEL,VEVENT,NONE,VALARM,ZERO
CANCEL,VEVENT,RELCALID,NONE,ZEROORONE
REFRESH,VEVENT,NONE,NONE,ONE
REFRESH,VEVENT,ATTENDEE,NONE,ONE
REFRESH,VEVENT,DTSTAMP,NONE,ONE
REFRESH,VEVENT,ORGANIZER,NONE,ONE
REFRESH,VEVENT,UID,NONE,ONE
REFRESH,VEVENT,COMMENT,NONE,ZEROORONE
REFRESH,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
REFRESH,VEVENT,X,NONE,ZEROPLUS
REFRESH,VEVENT,ATTACH,NONE,ZERO
REFRESH,VEVENT,CATEGORIES,NONE,ZERO
REFRESH,VEVENT,CLASS,NONE,ZERO
REFRESH,VEVENT,CONTACT,NONE,ZERO
REFRESH,VEVENT,CREATED,NONE,ZERO
REFRESH,VEVENT,DESCRIPTION,NONE,ZERO
REFRESH,VEVENT,DTEND,NONE,ZERO
REFRESH,VEVENT,DTSTART,NONE,ZERO
REFRESH,VEVENT,DURATION,NONE,ZERO
REFRESH,VEVENT,EXDATE,NONE,ZERO
REFRESH,VEVENT,EXRULE,NONE,ZERO
REFRESH,VEVENT,GEO,NONE,ZERO
REFRESH,VEVENT,LASTMODIFIED,NONE,ZERO
REFRESH,VEVENT,LOCATION,NONE,ZERO
REFRESH,VEVENT,PRIORITY,NONE,ZERO
REFRESH,VEVENT,RDATE,NONE,ZERO
REFRESH,VEVENT,RELATEDTO,NONE,ZERO
REFRESH,VEVENT,REQUESTSTATUS,NONE,ZERO
REFRESH,VEVENT,RESOURCES,NONE,ZERO
REFRESH,VEVENT,RRULE,NONE,ZERO
REFRESH,VEVENT,SEQUENCE,NONE,ZERO
REFRESH,VEVENT,STATUS,NONE,ZERO
REFRESH,VEVENT,SUMMARY,NONE,ZERO
REFRESH,VEVENT,TRANSP,NONE,ZERO
REFRESH,VEVENT,URL,NONE,ZERO
REFRESH,VEVENT,NONE,X,ZEROPLUS
REFRESH,VEVENT,NONE,VTODO,ZERO
REFRESH,VEVENT,NONE,VJOURNAL,ZERO
REFRESH,VEVENT,NONE,VFREEBUSY,ZERO
REFRESH,VEVENT,NONE,VTIMEZONE,ZERO,must_if_tz_ref
REFRESH,VEVENT,NONE,VALARM,ZERO
REFRESH,VEVENT,RELCALID,NONE,ZEROORONE
COUNTER,VEVENT,NONE,NONE,ONE
COUNTER,VEVENT,DTSTAMP,NONE,ONE
COUNTER,VEVENT,DTSTART,NONE,ONE
COUNTER,VEVENT,ORGANIZER,NONE,ONE
COUNTER,VEVENT,SEQUENCE,NONE,ONE
COUNTER,VEVENT,SUMMARY,NONE,ONE
COUNTER,VEVENT,UID,NONE,ONE
COUNTER,VEVENT,ATTACH,NONE,ZEROPLUS
COUNTER,VEVENT,ATTENDEE,NONE,ZEROPLUS
COUNTER,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard
COUNTER,VEVENT,CLASS,NONE,ZEROORONE
COUNTER,VEVENT,COMMENT,NONE,ZEROORONE
COUNTER,VEVENT,CONTACT,NONE,ZEROPLUS
COUNTER,VEVENT,CREATED,NONE,ZEROORONE
COUNTER,VEVENT,DESCRIPTION,NONE,ZEROORONE
COUNTER,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
COUNTER,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
COUNTER,VEVENT,EXDATE,NONE,ZEROPLUS
COUNTER,VEVENT,EXRULE,NONE,ZEROPLUS
COUNTER,VEVENT,GEO,NONE,ZEROORONE
COUNTER,VEVENT,LASTMODIFIED,NONE,ZEROORONE
COUNTER,VEVENT,LOCATION,NONE,ZEROORONE
COUNTER,VEVENT,PRIORITY,NONE,ZEROORONE
COUNTER,VEVENT,RDATE,NONE,ZEROPLUS
COUNTER,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
COUNTER,VEVENT,RELATEDTO,NONE,ZEROPLUS
COUNTER,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
COUNTER,VEVENT,RESOURCES,NONE,ZEROORONE
COUNTER,VEVENT,RRULE,NONE,ZEROPLUS
COUNTER,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf_cancel
COUNTER,VEVENT,TRANSP,NONE,ZEROORONE
COUNTER,VEVENT,URL,NONE,ZEROORONE
COUNTER,VEVENT,X,NONE,ZEROPLUS
COUNTER,VEVENT,NONE,VALARM,ZEROPLUS
COUNTER,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
COUNTER,VEVENT,NONE,X,ZEROPLUS
COUNTER,VEVENT,NONE,VTODO,ZERO
COUNTER,VEVENT,NONE,VJOURNAL,ZERO
COUNTER,VEVENT,NONE,VFREEBUSY,ZERO
COUNTER,VEVENT,RELCALID,NONE,ZEROORONE
DECLINECOUNTER,VEVENT,NONE,NONE,ONE
DECLINECOUNTER,VEVENT,DTSTAMP,NONE,ONE
DECLINECOUNTER,VEVENT,ORGANIZER,NONE,ONE
DECLINECOUNTER,VEVENT,UID,NONE,ONE
DECLINECOUNTER,VEVENT,COMMENT,NONE,ZEROORONE
DECLINECOUNTER,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
DECLINECOUNTER,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
DECLINECOUNTER,VEVENT,SEQUENCE,NONE,ZERO
DECLINECOUNTER,VEVENT,X,NONE,ZEROPLUS
DECLINECOUNTER,VEVENT,ATTACH,NONE,ZERO
DECLINECOUNTER,VEVENT,ATTENDEE,NONE,ZERO
DECLINECOUNTER,VEVENT,CATEGORIES,NONE,ZERO
DECLINECOUNTER,VEVENT,CLASS,NONE,ZERO
DECLINECOUNTER,VEVENT,CONTACT,NONE,ZERO
DECLINECOUNTER,VEVENT,CREATED,NONE,ZERO
DECLINECOUNTER,VEVENT,DESCRIPTION,NONE,ZERO
DECLINECOUNTER,VEVENT,DTEND,NONE,ZERO
DECLINECOUNTER,VEVENT,DTSTART,NONE,ZERO
DECLINECOUNTER,VEVENT,DURATION,NONE,ZERO
DECLINECOUNTER,VEVENT,EXDATE,NONE,ZERO
DECLINECOUNTER,VEVENT,EXRULE,NONE,ZERO
DECLINECOUNTER,VEVENT,GEO,NONE,ZERO
DECLINECOUNTER,VEVENT,LASTMODIFIED,NONE,ZERO
DECLINECOUNTER,VEVENT,LOCATION,NONE,ZERO
DECLINECOUNTER,VEVENT,PRIORITY,NONE,ZERO
DECLINECOUNTER,VEVENT,RDATE,NONE,ZERO
DECLINECOUNTER,VEVENT,RELATEDTO,NONE,ZERO
DECLINECOUNTER,VEVENT,RESOURCES,NONE,ZERO
DECLINECOUNTER,VEVENT,RRULE,NONE,ZERO
DECLINECOUNTER,VEVENT,STATUS,NONE,ZERO
DECLINECOUNTER,VEVENT,SUMMARY,NONE,ZERO
DECLINECOUNTER,VEVENT,TRANSP,NONE,ZERO
DECLINECOUNTER,VEVENT,URL,NONE,ZERO
DECLINECOUNTER,VEVENT,NONE,X,ZEROPLUS
DECLINECOUNTER,VEVENT,NONE,VTODO,ZERO
DECLINECOUNTER,VEVENT,NONE,VJOURNAL,ZERO
DECLINECOUNTER,VEVENT,NONE,VFREEBUSY,ZERO
DECLINECOUNTER,VEVENT,NONE,VTIMEZONE,ZERO,must_if_tz_ref
DECLINECOUNTER,VEVENT,NONE,VALARM,ZERO
DECLINECOUNTER,VEVENT,RELCALID,NONE,ZEROORONE
PUBLISH,VFREEBUSY,NONE,NONE,ONEPLUS
PUBLISH,VFREEBUSY,DTSTAMP,NONE,ONE
PUBLISH,VFREEBUSY,DTSTART,NONE,ONE
PUBLISH,VFREEBUSY,DTEND,NONE,ONE
PUBLISH,VFREEBUSY,FREEBUSY,NONE,ZEROPLUS
PUBLISH,VFREEBUSY,ORGANIZER,NONE,ONE
PUBLISH,VFREEBUSY,COMMENT,NONE,ZEROPLUS
PUBLISH,VFREEBUSY,CONTACT,NONE,ZEROORONE
PUBLISH,VFREEBUSY,X,NONE,ZEROPLUS
PUBLISH,VFREEBUSY,URL,NONE,ZEROORONE
PUBLISH,VFREEBUSY,ATTENDEE,NONE,ZERO
PUBLISH,VFREEBUSY,DURATION,NONE,ZERO
PUBLISH,VFREEBUSY,REQUESTSTATUS,NONE,ZERO
PUBLISH,VFREEBUSY,UID,NONE,ONE
PUBLISH,VFREEBUSY,NONE,X,ZEROPLUS
PUBLISH,VFREEBUSY,NONE,VEVENT,ZERO
PUBLISH,VFREEBUSY,NONE,VTODO,ZERO
PUBLISH,VFREEBUSY,NONE,VJOURNAL,ZERO
PUBLISH,VFREEBUSY,NONE,VTIMEZONE,ZERO,must_if_tz_ref
PUBLISH,VFREEBUSY,NONE,VALARM,ZERO
REQUEST,VFREEBUSY,NONE,NONE,ONE
REQUEST,VFREEBUSY,ATTENDEE,NONE,ONEPLUS
REQUEST,VFREEBUSY,DTEND,NONE,ONE
REQUEST,VFREEBUSY,DTSTAMP,NONE,ONE
REQUEST,VFREEBUSY,DTSTART,NONE,ONE
REQUEST,VFREEBUSY,ORGANIZER,NONE,ONE
REQUEST,VFREEBUSY,UID,NONE,ONE
REQUEST,VFREEBUSY,COMMENT,NONE,ZEROPLUS
REQUEST,VFREEBUSY,CONTACT,NONE,ZEROORONE
REQUEST,VFREEBUSY,X,NONE,ZEROPLUS
REQUEST,VFREEBUSY,FREEBUSY,NONE,ZERO
REQUEST,VFREEBUSY,DURATION,NONE,ZERO
REQUEST,VFREEBUSY,REQUESTSTATUS,NONE,ZERO
REQUEST,VFREEBUSY,URL,NONE,ZERO
REQUEST,VFREEBUSY,NONE,X,ZEROPLUS
REQUEST,VFREEBUSY,NONE,VALARM,ZERO
REQUEST,VFREEBUSY,NONE,VEVENT,ZERO
REQUEST,VFREEBUSY,NONE,VTODO,ZERO
REQUEST,VFREEBUSY,NONE,VJOURNAL,ZERO
REQUEST,VFREEBUSY,NONE,VTIMEZONE,ZERO
REPLY,VFREEBUSY,NONE,NONE,ONE
REPLY,VFREEBUSY,ATTENDEE,NONE,ONE
REPLY,VFREEBUSY,DTSTAMP,NONE,ONE
REPLY,VFREEBUSY,DTEND,NONE,ONE
REPLY,VFREEBUSY,DTSTART,NONE,ONE
REPLY,VFREEBUSY,FREEBUSY,NONE,ZEROPLUS
REPLY,VFREEBUSY,ORGANIZER,NONE,ONE
REPLY,VFREEBUSY,UID,NONE,ONE
REPLY,VFREEBUSY,COMMENT,NONE,ZEROPLUS
REPLY,VFREEBUSY,CONTACT,NONE,ZEROORONE
REPLY,VFREEBUSY,REQUESTSTATUS,NONE,ZEROPLUS
REPLY,VFREEBUSY,URL,NONE,ZEROORONE
REPLY,VFREEBUSY,X,NONE,ZEROPLUS
REPLY,VFREEBUSY,DURATION,NONE,ZERO
REPLY,VFREEBUSY,SEQUENCE,NONE,ZERO
REPLY,VFREEBUSY,NONE,X,ZEROPLUS
REPLY,VFREEBUSY,NONE,VALARM,ZERO
REPLY,VFREEBUSY,NONE,VEVENT,ZERO
REPLY,VFREEBUSY,NONE,VTODO,ZERO
REPLY,VFREEBUSY,NONE,VJOURNAL,ZERO
REPLY,VFREEBUSY,NONE,VTIMEZONE,ZERO
PUBLISH,VTODO,NONE,NONE,ONEPLUS
PUBLISH,VTODO,DTSTAMP,NONE,ONE
PUBLISH,VTODO,DTSTART,NONE,ONE
PUBLISH,VTODO,ORGANIZER,NONE,ONE
PUBLISH,VTODO,PRIORITY,NONE,ONE
PUBLISH,VTODO,SEQUENCE,NONE,ZEROORONE
PUBLISH,VTODO,SUMMARY,NONE,ONE
PUBLISH,VTODO,UID,NONE,ONE
PUBLISH,VTODO,ATTACH,NONE,ZEROPLUS
PUBLISH,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
PUBLISH,VTODO,CLASS,NONE,ZEROORONE
PUBLISH,VTODO,COMMENT,NONE,ZEROORONE
PUBLISH,VTODO,CONTACT,NONE,ZEROPLUS
PUBLISH,VTODO,CREATED,NONE,ZEROORONE
PUBLISH,VTODO,DESCRIPTION,NONE,ZEROORONE
PUBLISH,VTODO,DUE,NONE,ZEROORONE
PUBLISH,VTODO,DURATION,NONE,ZEROORONE
PUBLISH,VTODO,EXDATE,NONE,ZEROPLUS
PUBLISH,VTODO,EXRULE,NONE,ZEROPLUS
PUBLISH,VTODO,GEO,NONE,ZEROORONE
PUBLISH,VTODO,LASTMODIFIED,NONE,ZEROORONE
PUBLISH,VTODO,LOCATION,NONE,ZEROORONE
PUBLISH,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
PUBLISH,VTODO,RDATE,NONE,ZEROPLUS
PUBLISH,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
PUBLISH,VTODO,RELATEDTO,NONE,ZEROPLUS
PUBLISH,VTODO,RESOURCES,NONE,ZEROORONE
PUBLISH,VTODO,RRULE,NONE,ZEROPLUS
PUBLISH,VTODO,STATUS,NONE,ZEROORONE
PUBLISH,VTODO,URL,NONE,ZEROORONE
PUBLISH,VTODO,X,NONE,ZEROPLUS
PUBLISH,VTODO,ATTENDEE,NONE,ZERO
PUBLISH,VTODO,REQUESTSTATUS,NONE,ZERO
PUBLISH,VTODO,NONE,VTIMEZONE,ZEROPLUS
PUBLISH,VTODO,NONE,VALARM,ZEROPLUS
PUBLISH,VTODO,NONE,X,ZEROPLUS
PUBLISH,VTODO,NONE,VFREEBUSY,ZERO
PUBLISH,VTODO,NONE,VEVENT,ZERO
PUBLISH,VTODO,NONE,VJOURNAL,ZERO
PUBLISH,VTODO,RELCALID,NONE,ZEROORONE
REQUEST,VTODO,NONE,NONE,ONEPLUS
REQUEST,VTODO,ATTENDEE,NONE,ONEPLUS
REQUEST,VTODO,DTSTAMP,NONE,ONE
REQUEST,VTODO,DTSTART,NONE,ONE
REQUEST,VTODO,ORGANIZER,NONE,ONE
REQUEST,VTODO,PRIORITY,NONE,ONE
REQUEST,VTODO,SEQUENCE,NONE,ZEROORONE
REQUEST,VTODO,SUMMARY,NONE,ONE
REQUEST,VTODO,UID,NONE,ONE
REQUEST,VTODO,ATTACH,NONE,ZEROPLUS
REQUEST,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
REQUEST,VTODO,CLASS,NONE,ZEROORONE
REQUEST,VTODO,COMMENT,NONE,ZEROORONE
REQUEST,VTODO,CONTACT,NONE,ZEROPLUS
REQUEST,VTODO,CREATED,NONE,ZEROORONE
REQUEST,VTODO,DESCRIPTION,NONE,ZEROORONE
REQUEST,VTODO,DUE,NONE,ZEROORONE
REQUEST,VTODO,DURATION,NONE,ZEROORONE
REQUEST,VTODO,EXDATE,NONE,ZEROPLUS
REQUEST,VTODO,EXRULE,NONE,ZEROPLUS
REQUEST,VTODO,GEO,NONE,ZEROORONE
REQUEST,VTODO,LASTMODIFIED,NONE,ZEROORONE
REQUEST,VTODO,LOCATION,NONE,ZEROORONE
REQUEST,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
REQUEST,VTODO,RDATE,NONE,ZEROPLUS
REQUEST,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
REQUEST,VTODO,RELATEDTO,NONE,ZEROPLUS
REQUEST,VTODO,RESOURCES,NONE,ZEROORONE
REQUEST,VTODO,RRULE,NONE,ZEROPLUS
REQUEST,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process
REQUEST,VTODO,URL,NONE,ZEROORONE
REQUEST,VTODO,X,NONE,ZEROPLUS
REQUEST,VTODO,REQUESTSTATUS,NONE,ZERO
REQUEST,VTODO,NONE,VALARM,ZEROPLUS
REQUEST,VTODO,NONE,VTIMEZONE,ZEROPLUS
REQUEST,VTODO,NONE,X,ZEROPLUS
REQUEST,VTODO,NONE,VEVENT,ZERO
REQUEST,VTODO,NONE,VFREEBUSY,ZERO
REQUEST,VTODO,NONE,VJOURNAL,ZERO
REQUEST,VTODO,RELCALID,NONE,ZEROORONE
REPLY,VTODO,NONE,NONE,ONEPLUS
REPLY,VTODO,ATTENDEE,NONE,ONEPLUS
REPLY,VTODO,DTSTAMP,NONE,ONE
REPLY,VTODO,ORGANIZER,NONE,ONE
REPLY,VTODO,REQUESTSTATUS,NONE,ONEPLUS
REPLY,VTODO,UID,NONE,ONE
REPLY,VTODO,ATTACH,NONE,ZEROPLUS
REPLY,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
REPLY,VTODO,CLASS,NONE,ZEROORONE
REPLY,VTODO,COMMENT,NONE,ZEROORONE
REPLY,VTODO,CONTACT,NONE,ZEROPLUS
REPLY,VTODO,CREATED,NONE,ZEROORONE
REPLY,VTODO,DESCRIPTION,NONE,ZEROORONE
REPLY,VTODO,DTSTART,NONE,ZEROORONE
REPLY,VTODO,DUE,NONE,ZEROORONE
REPLY,VTODO,DURATION,NONE,ZEROORONE
REPLY,VTODO,EXDATE,NONE,ZEROPLUS
REPLY,VTODO,EXRULE,NONE,ZEROPLUS
REPLY,VTODO,GEO,NONE,ZEROORONE
REPLY,VTODO,LASTMODIFIED,NONE,ZEROORONE
REPLY,VTODO,LOCATION,NONE,ZEROORONE
REPLY,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
REPLY,VTODO,PRIORITY,NONE,ZEROORONE
REPLY,VTODO,RDATE,NONE,ZEROPLUS
REPLY,VTODO,RELATEDTO,NONE,ZEROPLUS
REPLY,VTODO,RESOURCES,NONE,ZEROORONE
REPLY,VTODO,RRULE,NONE,ZEROPLUS
REPLY,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
REPLY,VTODO,SEQUENCE,NONE,ZEROORONE
REPLY,VTODO,STATUS,NONE,ZEROORONE
REPLY,VTODO,SUMMARY,NONE,ZEROORONE
REPLY,VTODO,URL,NONE,ZEROORONE
REPLY,VTODO,X,NONE,ZEROPLUS
REPLY,VTODO,NONE,VTIMEZONE,ZEROORONE
REPLY,VTODO,NONE,X,ZEROPLUS
REPLY,VTODO,NONE,VALARM,ZERO
REPLY,VTODO,NONE,VEVENT,ZERO
REPLY,VTODO,NONE,VFREEBUSY,ZERO
REPLY,VTODO,RELCALID,NONE,ZEROORONE
ADD,VTODO,NONE,NONE,ONE
ADD,VTODO,DTSTAMP,NONE,ONE
ADD,VTODO,ORGANIZER,NONE,ONE
ADD,VTODO,PRIORITY,NONE,ONE
ADD,VTODO,SEQUENCE,NONE,ONE
ADD,VTODO,SUMMARY,NONE,ONE
ADD,VTODO,UID,NONE,ONE
ADD,VTODO,ATTACH,NONE,ZEROPLUS
ADD,VTODO,ATTENDEE,NONE,ZEROPLUS
ADD,VTODO,CATEGORIES,NONE,ZEROPLUS
ADD,VTODO,CLASS,NONE,ZEROORONE
ADD,VTODO,COMMENT,NONE,ZEROORONE
ADD,VTODO,CONTACT,NONE,ZEROPLUS
ADD,VTODO,CREATED,NONE,ZEROORONE
ADD,VTODO,DESCRIPTION,NONE,ZEROORONE
ADD,VTODO,DTSTART,NONE,ZEROORONE
ADD,VTODO,DUE,NONE,ZEROORONE
ADD,VTODO,DURATION,NONE,ZEROORONE
ADD,VTODO,EXDATE,NONE,ZEROPLUS
ADD,VTODO,EXRULE,NONE,ZEROPLUS
ADD,VTODO,GEO,NONE,ZEROORONE
ADD,VTODO,LASTMODIFIED,NONE,ZEROORONE
ADD,VTODO,LOCATION,NONE,ZEROORONE
ADD,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
ADD,VTODO,RDATE,NONE,ZEROPLUS
ADD,VTODO,RELATEDTO,NONE,ZEROPLUS
ADD,VTODO,RESOURCES,NONE,ZEROORONE
ADD,VTODO,RRULE,NONE,ZEROPLUS
ADD,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process
ADD,VTODO,URL,NONE,ZEROORONE
ADD,VTODO,X,NONE,ZEROPLUS
ADD,VTODO,RECURRENCEID,NONE,ZERO,must_be_recurring
ADD,VTODO,REQUESTSTATUS,NONE,ZERO
ADD,VTODO,NONE,VALARM,ZEROPLUS
ADD,VTODO,NONE,VTIMEZONE,ZEROPLUS
ADD,VTODO,NONE,X,ZEROPLUS
ADD,VTODO,NONE,VEVENT,ZERO
ADD,VTODO,NONE,VJOURNAL,ZERO
ADD,VTODO,NONE,VFREEBUSY,ZERO
ADD,VTODO,RELCALID,NONE,ZEROORONE
CANCEL,VTODO,NONE,NONE,ONE
CANCEL,VTODO,ATTENDEE,NONE,ZEROPLUS
CANCEL,VTODO,UID,NONE,ONE
CANCEL,VTODO,DTSTAMP,NONE,ONE
CANCEL,VTODO,ORGANIZER,NONE,ONE
CANCEL,VTODO,SEQUENCE,NONE,ONE
CANCEL,VTODO,ATTACH,NONE,ZEROPLUS
CANCEL,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard
CANCEL,VTODO,CLASS,NONE,ZEROORONE
CANCEL,VTODO,COMMENT,NONE,ZEROORONE
CANCEL,VTODO,CONTACT,NONE,ZEROPLUS
CANCEL,VTODO,CREATED,NONE,ZEROORONE
CANCEL,VTODO,DESCRIPTION,NONE,ZEROORONE
CANCEL,VTODO,DTSTART,NONE,ZEROORONE
CANCEL,VTODO,DUE,NONE,ZEROORONE
CANCEL,VTODO,DURATION,NONE,ZEROORONE
CANCEL,VTODO,EXDATE,NONE,ZEROPLUS
CANCEL,VTODO,EXRULE,NONE,ZEROPLUS
CANCEL,VTODO,GEO,NONE,ZEROORONE
CANCEL,VTODO,LASTMODIFIED,NONE,ZEROORONE
CANCEL,VTODO,LOCATION,NONE,ZEROORONE
CANCEL,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
CANCEL,VTODO,RDATE,NONE,ZEROPLUS
CANCEL,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
CANCEL,VTODO,RELATEDTO,NONE,ZEROPLUS
CANCEL,VTODO,RESOURCES,NONE,ZEROORONE
CANCEL,VTODO,RRULE,NONE,ZEROPLUS
CANCEL,VTODO,PRIORITY,NONE,ZEROORONE
CANCEL,VTODO,STATUS,NONE,ZEROORONE,must_be_canceled_no_attendee
CANCEL,VTODO,URL,NONE,ZEROORONE
CANCEL,VTODO,X,NONE,ZEROPLUS
CANCEL,VTODO,REQUESTSTATUS,NONE,ZERO
CANCEL,VTODO,NONE,VTIMEZONE,ZEROORONE
CANCEL,VTODO,NONE,X,ZEROPLUS
CANCEL,VTODO,NONE,VALARM,ZERO
CANCEL,VTODO,NONE,VEVENT,ZERO
CANCEL,VTODO,NONE,VFREEBUSY,ZERO
CANCEL,VTODO,RELCALID,NONE,ZEROORONE
REFRESH,VTODO,NONE,NONE,ONE
REFRESH,VTODO,ATTENDEE,NONE,ONE
REFRESH,VTODO,DTSTAMP,NONE,ONE
REFRESH,VTODO,UID,NONE,ONE
REFRESH,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
REFRESH,VTODO,X,NONE,ZEROPLUS
REFRESH,VTODO,ATTACH,NONE,ZERO
REFRESH,VTODO,CATEGORIES,NONE,ZERO
REFRESH,VTODO,CLASS,NONE,ZERO
REFRESH,VTODO,COMMENT,NONE,ZERO
REFRESH,VTODO,CONTACT,NONE,ZERO
REFRESH,VTODO,CREATED,NONE,ZERO
REFRESH,VTODO,DESCRIPTION,NONE,ZERO
REFRESH,VTODO,DTSTART,NONE,ZERO
REFRESH,VTODO,DUE,NONE,ZERO
REFRESH,VTODO,DURATION,NONE,ZERO
REFRESH,VTODO,EXDATE,NONE,ZERO
REFRESH,VTODO,EXRULE,NONE,ZERO
REFRESH,VTODO,GEO,NONE,ZERO
REFRESH,VTODO,LASTMODIFIED,NONE,ZERO
REFRESH,VTODO,LOCATION,NONE,ZERO
REFRESH,VTODO,ORGANIZER,NONE,ZERO
REFRESH,VTODO,PERCENTCOMPLETE,NONE,ZERO
REFRESH,VTODO,PRIORITY,NONE,ZERO
REFRESH,VTODO,RDATE,NONE,ZERO
REFRESH,VTODO,RELATEDTO,NONE,ZERO
REFRESH,VTODO,REQUESTSTATUS,NONE,ZERO
REFRESH,VTODO,RESOURCES,NONE,ZERO
REFRESH,VTODO,RRULE,NONE,ZERO
REFRESH,VTODO,SEQUENCE,NONE,ZERO
REFRESH,VTODO,STATUS,NONE,ZERO
REFRESH,VTODO,URL,NONE,ZERO
REFRESH,VTODO,NONE,X,ZEROPLUS
REFRESH,VTODO,NONE,VALARM,ZERO
REFRESH,VTODO,NONE,VEVENT,ZERO
REFRESH,VTODO,NONE,VFREEBUSY,ZERO
REFRESH,VTODO,NONE,VTIMEZONE,ZERO
REFRESH,VTODO,RELCALID,NONE,ZEROORONE
COUNTER,VTODO,NONE,NONE,ONE
COUNTER,VTODO,ATTENDEE,NONE,ONEPLUS
COUNTER,VTODO,DTSTAMP,NONE,ONE
COUNTER,VTODO,ORGANIZER,NONE,ONE
COUNTER,VTODO,PRIORITY,NONE,ONE
COUNTER,VTODO,SUMMARY,NONE,ONE
COUNTER,VTODO,UID,NONE,ONE
COUNTER,VTODO,ATTACH,NONE,ZEROPLUS
COUNTER,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-standard
COUNTER,VTODO,CLASS,NONE,ZEROORONE
COUNTER,VTODO,COMMENT,NONE,ZEROORONE
COUNTER,VTODO,CONTACT,NONE,ZEROPLUS
COUNTER,VTODO,CREATED,NONE,ZEROORONE
COUNTER,VTODO,DESCRIPTION,NONE,ZEROORONE
COUNTER,VTODO,DTSTART,NONE,ZEROORONE
COUNTER,VTODO,DUE,NONE,ZEROORONE
COUNTER,VTODO,DURATION,NONE,ZEROORONE
COUNTER,VTODO,EXDATE,NONE,ZEROPLUS
COUNTER,VTODO,EXRULE,NONE,ZEROPLUS
COUNTER,VTODO,GEO,NONE,ZEROORONE
COUNTER,VTODO,LASTMODIFIED,NONE,ZEROORONE
COUNTER,VTODO,LOCATION,NONE,ZEROORONE
COUNTER,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
COUNTER,VTODO,RDATE,NONE,ZEROPLUS
COUNTER,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
COUNTER,VTODO,RELATEDTO,NONE,ZEROPLUS
COUNTER,VTODO,REQUESTSTATUS,NONE,ZEROPLUS
COUNTER,VTODO,RESOURCES,NONE,ZEROORONE
COUNTER,VTODO,RRULE,NONE,ZEROORONE
COUNTER,VTODO,SEQUENCE,NONE,ZEROORONE
COUNTER,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process
COUNTER,VTODO,URL,NONE,ZEROORONE
COUNTER,VTODO,X,NONE,ZEROPLUS
COUNTER,VTODO,NONE,VALARM,ZEROPLUS
COUNTER,VTODO,NONE,VTIMEZONE,ZEROORONE
COUNTER,VTODO,NONE,X,ZEROPLUS
COUNTER,VTODO,NONE,VEVENT,ZERO
COUNTER,VTODO,NONE,VFREEBUSY,ZERO
COUNTER,VTODO,RELCALID,NONE,ZEROORONE
DECLINECOUNTER,VTODO,NONE,NONE,ONE
DECLINECOUNTER,VTODO,ATTENDEE,NONE,ONEPLUS
DECLINECOUNTER,VTODO,DTSTAMP,NONE,ONE
DECLINECOUNTER,VTODO,ORGANIZER,NONE,ONE
DECLINECOUNTER,VTODO,SEQUENCE,NONE,ONE
DECLINECOUNTER,VTODO,UID,NONE,ONE
DECLINECOUNTER,VTODO,ATTACH,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-standard
DECLINECOUNTER,VTODO,CLASS,NONE,ZEROORONE
DECLINECOUNTER,VTODO,COMMENT,NONE,ZEROORONE
DECLINECOUNTER,VTODO,CONTACT,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,CREATED,NONE,ZEROORONE
DECLINECOUNTER,VTODO,DESCRIPTION,NONE,ZEROORONE
DECLINECOUNTER,VTODO,DTSTART,NONE,ZEROORONE
DECLINECOUNTER,VTODO,DUE,NONE,ZEROORONE
DECLINECOUNTER,VTODO,DURATION,NONE,ZEROORONE
DECLINECOUNTER,VTODO,EXDATE,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,EXRULE,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,GEO,NONE,ZEROORONE
DECLINECOUNTER,VTODO,LASTMODIFIED,NONE,ZEROORONE
DECLINECOUNTER,VTODO,LOCATION,NONE,ZEROORONE
DECLINECOUNTER,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
DECLINECOUNTER,VTODO,PRIORITY,NONE,ZEROORONE
DECLINECOUNTER,VTODO,RDATE,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
DECLINECOUNTER,VTODO,RELATEDTO,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,REQUESTSTATUS,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,RESOURCES,NONE,ZEROORONE
DECLINECOUNTER,VTODO,RRULE,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,STATUS,NONE,ZEROORONE
DECLINECOUNTER,VTODO,URL,NONE,ZEROORONE
DECLINECOUNTER,VTODO,X,NONE,ZEROPLUS
DECLINECOUNTER,VTODO,NONE,VTIMEZONE,ZEROPLUS
DECLINECOUNTER,VTODO,NONE,X,ZEROPLUS
DECLINECOUNTER,VTODO,NONE,VALARM,ZERO
DECLINECOUNTER,VTODO,NONE,VEVENT,ZERO
DECLINECOUNTER,VTODO,NONE,VFREEBUSY,ZERO
DECLINECOUNTER,VTODO,RELCALID,NONE,ZEROORONE
PUBLISH,VJOURNAL,NONE,NONE,ONEPLUS
PUBLISH,VJOURNAL,DESCRIPTION,NONE,ONE
PUBLISH,VJOURNAL,DTSTAMP,NONE,ONE
PUBLISH,VJOURNAL,DTSTART,NONE,ONE
PUBLISH,VJOURNAL,ORGANIZER,NONE,ONE
PUBLISH,VJOURNAL,UID,NONE,ONE
PUBLISH,VJOURNAL,ATTACH,NONE,ZEROPLUS
PUBLISH,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard
PUBLISH,VJOURNAL,CLASS,NONE,ZEROORONE
PUBLISH,VJOURNAL,COMMENT,NONE,ZEROORONE
PUBLISH,VJOURNAL,CONTACT,NONE,ZEROPLUS
PUBLISH,VJOURNAL,CREATED,NONE,ZEROORONE
PUBLISH,VJOURNAL,EXDATE,NONE,ZEROPLUS
PUBLISH,VJOURNAL,EXRULE,NONE,ZEROPLUS
PUBLISH,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
PUBLISH,VJOURNAL,RDATE,NONE,ZEROPLUS
PUBLISH,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
PUBLISH,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
PUBLISH,VJOURNAL,RRULE,NONE,ZEROPLUS
PUBLISH,VJOURNAL,SEQUENCE,NONE,ZEROORONE
PUBLISH,VJOURNAL,STATUS,NONE,ZEROORONE,may_be_draft_final_canceled
PUBLISH,VJOURNAL,SUMMARY,NONE,ZEROORONE
PUBLISH,VJOURNAL,URL,NONE,ZEROORONE
PUBLISH,VJOURNAL,X,NONE,ZEROPLUS
PUBLISH,VJOURNAL,ATTENDEE,NONE,ZERO
PUBLISH,VJOURNAL,NONE,VALARM,ZEROPLUS
PUBLISH,VJOURNAL,NONE,VTIMEZONE,ZEROPLUS
PUBLISH,VJOURNAL,NONE,X,ZEROPLUS
PUBLISH,VJOURNAL,NONE,VEVENT,ZERO
PUBLISH,VJOURNAL,NONE,VFREEBUSY,ZERO
PUBLISH,VJOURNAL,NONE,VTODO,ZERO
ADD,VJOURNAL,NONE,NONE,ONE
ADD,VJOURNAL,DESCRIPTION,NONE,ONE
ADD,VJOURNAL,DTSTAMP,NONE,ONE
ADD,VJOURNAL,DTSTART,NONE,ONE
ADD,VJOURNAL,ORGANIZER,NONE,ONE
ADD,VJOURNAL,SEQUENCE,NONE,ONE
ADD,VJOURNAL,UID,NONE,ONE
ADD,VJOURNAL,ATTACH,NONE,ZEROPLUS
ADD,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard
ADD,VJOURNAL,CLASS,NONE,ZEROORONE
ADD,VJOURNAL,COMMENT,NONE,ZEROORONE
ADD,VJOURNAL,CONTACT,NONE,ZEROPLUS
ADD,VJOURNAL,CREATED,NONE,ZEROORONE
ADD,VJOURNAL,EXDATE,NONE,ZEROPLUS
ADD,VJOURNAL,EXRULE,NONE,ZEROPLUS
ADD,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
ADD,VJOURNAL,RDATE,NONE,ZEROPLUS
ADD,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
ADD,VJOURNAL,RRULE,NONE,ZEROPLUS
ADD,VJOURNAL,STATUS,NONE,ZEROORONE
ADD,VJOURNAL,SUMMARY,NONE,ZEROORONE
ADD,VJOURNAL,URL,NONE,ZEROORONE
ADD,VJOURNAL,X,NONE,ZEROPLUS
ADD,VJOURNAL,ATTENDEE,NONE,ZERO
ADD,VJOURNAL,RECURRENCEID,NONE,ZERO
ADD,VJOURNAL,NONE,VALARM,ZEROPLUS
ADD,VJOURNAL,NONE,VTIMEZONE,ZEROORONE
ADD,VJOURNAL,NONE,X,ZEROPLUS
ADD,VJOURNAL,NONE,VEVENT,ZERO
ADD,VJOURNAL,NONE,VFREEBUSY,ZERO
ADD,VJOURNAL,NONE,VTODO,ZERO
CANCEL,VJOURNAL,NONE,NONE,ONEPLUS
CANCEL,VJOURNAL,DTSTAMP,NONE,ONE
CANCEL,VJOURNAL,ORGANIZER,NONE,ONE
CANCEL,VJOURNAL,SEQUENCE,NONE,ONE
CANCEL,VJOURNAL,UID,NONE,ONE
CANCEL,VJOURNAL,ATTACH,NONE,ZEROPLUS
CANCEL,VJOURNAL,ATTENDEE,NONE,ZEROPLUS
CANCEL,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard
CANCEL,VJOURNAL,CLASS,NONE,ZEROORONE
CANCEL,VJOURNAL,COMMENT,NONE,ZEROORONE
CANCEL,VJOURNAL,CONTACT,NONE,ZEROPLUS
CANCEL,VJOURNAL,CREATED,NONE,ZEROORONE
CANCEL,VJOURNAL,DESCRIPTION,NONE,ZEROORONE
CANCEL,VJOURNAL,DTSTART,NONE,ZEROORONE
CANCEL,VJOURNAL,EXDATE,NONE,ZEROPLUS
CANCEL,VJOURNAL,EXRULE,NONE,ZEROPLUS
CANCEL,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
CANCEL,VJOURNAL,RDATE,NONE,ZEROPLUS
CANCEL,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
CANCEL,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
CANCEL,VJOURNAL,RRULE,NONE,ZEROPLUS
CANCEL,VJOURNAL,STATUS,NONE,ZEROORONE,must_be_cancel_if_present
CANCEL,VJOURNAL,SUMMARY,NONE,ZEROORONE
CANCEL,VJOURNAL,URL,NONE,ZEROORONE
CANCEL,VJOURNAL,X,NONE,ZEROPLUS
CANCEL,VJOURNAL,REQUESTSTATUS,NONE,ZERO
CANCEL,VJOURNAL,NONE,VTIMEZONE,ZEROPLUS
CANCEL,VJOURNAL,NONE,X,ZEROPLUS
CANCEL,VJOURNAL,NONE,VALARM,ZERO
CANCEL,VJOURNAL,NONE,VEVENT,ZERO
CANCEL,VJOURNAL,NONE,VFREEBUSY,ZERO
CANCEL,VJOURNAL,NONE,VTODO,ZERO
PUBLISH,VAGENDA,NONE,NONE,ONEPLUS
PUBLISH,VAGENDA,CALMASTER,NONE,ONE
PUBLISH,VAGENDA,OWNER,NONE,ZEROORONE
PUBLISH,VAGENDA,RELCALID,NONE,ZEROORONE
PUBLISH,VAGENDA,TZID,NONE,ONE
REQUEST,VAGENDA,NONE,NONE,ONEPLUS
REQUEST,VAGENDA,CALMASTER,NONE,ONE
REQUEST,VAGENDA,OWNER,NONE,ZEROORONE
REQUEST,VAGENDA,RELCALID,NONE,ZEROORONE
REQUEST,VAGENDA,TZID,NONE,ONE
REPLY,VAGENDA,NONE,NONE,ONEPLUS
REPLY,VAGENDA,CALMASTER,NONE,ONE
REPLY,VAGENDA,OWNER,NONE,ZEROORONE
REPLY,VAGENDA,RELCALID,NONE,ZEROORONE
REPLY,VAGENDA,TZID,NONE,ONE
ADD,VAGENDA,NONE,NONE,ONEPLUS
ADD,VAGENDA,CALMASTER,NONE,ONE
ADD,VAGENDA,OWNER,NONE,ZEROORONE
ADD,VAGENDA,RELCALID,NONE,ZEROORONE
ADD,VAGENDA,TZID,NONE,ONE
CANCEL,VAGENDA,NONE,NONE,ONEPLUS
CANCEL,VAGENDA,CALMASTER,NONE,ONE
CANCEL,VAGENDA,OWNER,NONE,ZEROORONE
CANCEL,VAGENDA,RELCALID,NONE,ZEROORONE
CANCEL,VAGENDA,TZID,NONE,ONE
REFRESH,VAGENDA,NONE,NONE,ONEPLUS
REFRESH,VAGENDA,CALMASTER,NONE,ONE
REFRESH,VAGENDA,OWNER,NONE,ZEROORONE
REFRESH,VAGENDA,RELCALID,NONE,ZEROORONE
REFRESH,VAGENDA,TZID,NONE,ONE
COUNTER,VAGENDA,NONE,NONE,ONEPLUS
COUNTER,VAGENDA,CALMASTER,NONE,ONE
COUNTER,VAGENDA,OWNER,NONE,ZEROORONE
COUNTER,VAGENDA,RELCALID,NONE,ZEROORONE
COUNTER,VAGENDA,TZID,NONE,ONE
DECLINECOUNTER,VAGENDA,NONE,NONE,ONEPLUS
DECLINECOUNTER,VAGENDA,CALMASTER,NONE,ONE
DECLINECOUNTER,VAGENDA,OWNER,NONE,ZEROORONE
DECLINECOUNTER,VAGENDA,RELCALID,NONE,ZEROORONE
DECLINECOUNTER,VAGENDA,TZID,NONE,ONE
NONE,VAGENDA,ALLOWCONFLICT,NONE,ONE
NONE,VAGENDA,CALMASTER,NONE,ONE
NONE,VAGENDA,OWNER,NONE,ZEROORONE
NONE,VAGENDA,RELCALID,NONE,ZEROORONE
NONE,VAGENDA,TZID,NONE,ONE
NONE,VAGENDA,DEFAULTCHARSET,NONE,ONE
NONE,VAGENDA,DEFAULTLOCALE,NONE,ONE
NONE,VAGENDA,DEFAULTTZID,NONE,ONE
NONE,VCALENDAR,ACTION,NONE,ZERO
NONE,VCALENDAR,ATTACH,NONE,ZERO
NONE,VCALENDAR,ATTENDEE,NONE,ZERO
NONE,VCALENDAR,RELCALID,NONE,ZEROORONE
NONE,VCALENDAR,CALSCALE,NONE,ZEROORONE
NONE,VCALENDAR,CATEGORIES,NONE,ZERO
NONE,VCALENDAR,CLASS,NONE,ZERO
NONE,VCALENDAR,COMMENT,NONE,ZERO
NONE,VCALENDAR,COMPLETED,NONE,ZERO
NONE,VCALENDAR,CONTACT,NONE,ZERO
NONE,VCALENDAR,CREATED,NONE,ZERO
NONE,VCALENDAR,DESCRIPTION,NONE,ZERO
NONE,VCALENDAR,DTEND,NONE,ZERO
NONE,VCALENDAR,DTSTAMP,NONE,ZERO
NONE,VCALENDAR,DTSTART,NONE,ZERO
NONE,VCALENDAR,DUE,NONE,ZERO
NONE,VCALENDAR,DURATION,NONE,ZERO
NONE,VCALENDAR,EXDATE,NONE,ZERO
NONE,VCALENDAR,EXRULE,NONE,ZERO
NONE,VCALENDAR,FREEBUSY,NONE,ZERO
NONE,VCALENDAR,GEO,NONE,ZERO
NONE,VCALENDAR,LASTMODIFIED,NONE,ZERO
NONE,VCALENDAR,LOCATION,NONE,ZERO
NONE,VCALENDAR,METHOD,NONE,ZEROORONE
NONE,VCALENDAR,ORGANIZER,NONE,ZERO
NONE,VCALENDAR,PERCENTCOMPLETE,NONE,ZERO
NONE,VCALENDAR,PRIORITY,NONE,ZERO
NONE,VCALENDAR,PRODID,NONE,ONE
NONE,VCALENDAR,RDATE,NONE,ZERO
NONE,VCALENDAR,RECURRENCEID,NONE,ZERO
NONE,VCALENDAR,RELATEDTO,NONE,ZERO
NONE,VCALENDAR,REPEAT,NONE,ZERO
NONE,VCALENDAR,REQUESTSTATUS,NONE,ZERO
NONE,VCALENDAR,RESOURCES,NONE,ZERO
NONE,VCALENDAR,RRULE,NONE,ZERO
NONE,VCALENDAR,SEQUENCE,NONE,ZERO
NONE,VCALENDAR,STATUS,NONE,ZERO
NONE,VCALENDAR,SUMMARY,NONE,ZERO
NONE,VCALENDAR,TRANSP,NONE,ZERO
NONE,VCALENDAR,TRIGGER,NONE,ZERO
NONE,VCALENDAR,TZID,NONE,ZERO
NONE,VCALENDAR,TZNAME,NONE,ZERO
NONE,VCALENDAR,TZOFFSETFROM,NONE,ZERO
NONE,VCALENDAR,TZOFFSETTO,NONE,ZERO
NONE,VCALENDAR,TZURL,NONE,ZERO
NONE,VCALENDAR,UID,NONE,ZERO
NONE,VCALENDAR,URL,NONE,ZERO
NONE,VCALENDAR,VERSION,NONE,ONE
NONE,VCALENDAR,X,NONE,ZEROPLUS
NONE,VEVENT,ACTION,NONE,ZERO
NONE,VEVENT,ATTACH,NONE,ZEROPLUS
NONE,VEVENT,ATTENDEE,NONE,ZEROPLUS
NONE,VEVENT,CALSCALE,NONE,ZERO
NONE,VEVENT,CATEGORIES,NONE,ZEROPLUS
NONE,VEVENT,CLASS,NONE,ZEROORONE
NONE,VEVENT,COMMENT,NONE,ZEROPLUS
NONE,VEVENT,COMPLETED,NONE,ZERO
NONE,VEVENT,CONTACT,NONE,ZEROPLUS
NONE,VEVENT,CREATED,NONE,ZEROORONE
NONE,VEVENT,DESCRIPTION,NONE,ZEROORONE
NONE,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration
NONE,VEVENT,DTSTAMP,NONE,ZEROORONE
NONE,VEVENT,DTSTART,NONE,ZEROORONE
NONE,VEVENT,DUE,NONE,ZERO
NONE,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend
NONE,VEVENT,EXDATE,NONE,ZEROPLUS
NONE,VEVENT,EXRULE,NONE,ZEROPLUS
NONE,VEVENT,FREEBUSY,NONE,ZERO
NONE,VEVENT,GEO,NONE,ZEROORONE
NONE,VEVENT,LASTMODIFIED,NONE,ZEROORONE
NONE,VEVENT,LOCATION,NONE,ZEROORONE
NONE,VEVENT,METHOD,NONE,ZERO
NONE,VEVENT,ORGANIZER,NONE,ZEROORONE
NONE,VEVENT,PERCENTCOMPLETE,NONE,ZERO
NONE,VEVENT,PRIORITY,NONE,ZEROORONE
NONE,VEVENT,PRODID,NONE,ZERO
NONE,VEVENT,RDATE,NONE,ZEROPLUS
NONE,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
NONE,VEVENT,RELATEDTO,NONE,ZEROPLUS
NONE,VEVENT,REPEAT,NONE,ZERO
NONE,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS
NONE,VEVENT,RESOURCES,NONE,ZEROPLUS
NONE,VEVENT,RRULE,NONE,ZEROPLUS
NONE,VEVENT,SEQUENCE,NONE,ZEROORONE
NONE,VEVENT,STATUS,NONE,ZEROORONE
NONE,VEVENT,SUMMARY,NONE,ZEROORONE
NONE,VEVENT,TRANSP,NONE,ZEROORONE
NONE,VEVENT,TRIGGER,NONE,ZERO
NONE,VEVENT,TZID,NONE,ZERO
NONE,VEVENT,TZNAME,NONE,ZERO
NONE,VEVENT,TZOFFSETFROM,NONE,ZERO
NONE,VEVENT,TZOFFSETTO,NONE,ZERO
NONE,VEVENT,TZURL,NONE,ZERO
NONE,VEVENT,UID,NONE,ZEROORONE
NONE,VEVENT,URL,NONE,ZEROORONE
NONE,VEVENT,VERSION,NONE,ZERO
NONE,VEVENT,X,NONE,ZEROPLUS
NONE,VEVENT,RELCALID,NONE,ZEROORONE
NONE,VTODO,ACTION,NONE,ZERO
NONE,VTODO,ATTACH,NONE,ZEROPLUS
NONE,VTODO,ATTENDEE,NONE,ZEROPLUS
NONE,VTODO,CALSCALE,NONE,ZERO
NONE,VTODO,CATEGORIES,NONE,ZEROPLUS
NONE,VTODO,CLASS,NONE,ZEROORONE
NONE,VTODO,COMMENT,NONE,ZEROPLUS
NONE,VTODO,COMPLETED,NONE,ZEROORONE
NONE,VTODO,CONTACT,NONE,ZEROPLUS
NONE,VTODO,CREATED,NONE,ZEROORONE
NONE,VTODO,DESCRIPTION,NONE,ZEROORONE
NONE,VTODO,DTEND,NONE,ZERO
NONE,VTODO,DTSTAMP,NONE,ZEROORONE
NONE,VTODO,DTSTART,NONE,ZEROORONE
NONE,VTODO,DUE,NONE,ONEEXCLUSIVE
NONE,VTODO,DURATION,NONE,ONEEXCLUSIVE
NONE,VTODO,EXDATE,NONE,ZEROPLUS
NONE,VTODO,EXRULE,NONE,ZEROPLUS
NONE,VTODO,FREEBUSY,NONE,ZERO
NONE,VTODO,GEO,NONE,ZEROORONE
NONE,VTODO,LASTMODIFIED,NONE,ZEROORONE
NONE,VTODO,LOCATION,NONE,ZEROORONE
NONE,VTODO,METHOD,NONE,ZERO
NONE,VTODO,ORGANIZER,NONE,ZEROORONE
NONE,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE
NONE,VTODO,PRIORITY,NONE,ZEROORONE
NONE,VTODO,PRODID,NONE,ZERO
NONE,VTODO,RDATE,NONE,ZEROPLUS
NONE,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
NONE,VTODO,RELATEDTO,NONE,ZEROPLUS
NONE,VTODO,REPEAT,NONE,ZERO
NONE,VTODO,REQUESTSTATUS,NONE,ZEROPLUS
NONE,VTODO,RESOURCES,NONE,ZEROPLUS
NONE,VTODO,RRULE,NONE,ZEROPLUS
NONE,VTODO,SEQUENCE,NONE,ZEROORONE
NONE,VTODO,STATUS,NONE,ZEROORONE
NONE,VTODO,SUMMARY,NONE,ZEROORONE
NONE,VTODO,TRANSP,NONE,ZERO
NONE,VTODO,TRIGGER,NONE,ZERO
NONE,VTODO,TZID,NONE,ZERO
NONE,VTODO,TZNAME,NONE,ZERO
NONE,VTODO,TZOFFSETFROM,NONE,ZERO
NONE,VTODO,TZOFFSETTO,NONE,ZERO
NONE,VTODO,TZURL,NONE,ZERO
NONE,VTODO,UID,NONE,ZEROORONE
NONE,VTODO,URL,NONE,ZEROORONE
NONE,VTODO,VERSION,NONE,ZERO
NONE,VTODO,X,NONE,ZEROPLUS
NONE,VTODO,RELCALID,NONE,ZEROORONE
NONE,VJOURNAL,ACTION,NONE,ZERO
NONE,VJOURNAL,ATTACH,NONE,ZEROPLUS
NONE,VJOURNAL,ATTENDEE,NONE,ZEROPLUS
NONE,VJOURNAL,CALSCALE,NONE,ZERO
NONE,VJOURNAL,CATEGORIES,NONE,ZEROPLUS
NONE,VJOURNAL,CLASS,NONE,ZEROORONE
NONE,VJOURNAL,COMMENT,NONE,ZEROPLUS
NONE,VJOURNAL,COMPLETED,NONE,ZERO
NONE,VJOURNAL,CONTACT,NONE,ZEROPLUS
NONE,VJOURNAL,CREATED,NONE,ZEROORONE
NONE,VJOURNAL,DESCRIPTION,NONE,ZEROORONE
NONE,VJOURNAL,DTEND,NONE,ZERO
NONE,VJOURNAL,DTSTAMP,NONE,ZEROORONE
NONE,VJOURNAL,DTSTART,NONE,ZEROORONE
NONE,VJOURNAL,DUE,NONE,ONEEXCLUSIVE
NONE,VJOURNAL,DURATION,NONE,ONEEXCLUSIVE
NONE,VJOURNAL,EXDATE,NONE,ZEROPLUS
NONE,VJOURNAL,EXRULE,NONE,ZEROPLUS
NONE,VJOURNAL,FREEBUSY,NONE,ZERO
NONE,VJOURNAL,GEO,NONE,ZERO
NONE,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE
NONE,VJOURNAL,LOCATION,NONE,ZERO
NONE,VJOURNAL,METHOD,NONE,ZERO
NONE,VJOURNAL,ORGANIZER,NONE,ZEROORONE
NONE,VJOURNAL,PERCENTCOMPLETE,NONE,ZERO
NONE,VJOURNAL,PRIORITY,NONE,ZERO
NONE,VJOURNAL,PRODID,NONE,ZERO
NONE,VJOURNAL,RDATE,NONE,ZEROPLUS
NONE,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
NONE,VJOURNAL,RELATEDTO,NONE,ZEROPLUS
NONE,VJOURNAL,REPEAT,NONE,ZERO
NONE,VJOURNAL,REQUESTSTATUS,NONE,ZEROPLUS
NONE,VJOURNAL,RESOURCES,NONE,ZERO
NONE,VJOURNAL,RRULE,NONE,ZEROPLUS
NONE,VJOURNAL,SEQUENCE,NONE,ZEROORONE
NONE,VJOURNAL,STATUS,NONE,ZEROORONE
NONE,VJOURNAL,SUMMARY,NONE,ZEROORONE
NONE,VJOURNAL,TRANSP,NONE,ZERO
NONE,VJOURNAL,TRIGGER,NONE,ZERO
NONE,VJOURNAL,TZID,NONE,ZERO
NONE,VJOURNAL,TZNAME,NONE,ZERO
NONE,VJOURNAL,TZOFFSETFROM,NONE,ZERO
NONE,VJOURNAL,TZOFFSETTO,NONE,ZERO
NONE,VJOURNAL,TZURL,NONE,ZERO
NONE,VJOURNAL,UID,NONE,ZEROORONE
NONE,VJOURNAL,URL,NONE,ZEROORONE
NONE,VJOURNAL,VERSION,NONE,ZERO
NONE,VJOURNAL,X,NONE,ZEROPLUS
NONE,VFREEBUSY,ACTION,NONE,ZERO
NONE,VFREEBUSY,ATTACH,NONE,ZERO
NONE,VFREEBUSY,ATTENDEE,NONE,ZEROPLUS
NONE,VFREEBUSY,CALSCALE,NONE,ZERO
NONE,VFREEBUSY,CATEGORIES,NONE,ZERO
NONE,VFREEBUSY,CLASS,NONE,ZERO
NONE,VFREEBUSY,COMMENT,NONE,ZEROPLUS
NONE,VFREEBUSY,COMPLETED,NONE,ZERO
NONE,VFREEBUSY,CONTACT,NONE,ZEROORONE
NONE,VFREEBUSY,CREATED,NONE,ZERO
NONE,VFREEBUSY,DESCRIPTION,NONE,ZERO
NONE,VFREEBUSY,DTEND,NONE,ZEROORONE
NONE,VFREEBUSY,DTSTAMP,NONE,ONE
NONE,VFREEBUSY,DTSTART,NONE,ZEROORONE
NONE,VFREEBUSY,DUE,NONE,ZERO
NONE,VFREEBUSY,DURATION,NONE,ZERO
NONE,VFREEBUSY,EXDATE,NONE,ZERO
NONE,VFREEBUSY,EXRULE,NONE,ZERO
NONE,VFREEBUSY,FREEBUSY,NONE,ZEROPLUS
NONE,VFREEBUSY,GEO,NONE,ZERO
NONE,VFREEBUSY,LASTMODIFIED,NONE,ZERO
NONE,VFREEBUSY,LOCATION,NONE,ZERO
NONE,VFREEBUSY,METHOD,NONE,ZERO
NONE,VFREEBUSY,ORGANIZER,NONE,ZEROORONE
NONE,VFREEBUSY,PERCENTCOMPLETE,NONE,ZERO
NONE,VFREEBUSY,PRIORITY,NONE,ZERO
NONE,VFREEBUSY,PRODID,NONE,ZERO
NONE,VFREEBUSY,RDATE,NONE,ZERO
NONE,VFREEBUSY,RECURRENCEID,NONE,ZERO
NONE,VFREEBUSY,RELATEDTO,NONE,ZERO
NONE,VFREEBUSY,REPEAT,NONE,ZERO
NONE,VFREEBUSY,REQUESTSTATUS,NONE,ZEROPLUS
NONE,VFREEBUSY,RESOURCES,NONE,ZERO
NONE,VFREEBUSY,RRULE,NONE,ZERO
NONE,VFREEBUSY,SEQUENCE,NONE,ZERO
NONE,VFREEBUSY,STATUS,NONE,ZERO
NONE,VFREEBUSY,SUMMARY,NONE,ZERO
NONE,VFREEBUSY,TRANSP,NONE,ZERO
NONE,VFREEBUSY,TRIGGER,NONE,ZERO
NONE,VFREEBUSY,TZID,NONE,ZERO
NONE,VFREEBUSY,TZNAME,NONE,ZERO
NONE,VFREEBUSY,TZOFFSETFROM,NONE,ZERO
NONE,VFREEBUSY,TZOFFSETTO,NONE,ZERO
NONE,VFREEBUSY,TZURL,NONE,ZERO
NONE,VFREEBUSY,UID,NONE,ONE
NONE,VFREEBUSY,URL,NONE,ZEROORONE
NONE,VFREEBUSY,VERSION,NONE,ZERO
NONE,VFREEBUSY,X,NONE,ZEROPLUS
NONE,VTIMEZONE,ACTION,NONE,ZERO
NONE,VTIMEZONE,ATTACH,NONE,ZERO
NONE,VTIMEZONE,ATTENDEE,NONE,ZERO
NONE,VTIMEZONE,CALSCALE,NONE,ZERO
NONE,VTIMEZONE,CATEGORIES,NONE,ZERO
NONE,VTIMEZONE,CLASS,NONE,ZERO
NONE,VTIMEZONE,COMMENT,NONE,ZERO
NONE,VTIMEZONE,COMPLETED,NONE,ZERO
NONE,VTIMEZONE,CONTACT,NONE,ZERO
NONE,VTIMEZONE,CREATED,NONE,ZERO
NONE,VTIMEZONE,DESCRIPTION,NONE,ZERO
NONE,VTIMEZONE,DTEND,NONE,ZERO
NONE,VTIMEZONE,DTSTAMP,NONE,ZERO
NONE,VTIMEZONE,DTSTART,NONE,ZERO
NONE,VTIMEZONE,DUE,NONE,ZERO
NONE,VTIMEZONE,DURATION,NONE,ZERO
NONE,VTIMEZONE,EXDATE,NONE,ZERO
NONE,VTIMEZONE,EXRULE,NONE,ZERO
NONE,VTIMEZONE,FREEBUSY,NONE,ZERO
NONE,VTIMEZONE,GEO,NONE,ZERO
NONE,VTIMEZONE,LASTMODIFIED,NONE,ZEROORONE
NONE,VTIMEZONE,LOCATION,NONE,ZERO
NONE,VTIMEZONE,METHOD,NONE,ZERO
NONE,VTIMEZONE,ORGANIZER,NONE,ZERO
NONE,VTIMEZONE,PERCENTCOMPLETE,NONE,ZERO
NONE,VTIMEZONE,PRIORITY,NONE,ZERO
NONE,VTIMEZONE,PRODID,NONE,ZERO
NONE,VTIMEZONE,RDATE,NONE,ZERO
NONE,VTIMEZONE,RECURRENCEID,NONE,ZERO
NONE,VTIMEZONE,RELATEDTO,NONE,ZERO
NONE,VTIMEZONE,REPEAT,NONE,ZERO
NONE,VTIMEZONE,REQUESTSTATUS,NONE,ZERO
NONE,VTIMEZONE,RESOURCES,NONE,ZERO
NONE,VTIMEZONE,RRULE,NONE,ZERO
NONE,VTIMEZONE,SEQUENCE,NONE,ZERO
NONE,VTIMEZONE,STATUS,NONE,ZERO
NONE,VTIMEZONE,SUMMARY,NONE,ZERO
NONE,VTIMEZONE,TRANSP,NONE,ZERO
NONE,VTIMEZONE,TRIGGER,NONE,ZERO
NONE,VTIMEZONE,TZID,NONE,ONE
NONE,VTIMEZONE,TZIDALIASOF,NONE,ZEROPLUS
NONE,VTIMEZONE,TZNAME,NONE,ZERO
NONE,VTIMEZONE,TZOFFSETFROM,NONE,ZERO
NONE,VTIMEZONE,TZOFFSETTO,NONE,ZERO
NONE,VTIMEZONE,TZUNTIL,NONE,ZEROORONE
NONE,VTIMEZONE,TZURL,NONE,ZEROPLUS
NONE,VTIMEZONE,UID,NONE,ZERO
NONE,VTIMEZONE,URL,NONE,ZERO
NONE,VTIMEZONE,VERSION,NONE,ZERO
NONE,VTIMEZONE,X,NONE,ZEROORONE
NONE,VTIMEZONE,NONE,XSTANDARD,ZEROPLUS
NONE,VTIMEZONE,NONE,XDAYLIGHT,ZEROPLUS
NONE,XSTANDARD,ACTION,NONE,ZERO
NONE,XSTANDARD,ATTACH,NONE,ZERO
NONE,XSTANDARD,ATTENDEE,NONE,ZERO
NONE,XSTANDARD,CALSCALE,NONE,ZERO
NONE,XSTANDARD,CATEGORIES,NONE,ZERO
NONE,XSTANDARD,CLASS,NONE,ZERO
NONE,XSTANDARD,COMMENT,NONE,ZEROPLUS
NONE,XSTANDARD,COMPLETED,NONE,ZERO
NONE,XSTANDARD,CONTACT,NONE,ZERO
NONE,XSTANDARD,CREATED,NONE,ZERO
NONE,XSTANDARD,DESCRIPTION,NONE,ZERO
NONE,XSTANDARD,DTEND,NONE,ZERO
NONE,XSTANDARD,DTSTAMP,NONE,ZERO
NONE,XSTANDARD,DTSTART,NONE,ONE
NONE,XSTANDARD,DUE,NONE,ZERO
NONE,XSTANDARD,DURATION,NONE,ZERO
NONE,XSTANDARD,EXDATE,NONE,ZERO
NONE,XSTANDARD,EXRULE,NONE,ZERO
NONE,XSTANDARD,FREEBUSY,NONE,ZERO
NONE,XSTANDARD,GEO,NONE,ZERO
NONE,XSTANDARD,LASTMODIFIED,NONE,ZERO
NONE,XSTANDARD,LOCATION,NONE,ZERO
NONE,XSTANDARD,METHOD,NONE,ZERO
NONE,XSTANDARD,ORGANIZER,NONE,ZERO
NONE,XSTANDARD,PERCENTCOMPLETE,NONE,ZERO
NONE,XSTANDARD,PRIORITY,NONE,ZERO
NONE,XSTANDARD,PRODID,NONE,ZERO
NONE,XSTANDARD,RDATE,NONE,ZEROPLUS
NONE,XSTANDARD,RECURRENCEID,NONE,ZERO
NONE,XSTANDARD,RELATEDTO,NONE,ZERO
NONE,XSTANDARD,REPEAT,NONE,ZERO
NONE,XSTANDARD,REQUESTSTATUS,NONE,ZERO
NONE,XSTANDARD,RESOURCES,NONE,ZERO
NONE,XSTANDARD,RRULE,NONE,ZEROPLUS
NONE,XSTANDARD,SEQUENCE,NONE,ZERO
NONE,XSTANDARD,STATUS,NONE,ZERO
NONE,XSTANDARD,SUMMARY,NONE,ZERO
NONE,XSTANDARD,TRANSP,NONE,ZERO
NONE,XSTANDARD,TRIGGER,NONE,ZERO
NONE,XSTANDARD,TZID,NONE,ZERO
NONE,XSTANDARD,TZNAME,NONE,ZEROPLUS
NONE,XSTANDARD,TZOFFSETFROM,NONE,ONE
NONE,XSTANDARD,TZOFFSETTO,NONE,ONE
NONE,XSTANDARD,TZURL,NONE,ZERO
NONE,XSTANDARD,UID,NONE,ZERO
NONE,XSTANDARD,URL,NONE,ZERO
NONE,XSTANDARD,VERSION,NONE,ZERO
NONE,XSTANDARD,X,NONE,ZEROPLUS
NONE,XDAYLIGHT,ACTION,NONE,ZERO
NONE,XDAYLIGHT,ATTACH,NONE,ZERO
NONE,XDAYLIGHT,ATTENDEE,NONE,ZERO
NONE,XDAYLIGHT,CALSCALE,NONE,ZERO
NONE,XDAYLIGHT,CATEGORIES,NONE,ZERO
NONE,XDAYLIGHT,CLASS,NONE,ZERO
NONE,XDAYLIGHT,COMMENT,NONE,ZEROPLUS
NONE,XDAYLIGHT,COMPLETED,NONE,ZERO
NONE,XDAYLIGHT,CONTACT,NONE,ZERO
NONE,XDAYLIGHT,CREATED,NONE,ZERO
NONE,XDAYLIGHT,DESCRIPTION,NONE,ZERO
NONE,XDAYLIGHT,DTEND,NONE,ZERO
NONE,XDAYLIGHT,DTSTAMP,NONE,ZERO
NONE,XDAYLIGHT,DTSTART,NONE,ONE
NONE,XDAYLIGHT,DUE,NONE,ZERO
NONE,XDAYLIGHT,DURATION,NONE,ZERO
NONE,XDAYLIGHT,EXDATE,NONE,ZERO
NONE,XDAYLIGHT,EXRULE,NONE,ZERO
NONE,XDAYLIGHT,FREEBUSY,NONE,ZERO
NONE,XDAYLIGHT,GEO,NONE,ZERO
NONE,XDAYLIGHT,LASTMODIFIED,NONE,ZERO
NONE,XDAYLIGHT,LOCATION,NONE,ZERO
NONE,XDAYLIGHT,METHOD,NONE,ZERO
NONE,XDAYLIGHT,ORGANIZER,NONE,ZERO
NONE,XDAYLIGHT,PERCENTCOMPLETE,NONE,ZERO
NONE,XDAYLIGHT,PRIORITY,NONE,ZERO
NONE,XDAYLIGHT,PRODID,NONE,ZERO
NONE,XDAYLIGHT,RDATE,NONE,ZEROPLUS
NONE,XDAYLIGHT,RECURRENCEID,NONE,ZERO
NONE,XDAYLIGHT,RELATEDTO,NONE,ZERO
NONE,XDAYLIGHT,REPEAT,NONE,ZERO
NONE,XDAYLIGHT,REQUESTSTATUS,NONE,ZERO
NONE,XDAYLIGHT,RESOURCES,NONE,ZERO
NONE,XDAYLIGHT,RRULE,NONE,ZEROPLUS
NONE,XDAYLIGHT,SEQUENCE,NONE,ZERO
NONE,XDAYLIGHT,STATUS,NONE,ZERO
NONE,XDAYLIGHT,SUMMARY,NONE,ZERO
NONE,XDAYLIGHT,TRANSP,NONE,ZERO
NONE,XDAYLIGHT,TRIGGER,NONE,ZERO
NONE,XDAYLIGHT,TZID,NONE,ZERO
NONE,XDAYLIGHT,TZNAME,NONE,ZEROPLUS
NONE,XDAYLIGHT,TZOFFSETFROM,NONE,ONE
NONE,XDAYLIGHT,TZOFFSETTO,NONE,ONE
NONE,XDAYLIGHT,TZURL,NONE,ZERO
NONE,XDAYLIGHT,UID,NONE,ZERO
NONE,XDAYLIGHT,URL,NONE,ZERO
NONE,XDAYLIGHT,VERSION,NONE,ZERO
NONE,XDAYLIGHT,X,NONE,ZEROPLUS
NONE,XAUDIOALARM,ACTION,NONE,ONE
NONE,XAUDIOALARM,ATTACH,NONE,ZEROORONE
NONE,XAUDIOALARM,ATTENDEE,NONE,ZERO
NONE,XAUDIOALARM,CALSCALE,NONE,ZERO
NONE,XAUDIOALARM,CATEGORIES,NONE,ZERO
NONE,XAUDIOALARM,CLASS,NONE,ZERO
NONE,XAUDIOALARM,COMMENT,NONE,ZERO
NONE,XAUDIOALARM,COMPLETED,NONE,ZERO
NONE,XAUDIOALARM,CONTACT,NONE,ZERO
NONE,XAUDIOALARM,CREATED,NONE,ZERO
NONE,XAUDIOALARM,DESCRIPTION,NONE,ZERO
NONE,XAUDIOALARM,DTEND,NONE,ZERO
NONE,XAUDIOALARM,DTSTAMP,NONE,ZERO
NONE,XAUDIOALARM,DTSTART,NONE,ZERO
NONE,XAUDIOALARM,DUE,NONE,ZERO
NONE,XAUDIOALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
NONE,XAUDIOALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
NONE,XAUDIOALARM,EXDATE,NONE,ZERO
NONE,XAUDIOALARM,EXRULE,NONE,ZERO
NONE,XAUDIOALARM,FREEBUSY,NONE,ZERO
NONE,XAUDIOALARM,GEO,NONE,ZERO
NONE,XAUDIOALARM,LASTMODIFIED,NONE,ZERO
NONE,XAUDIOALARM,LOCATION,NONE,ZERO
NONE,XAUDIOALARM,METHOD,NONE,ZERO
NONE,XAUDIOALARM,ORGANIZER,NONE,ZERO
NONE,XAUDIOALARM,PERCENTCOMPLETE,NONE,ZERO
NONE,XAUDIOALARM,PRIORITY,NONE,ZERO
NONE,XAUDIOALARM,PRODID,NONE,ZERO
NONE,XAUDIOALARM,RDATE,NONE,ZERO
NONE,XAUDIOALARM,RECURRENCEID,NONE,ZERO
NONE,XAUDIOALARM,RELATEDTO,NONE,ZERO
NONE,XAUDIOALARM,REQUESTSTATUS,NONE,ZERO
NONE,XAUDIOALARM,RESOURCES,NONE,ZERO
NONE,XAUDIOALARM,RRULE,NONE,ZERO
NONE,XAUDIOALARM,SEQUENCE,NONE,ZERO
NONE,XAUDIOALARM,STATUS,NONE,ZERO
NONE,XAUDIOALARM,SUMMARY,NONE,ZERO
NONE,XAUDIOALARM,TRANSP,NONE,ZERO
NONE,XAUDIOALARM,TRIGGER,NONE,ONE
NONE,XAUDIOALARM,TZID,NONE,ZERO
NONE,XAUDIOALARM,TZNAME,NONE,ZERO
NONE,XAUDIOALARM,TZOFFSETFROM,NONE,ZERO
NONE,XAUDIOALARM,TZOFFSETTO,NONE,ZERO
NONE,XAUDIOALARM,TZURL,NONE,ZERO
NONE,XAUDIOALARM,UID,NONE,ZERO
NONE,XAUDIOALARM,URL,NONE,ZERO
NONE,XAUDIOALARM,VERSION,NONE,ZERO
NONE,XAUDIOALARM,X,NONE,ZEROPLUS
NONE,XDISPLAYALARM,ACTION,NONE,ONE
NONE,XDISPLAYALARM,ATTACH,NONE,ZERO
NONE,XDISPLAYALARM,ATTENDEE,NONE,ZERO
NONE,XDISPLAYALARM,CALSCALE,NONE,ZERO
NONE,XDISPLAYALARM,CATEGORIES,NONE,ZERO
NONE,XDISPLAYALARM,CLASS,NONE,ZERO
NONE,XDISPLAYALARM,COMMENT,NONE,ZERO
NONE,XDISPLAYALARM,COMPLETED,NONE,ZERO
NONE,XDISPLAYALARM,CONTACT,NONE,ZERO
NONE,XDISPLAYALARM,CREATED,NONE,ZERO
NONE,XDISPLAYALARM,DESCRIPTION,NONE,ONE
NONE,XDISPLAYALARM,DTEND,NONE,ZERO
NONE,XDISPLAYALARM,DTSTAMP,NONE,ZERO
NONE,XDISPLAYALARM,DTSTART,NONE,ZERO
NONE,XDISPLAYALARM,DUE,NONE,ZERO
NONE,XDISPLAYALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
NONE,XDISPLAYALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
NONE,XDISPLAYALARM,EXDATE,NONE,ZERO
NONE,XDISPLAYALARM,EXRULE,NONE,ZERO
NONE,XDISPLAYALARM,FREEBUSY,NONE,ZERO
NONE,XDISPLAYALARM,GEO,NONE,ZERO
NONE,XDISPLAYALARM,LASTMODIFIED,NONE,ZERO
NONE,XDISPLAYALARM,LOCATION,NONE,ZERO
NONE,XDISPLAYALARM,METHOD,NONE,ZERO
NONE,XDISPLAYALARM,ORGANIZER,NONE,ZERO
NONE,XDISPLAYALARM,PERCENTCOMPLETE,NONE,ZERO
NONE,XDISPLAYALARM,PRIORITY,NONE,ZERO
NONE,XDISPLAYALARM,PRODID,NONE,ZERO
NONE,XDISPLAYALARM,RDATE,NONE,ZERO
NONE,XDISPLAYALARM,RECURRENCEID,NONE,ZERO
NONE,XDISPLAYALARM,RELATEDTO,NONE,ZERO
NONE,XDISPLAYALARM,REQUESTSTATUS,NONE,ZERO
NONE,XDISPLAYALARM,RESOURCES,NONE,ZERO
NONE,XDISPLAYALARM,RRULE,NONE,ZERO
NONE,XDISPLAYALARM,SEQUENCE,NONE,ZERO
NONE,XDISPLAYALARM,STATUS,NONE,ZERO
NONE,XDISPLAYALARM,SUMMARY,NONE,ZERO
NONE,XDISPLAYALARM,TRANSP,NONE,ZERO
NONE,XDISPLAYALARM,TRIGGER,NONE,ONE
NONE,XDISPLAYALARM,TZID,NONE,ZERO
NONE,XDISPLAYALARM,TZNAME,NONE,ZERO
NONE,XDISPLAYALARM,TZOFFSETFROM,NONE,ZERO
NONE,XDISPLAYALARM,TZOFFSETTO,NONE,ZERO
NONE,XDISPLAYALARM,TZURL,NONE,ZERO
NONE,XDISPLAYALARM,UID,NONE,ZERO
NONE,XDISPLAYALARM,URL,NONE,ZERO
NONE,XDISPLAYALARM,VERSION,NONE,ZERO
NONE,XDISPLAYALARM,X,NONE,ZEROPLUS
NONE,XEMAILALARM,ACTION,NONE,ONE,must_be_email
NONE,XEMAILALARM,ATTACH,NONE,ZEROPLUS
NONE,XEMAILALARM,ATTENDEE,NONE,ONEPLUS
NONE,XEMAILALARM,CALSCALE,NONE,ZERO
NONE,XEMAILALARM,CATEGORIES,NONE,ZERO
NONE,XEMAILALARM,CLASS,NONE,ZERO
NONE,XEMAILALARM,COMMENT,NONE,ZERO
NONE,XEMAILALARM,COMPLETED,NONE,ZERO
NONE,XEMAILALARM,CONTACT,NONE,ZERO
NONE,XEMAILALARM,CREATED,NONE,ZERO
NONE,XEMAILALARM,DESCRIPTION,NONE,ONE
NONE,XEMAILALARM,DTEND,NONE,ZERO
NONE,XEMAILALARM,DTSTAMP,NONE,ZERO
NONE,XEMAILALARM,DTSTART,NONE,ZERO
NONE,XEMAILALARM,DUE,NONE,ZERO
NONE,XEMAILALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
NONE,XEMAILALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
NONE,XEMAILALARM,EXDATE,NONE,ZERO
NONE,XEMAILALARM,EXRULE,NONE,ZERO
NONE,XEMAILALARM,FREEBUSY,NONE,ZERO
NONE,XEMAILALARM,GEO,NONE,ZERO
NONE,XEMAILALARM,LASTMODIFIED,NONE,ZERO
NONE,XEMAILALARM,LOCATION,NONE,ZERO
NONE,XEMAILALARM,METHOD,NONE,ZERO
NONE,XEMAILALARM,ORGANIZER,NONE,ZERO
NONE,XEMAILALARM,PERCENTCOMPLETE,NONE,ZERO
NONE,XEMAILALARM,PRIORITY,NONE,ZERO
NONE,XEMAILALARM,PRODID,NONE,ZERO
NONE,XEMAILALARM,RDATE,NONE,ZERO
NONE,XEMAILALARM,RECURRENCEID,NONE,ZERO
NONE,XEMAILALARM,RELATEDTO,NONE,ZERO
NONE,XEMAILALARM,REQUESTSTATUS,NONE,ZERO
NONE,XEMAILALARM,RESOURCES,NONE,ZERO
NONE,XEMAILALARM,RRULE,NONE,ZERO
NONE,XEMAILALARM,SEQUENCE,NONE,ZERO
NONE,XEMAILALARM,STATUS,NONE,ZERO
NONE,XEMAILALARM,SUMMARY,NONE,ONE
NONE,XEMAILALARM,TRANSP,NONE,ZERO
NONE,XEMAILALARM,TRIGGER,NONE,ONE
NONE,XEMAILALARM,TZID,NONE,ZERO
NONE,XEMAILALARM,TZNAME,NONE,ZERO
NONE,XEMAILALARM,TZOFFSETFROM,NONE,ZERO
NONE,XEMAILALARM,TZOFFSETTO,NONE,ZERO
NONE,XEMAILALARM,TZURL,NONE,ZERO
NONE,XEMAILALARM,UID,NONE,ZERO
NONE,XEMAILALARM,URL,NONE,ZERO
NONE,XEMAILALARM,VERSION,NONE,ZERO
NONE,XEMAILALARM,X,NONE,ZEROPLUS
NONE,XPROCEDUREALARM,ACTION,NONE,ONE
NONE,XPROCEDUREALARM,ATTACH,NONE,ZEROORONE
NONE,XPROCEDUREALARM,ATTENDEE,NONE,ZERO
NONE,XPROCEDUREALARM,CALSCALE,NONE,ZERO
NONE,XPROCEDUREALARM,CATEGORIES,NONE,ZERO
NONE,XPROCEDUREALARM,CLASS,NONE,ZERO
NONE,XPROCEDUREALARM,COMMENT,NONE,ZERO
NONE,XPROCEDUREALARM,COMPLETED,NONE,ZERO
NONE,XPROCEDUREALARM,CONTACT,NONE,ZERO
NONE,XPROCEDUREALARM,CREATED,NONE,ZERO
NONE,XPROCEDUREALARM,DESCRIPTION,NONE,ZEROORONE
NONE,XPROCEDUREALARM,DTEND,NONE,ZERO
NONE,XPROCEDUREALARM,DTSTAMP,NONE,ZERO
NONE,XPROCEDUREALARM,DTSTART,NONE,ZERO
NONE,XPROCEDUREALARM,DUE,NONE,ZERO
NONE,XPROCEDUREALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat
NONE,XPROCEDUREALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration
NONE,XPROCEDUREALARM,EXDATE,NONE,ZERO
NONE,XPROCEDUREALARM,EXRULE,NONE,ZERO
NONE,XPROCEDUREALARM,FREEBUSY,NONE,ZERO
NONE,XPROCEDUREALARM,GEO,NONE,ZERO
NONE,XPROCEDUREALARM,LASTMODIFIED,NONE,ZERO
NONE,XPROCEDUREALARM,LOCATION,NONE,ZERO
NONE,XPROCEDUREALARM,METHOD,NONE,ZERO
NONE,XPROCEDUREALARM,ORGANIZER,NONE,ZERO
NONE,XPROCEDUREALARM,PERCENTCOMPLETE,NONE,ZERO
NONE,XPROCEDUREALARM,PRIORITY,NONE,ZERO
NONE,XPROCEDUREALARM,PRODID,NONE,ZERO
NONE,XPROCEDUREALARM,RDATE,NONE,ZERO
NONE,XPROCEDUREALARM,RECURRENCEID,NONE,ZERO
NONE,XPROCEDUREALARM,RELATEDTO,NONE,ZERO
NONE,XPROCEDUREALARM,REQUESTSTATUS,NONE,ZERO
NONE,XPROCEDUREALARM,RESOURCES,NONE,ZERO
NONE,XPROCEDUREALARM,RRULE,NONE,ZERO
NONE,XPROCEDUREALARM,SEQUENCE,NONE,ZERO
NONE,XPROCEDUREALARM,STATUS,NONE,ZERO
NONE,XPROCEDUREALARM,SUMMARY,NONE,ZERO
NONE,XPROCEDUREALARM,TRANSP,NONE,ZERO
NONE,XPROCEDUREALARM,TRIGGER,NONE,ONE
NONE,XPROCEDUREALARM,TZID,NONE,ZERO
NONE,XPROCEDUREALARM,TZNAME,NONE,ZERO
NONE,XPROCEDUREALARM,TZOFFSETFROM,NONE,ZERO
NONE,XPROCEDUREALARM,TZOFFSETTO,NONE,ZERO
NONE,XPROCEDUREALARM,TZURL,NONE,ZERO
NONE,XPROCEDUREALARM,UID,NONE,ZERO
NONE,XPROCEDUREALARM,URL,NONE,ZERO
NONE,XPROCEDUREALARM,VERSION,NONE,ZERO
NONE,XPROCEDUREALARM,X,NONE,ZEROPLUS
NONE,VQUERY,QUERY,NONE,ZEROORONE
NONE,VQUERY,QUERYNAME,NONE,ONE
NONE,VQUERY,EXPAND,NONE,ONE
NONE,VAVAILABILITY,ACTION,NONE,ZERO
NONE,VAVAILABILITY,ATTACH,NONE,ZERO
NONE,VAVAILABILITY,ATTENDEE,NONE,ZERO
NONE,VAVAILABILITY,BUSYTYPE,NONE,ZEROORONE
NONE,VAVAILABILITY,CALSCALE,NONE,ZERO
NONE,VAVAILABILITY,CATEGORIES,NONE,ZEROPLUS
NONE,VAVAILABILITY,CLASS,NONE,ZEROORONE
NONE,VAVAILABILITY,COMMENT,NONE,ZEROPLUS
NONE,VAVAILABILITY,COMPLETED,NONE,ZERO
NONE,VAVAILABILITY,CONTACT,NONE,ZEROPLUS
NONE,VAVAILABILITY,CREATED,NONE,ZEROORONE
NONE,VAVAILABILITY,DESCRIPTION,NONE,ZEROORONE
NONE,VAVAILABILITY,DTEND,NONE,ONEEXCLUSIVE,no_duration
NONE,VAVAILABILITY,DTSTAMP,NONE,ONE
NONE,VAVAILABILITY,DTSTART,NONE,ZEROORONE
NONE,VAVAILABILITY,DUE,NONE,ZERO
NONE,VAVAILABILITY,DURATION,NONE,ONEEXCLUSIVE,no_dtend
NONE,VAVAILABILITY,EXDATE,NONE,ZERO
NONE,VAVAILABILITY,EXRULE,NONE,ZERO
NONE,VAVAILABILITY,FREEBUSY,NONE,ZERO
NONE,VAVAILABILITY,GEO,NONE,ZERO
NONE,VAVAILABILITY,LASTMODIFIED,NONE,ZEROORONE
NONE,VAVAILABILITY,LOCATION,NONE,ZERO
NONE,VAVAILABILITY,METHOD,NONE,ZERO
NONE,VAVAILABILITY,ORGANIZER,NONE,ZEROORONE
NONE,VAVAILABILITY,PERCENTCOMPLETE,NONE,ZERO
NONE,VAVAILABILITY,PRIORITY,NONE,ZEROORONE
NONE,VAVAILABILITY,PRODID,NONE,ZERO
NONE,VAVAILABILITY,RDATE,NONE,ZERO
NONE,VAVAILABILITY,RECURRENCEID,NONE,ZERO
NONE,VAVAILABILITY,RELATEDTO,NONE,ZERO
NONE,VAVAILABILITY,REPEAT,NONE,ZERO
NONE,VAVAILABILITY,REQUESTSTATUS,NONE,ZERO
NONE,VAVAILABILITY,RESOURCES,NONE,ZERO
NONE,VAVAILABILITY,RRULE,NONE,ZERO
NONE,VAVAILABILITY,SEQUENCE,NONE,ZEROORONE
NONE,VAVAILABILITY,STATUS,NONE,ZERO
NONE,VAVAILABILITY,SUMMARY,NONE,ZEROORONE
NONE,VAVAILABILITY,TRANSP,NONE,ZERO
NONE,VAVAILABILITY,TRIGGER,NONE,ZERO
NONE,VAVAILABILITY,TZID,NONE,ZERO
NONE,VAVAILABILITY,TZNAME,NONE,ZERO
NONE,VAVAILABILITY,TZOFFSETFROM,NONE,ZERO
NONE,VAVAILABILITY,TZOFFSETTO,NONE,ZERO
NONE,VAVAILABILITY,TZURL,NONE,ZERO
NONE,VAVAILABILITY,UID,NONE,ONE
NONE,VAVAILABILITY,URL,NONE,ZEROORONE
NONE,VAVAILABILITY,VERSION,NONE,ZERO
NONE,VAVAILABILITY,X,NONE,ZEROPLUS
NONE,VAVAILABILITY,NONE,XAVAILABLE,ZEROPLUS
NONE,XAVAILABLE,ACTION,NONE,ZERO
NONE,XAVAILABLE,ATTACH,NONE,ZERO
NONE,XAVAILABLE,ATTENDEE,NONE,ZERO
NONE,XAVAILABLE,CALSCALE,NONE,ZERO
NONE,XAVAILABLE,CATEGORIES,NONE,ZEROPLUS
NONE,XAVAILABLE,CLASS,NONE,ZERO
NONE,XAVAILABLE,COMMENT,NONE,ZEROPLUS
NONE,XAVAILABLE,COMPLETED,NONE,ZERO
NONE,XAVAILABLE,CONTACT,NONE,ZEROPLUS
NONE,XAVAILABLE,CREATED,NONE,ZEROORONE
NONE,XAVAILABLE,DESCRIPTION,NONE,ZEROORONE
NONE,XAVAILABLE,DTEND,NONE,ONEEXCLUSIVE,no_duration
NONE,XAVAILABLE,DTSTAMP,NONE,ONE
NONE,XAVAILABLE,DTSTART,NONE,ONE
NONE,XAVAILABLE,DUE,NONE,ZERO
NONE,XAVAILABLE,DURATION,NONE,ONEEXCLUSIVE,no_dtend
NONE,XAVAILABLE,EXDATE,NONE,ZEROPLUS
NONE,XAVAILABLE,EXRULE,NONE,ZERO
NONE,XAVAILABLE,FREEBUSY,NONE,ZERO
NONE,XAVAILABLE,GEO,NONE,ZERO
NONE,XAVAILABLE,LASTMODIFIED,NONE,ZEROORONE
NONE,XAVAILABLE,LOCATION,NONE,ZERO
NONE,XAVAILABLE,METHOD,NONE,ZERO
NONE,XAVAILABLE,ORGANIZER,NONE,ZERO
NONE,XAVAILABLE,PERCENTCOMPLETE,NONE,ZERO
NONE,XAVAILABLE,PRIORITY,NONE,ZERO
NONE,XAVAILABLE,PRODID,NONE,ZERO
NONE,XAVAILABLE,RDATE,NONE,ZEROPLUS
NONE,XAVAILABLE,RECURRENCEID,NONE,ZEROORONE,must_be_recurring
NONE,XAVAILABLE,RELATEDTO,NONE,ZERO
NONE,XAVAILABLE,REPEAT,NONE,ZERO
NONE,XAVAILABLE,REQUESTSTATUS,NONE,ZERO
NONE,XAVAILABLE,RESOURCES,NONE,ZERO
NONE,XAVAILABLE,RRULE,NONE,ZEROORONE
NONE,XAVAILABLE,SEQUENCE,NONE,ZERO
NONE,XAVAILABLE,STATUS,NONE,ZERO
NONE,XAVAILABLE,SUMMARY,NONE,ZEROORONE
NONE,XAVAILABLE,TRANSP,NONE,ZERO
NONE,XAVAILABLE,TRIGGER,NONE,ZERO
NONE,XAVAILABLE,TZID,NONE,ZERO
NONE,XAVAILABLE,TZNAME,NONE,ZERO
NONE,XAVAILABLE,TZOFFSETFROM,NONE,ZERO
NONE,XAVAILABLE,TZOFFSETTO,NONE,ZERO
NONE,XAVAILABLE,TZURL,NONE,ZERO
NONE,XAVAILABLE,UID,NONE,ONE
NONE,XAVAILABLE,URL,NONE,ZERO
NONE,XAVAILABLE,VERSION,NONE,ZERO
NONE,XAVAILABLE,X,NONE,ZEROPLUS
PUBLISH,VPOLL,NONE,NONE,ONEPLUS
PUBLISH,VPOLL,DTSTAMP,NONE,ONE
PUBLISH,VPOLL,DTSTART,NONE,ZEROORONE
PUBLISH,VPOLL,ORGANIZER,NONE,ONE
PUBLISH,VPOLL,SUMMARY,NONE,ONE
PUBLISH,VPOLL,UID,NONE,ONE
PUBLISH,VPOLL,SEQUENCE,NONE,ZEROORONE
PUBLISH,VPOLL,ACCEPTRESPONSE,NONE,ZEROORONE
PUBLISH,VPOLL,ATTACH,NONE,ZEROPLUS
PUBLISH,VPOLL,CATEGORIES,NONE,ZEROPLUS #Non-standard
PUBLISH,VPOLL,CLASS,NONE,ZEROORONE
PUBLISH,VPOLL,COMMENT,NONE,ZEROPLUS
PUBLISH,VPOLL,COMPLETED,NONE,ZEROORONE
PUBLISH,VPOLL,CONTACT,NONE,ZEROORONE
PUBLISH,VPOLL,CREATED,NONE,ZEROORONE
PUBLISH,VPOLL,DESCRIPTION,NONE,ZEROORONE
PUBLISH,VPOLL,DTEND,NONE,ONEEXCLUSIVE,no_duration
PUBLISH,VPOLL,DURATION,NONE,ONEEXCLUSIVE,no_dtend
PUBLISH,VPOLL,LASTMODIFIED,NONE,ZEROORONE
PUBLISH,VPOLL,POLLITEMID,NONE,ZERO
PUBLISH,VPOLL,POLLMODE,NONE,ZEROORONE
PUBLISH,VPOLL,POLLPROPERTIES,NONE,ZEROORONE
PUBLISH,VPOLL,PRIORITY,NONE,ZEROORONE
PUBLISH,VPOLL,RELATEDTO,NONE,ZEROPLUS
PUBLISH,VPOLL,RESOURCES,NONE,ZEROPLUS
PUBLISH,VPOLL,STATUS,NONE,ZEROORONE,may_be_tent_conf
PUBLISH,VPOLL,URL,NONE,ZEROORONE
PUBLISH,VPOLL,X,NONE,ZEROPLUS
PUBLISH,VPOLL,VOTER,NONE,ZERO
PUBLISH,VPOLL,REQUESTSTATUS,NONE,ZERO
PUBLISH,VPOLL,NONE,VALARM,ZEROPLUS
PUBLISH,VPOLL,NONE,VEVENT,ZEROPLUS
PUBLISH,VPOLL,NONE,VFREEBUSY,ZERO
PUBLISH,VPOLL,NONE,VAVAILABILITY,ZERO
PUBLISH,VPOLL,NONE,VJOURNAL,ZEROPLUS
PUBLISH,VPOLL,NONE,VTODO,ZEROPLUS
PUBLISH,VPOLL,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
PUBLISH,VPOLL,NONE,X,ZEROPLUS
REQUEST,VPOLL,NONE,NONE,ONE
REQUEST,VPOLL,VOTER,NONE,ONEPLUS
REQUEST,VPOLL,DTSTAMP,NONE,ONE
REQUEST,VPOLL,DTSTART,NONE,ZEROORONE
REQUEST,VPOLL,ORGANIZER,NONE,ONE
REQUEST,VPOLL,SEQUENCE,NONE,ZEROORONE
REQUEST,VPOLL,SUMMARY,NONE,ONE
REQUEST,VPOLL,UID,NONE,ONE
REQUEST,VPOLL,ACCEPTRESPONSE,NONE,ZEROORONE
REQUEST,VPOLL,ATTACH,NONE,ZEROPLUS
REQUEST,VPOLL,CATEGORIES,NONE,ZEROPLUS #Non-standard
REQUEST,VPOLL,CLASS,NONE,ZEROORONE
REQUEST,VPOLL,COMMENT,NONE,ZEROPLUS
REQUEST,VPOLL,COMPLETED,NONE,ZEROORONE
REQUEST,VPOLL,CONTACT,NONE,ZEROPLUS
REQUEST,VPOLL,CREATED,NONE,ZEROORONE
REQUEST,VPOLL,DESCRIPTION,NONE,ZEROORONE
REQUEST,VPOLL,DTEND,NONE,ONEEXCLUSIVE,no_duration
REQUEST,VPOLL,DURATION,NONE,ONEEXCLUSIVE,no_dtend
REQUEST,VPOLL,GEO,NONE,ZEROORONE
REQUEST,VPOLL,LASTMODIFIED,NONE,ZEROORONE
REQUEST,VPOLL,LOCATION,NONE,ZEROORONE
REQUEST,VPOLL,POLLITEMID,NONE,ZERO
REQUEST,VPOLL,POLLMODE,NONE,ZEROORONE
REQUEST,VPOLL,POLLPROPERTIES,NONE,ZEROORONE
REQUEST,VPOLL,PRIORITY,NONE,ZEROORONE
REQUEST,VPOLL,RELATEDTO,NONE,ZEROPLUS
REQUEST,VPOLL,REQUESTSTATUS,NONE,ZERO
REQUEST,VPOLL,RESOURCES,NONE,ZEROPLUS
REQUEST,VPOLL,STATUS,NONE,ZEROORONE,may_be_tent_conf
REQUEST,VPOLL,TRANSP,NONE,ZEROORONE
REQUEST,VPOLL,URL,NONE,ZEROORONE
REQUEST,VPOLL,X,NONE,ZEROPLUS
REQUEST,VPOLL,NONE,VALARM,ZEROPLUS
REQUEST,VPOLL,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
REQUEST,VPOLL,NONE,X,ZEROPLUS
REQUEST,VPOLL,NONE,VEVENT,ZEROPLUS
REQUEST,VPOLL,NONE,VFREEBUSY,ZERO
REQUEST,VPOLL,NONE,VAVAILABILITY,ZERO
REQUEST,VPOLL,NONE,VJOURNAL,ZEROPLUS
REQUEST,VPOLL,NONE,VTODO,ZEROPLUS
REPLY,VPOLL,NONE,NONE,ONEPLUS
REPLY,VPOLL,VOTER,NONE,ONE
REPLY,VPOLL,DTSTAMP,NONE,ONE
REPLY,VPOLL,ORGANIZER,NONE,ONE
REPLY,VPOLL,UID,NONE,ONE
REPLY,VPOLL,SEQUENCE,NONE,ZEROORONE
REPLY,VPOLL,ACCEPTRESPONSE,NONE,ZEROORONE
REPLY,VPOLL,ATTACH,NONE,ZEROPLUS
REPLY,VPOLL,CATEGORIES,NONE,ZEROPLUS #Non-standard
REPLY,VPOLL,CLASS,NONE,ZEROORONE
REPLY,VPOLL,COMMENT,NONE,ZEROPLUS
REPLY,VPOLL,COMPLETED,NONE,ZEROORONE
REPLY,VPOLL,CONTACT,NONE,ZEROPLUS
REPLY,VPOLL,CREATED,NONE,ZEROORONE
REPLY,VPOLL,DESCRIPTION,NONE,ZEROORONE
REPLY,VPOLL,DTEND,NONE,ONEEXCLUSIVE,no_duration
REPLY,VPOLL,DTSTART,NONE,ZEROORONE
REPLY,VPOLL,DURATION,NONE,ONEEXCLUSIVE,no_dtend
REPLY,VPOLL,GEO,NONE,ZEROORONE
REPLY,VPOLL,LASTMODIFIED,NONE,ZEROORONE
REPLY,VPOLL,LOCATION,NONE,ZEROORONE
REPLY,VPOLL,POLLITEMID,NONE,ONEPLUS
REPLY,VPOLL,POLLMODE,NONE,ZERO
REPLY,VPOLL,POLLPROPERTIES,NONE,ZERO
REPLY,VPOLL,PRIORITY,NONE,ZEROORONE
REPLY,VPOLL,RELATEDTO,NONE,ZEROPLUS
REPLY,VPOLL,RESOURCES,NONE,ZEROPLUS
REPLY,VPOLL,REQUESTSTATUS,NONE,ZEROPLUS
REPLY,VPOLL,STATUS,NONE,ZEROORONE,may_be_tent_conf
REPLY,VPOLL,SUMMARY,NONE,ZEROORONE
REPLY,VPOLL,TRANSP,NONE,ZEROORONE
REPLY,VPOLL,URL,NONE,ZEROORONE
REPLY,VPOLL,X,NONE,ZEROPLUS
REPLY,VPOLL,NONE,VALARM,ZERO
REPLY,VPOLL,NONE,VTIMEZONE,ZEROORONE,must_if_tz_ref
REPLY,VPOLL,NONE,X,ZEROPLUS
REPLY,VPOLL,NONE,VEVENT,ZERO
REPLY,VPOLL,NONE,VFREEBUSY,ZERO
REPLY,VPOLL,NONE,VAVAILABILITY,ZERO
REPLY,VPOLL,NONE,VJOURNAL,ZERO
REPLY,VPOLL,NONE,VTODO,ZERO
CANCEL,VPOLL,NONE,NONE,ONEPLUS
CANCEL,VPOLL,VOTER,NONE,ZEROPLUS
CANCEL,VPOLL,UID,NONE,ONE
CANCEL,VPOLL,DTSTAMP,NONE,ONE
CANCEL,VPOLL,ORGANIZER,NONE,ONE
CANCEL,VPOLL,SEQUENCE,NONE,ONE
CANCEL,VPOLL,ATTACH,NONE,ZEROPLUS
CANCEL,VPOLL,ACCEPTRESPONSE,NONE,ZEROORONE
CANCEL,VPOLL,COMMENT,NONE,ZEROPLUS
CANCEL,VPOLL,COMPLETED,NONE,ZEROORONE
CANCEL,VPOLL,CATEGORIES,NONE,ZEROPLUS #Non-standard
CANCEL,VPOLL,CLASS,NONE,ZEROORONE
CANCEL,VPOLL,CONTACT,NONE,ZEROPLUS
CANCEL,VPOLL,CREATED,NONE,ZEROORONE
CANCEL,VPOLL,DESCRIPTION,NONE,ZEROORONE
CANCEL,VPOLL,DTEND,NONE,ONEEXCLUSIVE,no_duration
CANCEL,VPOLL,DTSTART,NONE,ZEROORONE
CANCEL,VPOLL,DURATION,NONE,ONEEXCLUSIVE,no_dtend
CANCEL,VPOLL,GEO,NONE,ZEROORONE
CANCEL,VPOLL,LASTMODIFIED,NONE,ZEROORONE
CANCEL,VPOLL,LOCATION,NONE,ZEROORONE
CANCEL,VPOLL,POLLITEMID,NONE,ZERO
CANCEL,VPOLL,POLLMODE,NONE,ZERO
CANCEL,VPOLL,POLLPROPERTIES,NONE,ZERO
CANCEL,VPOLL,PRIORITY,NONE,ZEROORONE
CANCEL,VPOLL,RELATEDTO,NONE,ZEROPLUS
CANCEL,VPOLL,RESOURCES,NONE,ZEROPLUS
CANCEL,VPOLL,STATUS,NONE,ZEROORONE,may_be_tent_conf
CANCEL,VPOLL,SUMMARY,NONE,ONE
CANCEL,VPOLL,TRANSP,NONE,ZEROORONE
CANCEL,VPOLL,URL,NONE,ZEROORONE
CANCEL,VPOLL,X,NONE,ZEROPLUS
CANCEL,VPOLL,REQUESTSTATUS,NONE,ZERO
CANCEL,VPOLL,NONE,VALARM,ZERO
CANCEL,VPOLL,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
CANCEL,VPOLL,NONE,X,ZEROPLUS
CANCEL,VPOLL,NONE,VEVENT,ZERO
CANCEL,VPOLL,NONE,VFREEBUSY,ZERO
CANCEL,VPOLL,NONE,VAVAILABILITY,ZERO
CANCEL,VPOLL,NONE,VJOURNAL,ZERO
CANCEL,VPOLL,NONE,VTODO,ZERO
REFRESH,VPOLL,NONE,NONE,ONE
REFRESH,VPOLL,VOTER,NONE,ONE
REFRESH,VPOLL,DTSTAMP,NONE,ONE
REFRESH,VPOLL,ORGANIZER,NONE,ONE
REFRESH,VPOLL,UID,NONE,ONE
REFRESH,VPOLL,COMMENT,NONE,ZEROPLUS
REFRESH,VPOLL,COMPLETED,NONE,ZERO
REFRESH,VPOLL,X,NONE,ZEROPLUS
REFRESH,VPOLL,ACCEPTRESPONSE,NONE,ZERO
REFRESH,VPOLL,ATTACH,NONE,ZERO
REFRESH,VPOLL,CATEGORIES,NONE,ZERO #Non-standard
REFRESH,VPOLL,CLASS,NONE,ZERO
REFRESH,VPOLL,CONTACT,NONE,ZERO
REFRESH,VPOLL,CREATED,NONE,ZERO
REFRESH,VPOLL,DESCRIPTION,NONE,ZERO
REFRESH,VPOLL,DTEND,NONE,ZERO
REFRESH,VPOLL,DTSTART,NONE,ZERO
REFRESH,VPOLL,DURATION,NONE,ZERO
REFRESH,VPOLL,GEO,NONE,ZERO
REFRESH,VPOLL,LASTMODIFIED,NONE,ZERO
REFRESH,VPOLL,LOCATION,NONE,ZERO
REFRESH,VPOLL,POLLITEMID,NONE,ZERO
REFRESH,VPOLL,POLLMODE,NONE,ZERO
REFRESH,VPOLL,POLLPROPERTIES,NONE,ZERO
REFRESH,VPOLL,PRIORITY,NONE,ZERO
REFRESH,VPOLL,RELATEDTO,NONE,ZERO
REFRESH,VPOLL,REQUESTSTATUS,NONE,ZERO
REFRESH,VPOLL,RESOURCES,NONE,ZERO
REFRESH,VPOLL,SEQUENCE,NONE,ZERO
REFRESH,VPOLL,STATUS,NONE,ZERO
REFRESH,VPOLL,SUMMARY,NONE,ZERO
REFRESH,VPOLL,URL,NONE,ZERO
REFRESH,VPOLL,NONE,VALARM,ZERO
REFRESH,VPOLL,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
REFRESH,VPOLL,NONE,X,ZEROPLUS
REFRESH,VPOLL,NONE,VTODO,ZERO
REFRESH,VPOLL,NONE,VJOURNAL,ZERO
REFRESH,VPOLL,NONE,VEVENT,ZERO
REFRESH,VPOLL,NONE,VFREEBUSY,ZERO
REFRESH,VPOLL,NONE,VAVAILABILITY,ZERO
POLLSTATUS,VPOLL,NONE,NONE,ONEPLUS
POLLSTATUS,VPOLL,COMPLETED,NONE,ZEROORONE
POLLSTATUS,VPOLL,DTSTAMP,NONE,ONE
POLLSTATUS,VPOLL,DTSTART,NONE,ZEROORONE
POLLSTATUS,VPOLL,ORGANIZER,NONE,ONE
POLLSTATUS,VPOLL,SUMMARY,NONE,ONE
POLLSTATUS,VPOLL,VOTER,NONE,ONEPLUS
POLLSTATUS,VPOLL,UID,NONE,ONE
POLLSTATUS,VPOLL,SEQUENCE,NONE,ZEROORONE
POLLSTATUS,VPOLL,ACCEPTRESPONSE,NONE,ZERO
POLLSTATUS,VPOLL,ATTACH,NONE,ZERO
POLLSTATUS,VPOLL,CATEGORIES,NONE,ZERO
POLLSTATUS,VPOLL,CLASS,NONE,ZERO
POLLSTATUS,VPOLL,COMMENT,NONE,ZEROPLUS
POLLSTATUS,VPOLL,CONTACT,NONE,ZERO
POLLSTATUS,VPOLL,CREATED,NONE,ZEROORONE
POLLSTATUS,VPOLL,DESCRIPTION,NONE,ZEROORONE
POLLSTATUS,VPOLL,DTEND,NONE,ONEEXCLUSIVE,no_duration
POLLSTATUS,VPOLL,DURATION,NONE,ONEEXCLUSIVE,no_dtend
POLLSTATUS,VPOLL,LASTMODIFIED,NONE,ZEROORONE
POLLSTATUS,VPOLL,POLLITEMID,NONE,ZERO
POLLSTATUS,VPOLL,POLLMODE,NONE,ZEROORONE
POLLSTATUS,VPOLL,POLLPROPERTIES,NONE,ZERO
POLLSTATUS,VPOLL,PRIORITY,NONE,ZEROORONE
POLLSTATUS,VPOLL,RELATEDTO,NONE,ZEROPLUS
POLLSTATUS,VPOLL,RESOURCES,NONE,ZEROPLUS
POLLSTATUS,VPOLL,STATUS,NONE,ZEROORONE,may_be_tent_conf
POLLSTATUS,VPOLL,URL,NONE,ZEROORONE
POLLSTATUS,VPOLL,X,NONE,ZEROPLUS
POLLSTATUS,VPOLL,REQUESTSTATUS,NONE,ZERO
POLLSTATUS,VPOLL,NONE,VALARM,ZEROPLUS
POLLSTATUS,VPOLL,NONE,VEVENT,ZEROPLUS
POLLSTATUS,VPOLL,NONE,VFREEBUSY,ZERO
POLLSTATUS,VPOLL,NONE,VAVAILABILITY,ZERO
POLLSTATUS,VPOLL,NONE,VJOURNAL,ZEROPLUS
POLLSTATUS,VPOLL,NONE,VTODO,ZEROPLUS
POLLSTATUS,VPOLL,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
POLLSTATUS,VPOLL,NONE,X,ZEROPLUS
NONE,VPOLL,DTSTAMP,NONE,ONE
NONE,VPOLL,UID,NONE,ONE
NONE,VPOLL,ORGANIZER,NONE,ONE
NONE,VPOLL,ACCEPTRESPONSE,NONE,ZEROORONE
NONE,VPOLL,CLASS,NONE,ZEROORONE
NONE,VPOLL,CREATED,NONE,ZEROORONE
NONE,VPOLL,COMPLETED,NONE,ZEROORONE
NONE,VPOLL,DESCRIPTION,NONE,ZEROORONE
NONE,VPOLL,DTSTART,NONE,ZEROORONE
NONE,VPOLL,LASTMODIFIED,NONE,ZEROORONE
NONE,VPOLL,POLLMODE,NONE,ZEROORONE
NONE,VPOLL,POLLPROPERTIES,NONE,ZEROORONE
NONE,VPOLL,PRIORITY,NONE,ZEROORONE
NONE,VPOLL,SEQUENCE,NONE,ZEROORONE
NONE,VPOLL,STATUS,NONE,ZEROORONE,may_be_tent_conf
NONE,VPOLL,SUMMARY,NONE,ZEROORONE
NONE,VPOLL,URL,NONE,ZEROORONE
NONE,VPOLL,DTEND,NONE,ONEEXCLUSIVE,no_duration
NONE,VPOLL,DURATION,NONE,ONEEXCLUSIVE,no_dtend
NONE,VPOLL,ATTACH,NONE,ZEROPLUS
NONE,VPOLL,CATEGORIES,NONE,ZEROPLUS #Non-standard
NONE,VPOLL,COMMENT,NONE,ZEROPLUS
NONE,VPOLL,CONTACT,NONE,ZEROPLUS
NONE,VPOLL,REQUESTSTATUS,NONE,ZEROPLUS
NONE,VPOLL,RELATEDTO,NONE,ZEROPLUS
NONE,VPOLL,RESOURCES,NONE,ZEROPLUS
NONE,VPOLL,VOTER,NONE,ZEROPLUS
NONE,VPOLL,X,NONE,ZEROPLUS
NONE,VPOLL,POLLWINNER,NONE,ZEROORONE
NONE,VPOLL,NONE,VALARM,ZEROPLUS
NONE,VPOLL,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref
NONE,VPOLL,NONE,X,ZEROPLUS
NONE,VPOLL,NONE,VEVENT,ZEROPLUS
NONE,VPOLL,NONE,VFREEBUSY,ZEROPLUS
NONE,VPOLL,NONE,VAVAILABILITY,ZEROPLUS
NONE,VPOLL,NONE,VJOURNAL,ZEROPLUS
NONE,VPOLL,NONE,VTODO,ZEROPLUS
libical-1.0.1/design-data/status.txt 0000664 0000000 0000000 00000007133 12415522231 0017355 0 ustar 00root root 0000000 0000000 2.0 STATOK Operation was successfully performed.
2.0.1 STARTSENDATA Start ICAL input; end with .
2.0.11 OKDATAFOLLOWS The request was processed successfully. Reply data follows on the next line and terminates with .
2.0.2 REPLYPENDING A timeout has occurred. The server is still working on the reply. Use CONTINUE to continue waiting for the reply or ABORT to terminate the command.
2.0.3 ABORTED The command currently underway was successsfully aborted.
2.0.4 WILLATTEMPT The specified Calendar is not here but an attempt will be made to deliver the request or reply to the Calendar anyway.
2.0.5 TRUSTEDWILLQUEUE The request or reply will be queued and delivered to the target calendar when its iRIP server contacts this server and issues the SWITCH command.
2.0.6 WILLATTEMPT The specified Calendar is not here but an attempt will be made to deliver the request or reply to the Calendar anyway.
2.0.7 QUEUED The message has been queued for delivery.
2.0.8 QUEUEEMPTY There are no more queued messages.
2.1 FALLBACK Success. Fallback taken on one or more property values.
2.2 NOCOMMANDINPROGRESS An ABORT or CONTINUE was received when no command was in progress
2.2 IGPROP Success. Invalid property ignored.
2.3 IGPARAM Success. invalid property parameter ignored.
2.4 IGXPROP Success. Unknown non-standard property ignored.
2.5 IGXPARAM Success. Unknown non standard property value ignored.
2.6 IGCOMP Success. Invalid calendar component ignored.
2.7 FORWARD Success. Request forwarded to Calendar User.
2.8 ONEEVENT Success. Repeating event ignored. Scheduled as a single component.
2.9 TRUNC Success. Truncated end date time to date boundary.
2.10 ONETODO Success. Repeating VTODO ignored. Scheduled as a single VTODO.
2.11 TRUNCRRULE Success. Unbounded RRULE clipped at some finite number of instances
3.0 INVPROPNAME Invalid property name.
3.1 INVPROPVAL Invalid property value.
3.2 INVPARAM Invalid property parameter.
3.3 INVPARAMVAL Invalid property parameter value.
3.4 INVCOMP Invalid calendar component sequence.
3.5 INVTIME Invalid date or time.
3.6 INVRULE Invalid rule.
3.7 INVCU Invalid Calendar User.
3.8 NOAUTH No authority.
3.9 BADVERSION Unsupported version.
3.10 TOOBIG Request entity too large.
3.11 MISSREQCOMP Required component or property missing.
3.12 UNKCOMP Unknown component or property found.
3.13 BADCOMP Unsupported component or property found
3.14 NOCAP Unsupported capability.
4.0 BUSY Event conflict. Date/time is busy.
5.0 MAYBE Request MAY supported.
5.1 UNAVAIL Service unavailable.
5.2 NOSERVICE Invalid calendar service.
5.3 NOSCHED No scheduling support for user.
6.1 AUTHENTICATEFAILURE Unsupported authentication mechanism, credentials rejected
6.2 AUTHENTICATIONABORTED Sender aborted authentication, authentication exchange cancelled
8.0 GENERALFAILURE A failure has occurred in the Receiver that prevents the operation from succeeding.
8.1 SERVERTOOBUSY The iRIP Receiver is too busy.
8.2 ICALOBJECTTOOBIG Object has exceeded the server's size limit.
8.3 DATETOOLARGE A DATETIME value was too far in the future to be represented on this Calendar.
8.4 DATETOOSMALL A DATETIME value was too far in the past to be represented on this Calendar.
9.0 INVALIDIRIPCOMMAND An unrecongnized command was received.
9.1 UNEXPECTEDCOMMAND The command is not allowed for the server's current state.
10.1 REFERRAL Accompanied by an alternate address.
10.2 SERVERSHUTDOWN The server is shutting down.
10.3 SERVERSTOPPING FLOOD 2
10.4 EXCEEDEDQUOTAS The operation would cause a resource to exceed the allocated quota
10.5 QUEUEDTOOLONG The ITIP message has been queued too long. Delivery has been aborted.
libical-1.0.1/design-data/value-types.csv 0000664 0000000 0000000 00000006757 12415522231 0020277 0 ustar 00root root 0000000 0000000 "#Name","C icalvalue_kind Enum","C type& gen flag","Python","Component Values","Enum Values"
"BINARY","5011","(a)const char*","file","unitary",
"BOOLEAN","5021","(a)int","integer","unitary",
"CAL-ADDRESS","5023","(a)const char*","string","unitary",
"DATE","5002","(a)struct icaltimetype","Time","unitary",
"DATE-TIME","5028","(m)struct icaltimetype","Time","unitary",
"DURATION","5020","(a)struct icaldurationtype","Duration","unitary",
"FLOAT","5013","(a)float","float","unitary",
"INTEGER","5017","(a)int","integer","unitary",
"PERIOD","5014","(a)struct icalperiodtype","Period","unitary",
"RECUR","5026","(m)struct icalrecurrencetype","RecurrenceSet","unitary",
"TEXT","5008","(a)const char*","string","unitary",
"URI","5018","(a)const char*","string","unitary",
"UTC-OFFSET","5029","(a)int","integer","unitary",
"QUERY","5001","(a)const char*","string","unitary",
"#Non-standard multi-valued types",,,,
"ATTACH","5003","(m)icalattach *","none","URI;BINARY",
"DATE-TIME-PERIOD","5015","(m)struct icaldatetimeperiodtype","none","DATE-TIME;PERIOD",
"TRIGGER","5024","(m)struct icaltriggertype","string","DURATION;DATE-TIME",
"#Non-standard property enumeration types",,,,
"#METHOD:POLLSTATUS from draft-york-vpoll",,,,
"METHOD","5030","(a)enum icalproperty_method","string","unitary","X=10030;PUBLISH;REQUEST;REPLY;ADD;CANCEL;REFRESH;COUNTER;DECLINECOUNTER;CREATE;READ;RESPONSE;MOVE;MODIFY;GENERATEUID;DELETE;NONE;POLLSTATUS=10101"
"X-LIC-CLASS","5025","(a)enum icalproperty_xlicclass","string","unitary","X=10067;PUBLISH-NEW;PUBLISH-UPDATE;PUBLISH-FREEBUSY;REQUEST-NEW;REQUEST-UPDATE;REQUEST-RESCHEDULE;REQUEST-DELEGATE;REQUEST-NEW-ORGANIZER;REQUEST-FORWARD;REQUEST-STATUS;REQUEST-FREEBUSY;REPLY-ACCEPT;REPLY-DECLINE;REPLY-DELEGATE;REPLY-CRASHER-ACCEPT;REPLY-CRASHER-DECLINE;ADD-INSTANCE;CANCEL-EVENT;CANCEL-INSTANCE;CANCEL-ALL;REFRESH;COUNTER;DECLINECOUNTER;MALFORMED;OBSOLETE;MISSEQUENCED;UNKNOWN;NONE"
"ACTION","5027","(a)enum icalproperty_action","string","unitary","X=10000;AUDIO;DISPLAY;EMAIL;PROCEDURE;NONE=10005"
"STATUS","5005","(a)enum icalproperty_status","string","unitary","X=10051;TENTATIVE;CONFIRMED;COMPLETED;NEEDS-ACTION;CANCELLED;IN-PROCESS;DRAFT;FINAL;NONE"
"TRANSP","5006","(a)enum icalproperty_transp","string","unitary","X=10061;OPAQUE;OPAQUE-NOCONFLICT;TRANSPARENT;TRANSPARENT-NOCONFLICT;NONE"
"CLASS","5019","(m)enum icalproperty_class","string","unitary","X=10011;PUBLIC;PRIVATE;CONFIDENTIAL;NONE"
"#Other non-standard",,,,
"REQUEST-STATUS","5009","(a)struct icalreqstattype","string","unitary"
"GEO","5004","(m)struct icalgeotype","tuple","unitary",
"STRING",""5007",(a)const char*","string","unitary",
"X","5022","(m)const char*","string","unitary",
"#CAP enumeration types",,,,
"CMD","5010","(a)enum icalproperty_cmd","string","unitary","X=10016;ABORT;CONTINUE;CREATE;DELETE;GENERATE-UID;GET-CAPABILITY;IDENTIFY;MODIFY;MOVE;REPLY;SEARCH;SET-LOCALE;NONE"
"QUERY-LEVEL","5012","(a)enum icalproperty_querylevel","string","unitary","X=10047;CAL-QL-1;CAL-QL-NONE;NONE"
"CAR-LEVEL","5016","(a)enum icalproperty_carlevel","string","unitary","X=10006;CAR-NONE;CAR-MIN;CAR-FULL-1;NONE"
"ANY","5000",,,,
"NO","5031",,,,
"#VAVAILABILITY types","draft-daboo-calendar-availability",,,
"BUSYTYPE","5032","(a)enum icalproperty_busytype","string","unitary","X=10096;BUSY;BUSY-UNAVAILABLE;BUSY-TENTATIVE;NONE"
"#VPOLL types","draft-york-vpoll",,,
"POLLMODE","5033","(a)enum icalproperty_pollmode","string","unitary","X=10102;BASIC;NONE"
"#NOTE for updaters. Preserve the icalvalue_kind Enum values and property Enum values to aid forward compatibility"
libical-1.0.1/doc/ 0000775 0000000 0000000 00000000000 12415522231 0013652 5 ustar 00root root 0000000 0000000 libical-1.0.1/doc/.svnignore 0000664 0000000 0000000 00000000053 12415522231 0015663 0 ustar 00root root 0000000 0000000 Makefile.in
Makefile
.deps
.libs
*.lo
*.la
libical-1.0.1/doc/AddingOrModifyingComponents.txt 0000664 0000000 0000000 00000001273 12415522231 0022021 0 ustar 00root root 0000000 0000000
How to add or change Components, Properties, Values or Parameters
Adding or modifying values
---------------------------
You may have to modify these files or data structures
file design-data/value-c-types.txt
file design-data/prop-to-val.txt
table parameter_map[] in icalenums.c
enum icalvalue_kind in icalenum.h
table value_map[] in icalenums.c
enum icalparameter_value in icalenum.h
table propval_map[] in icalenums.c
function icalvalue_as_ical_string() in icalvalue.c
function icalvalue_new_from_string_with_error() in icalvalue.c
When you are done, if you changed any files in the design-data
directory, regnerate derived datatypes in src/libical with "make
derived" or "make icalvalue"
libical-1.0.1/doc/CMakeLists.txt 0000664 0000000 0000000 00000002334 12415522231 0016414 0 ustar 00root root 0000000 0000000 #
# API docs
#
macro(_join_list _var _sep)
set(${_var} "")
foreach(_element ${ARGN})
set(${_var} "${${_var}}${_sep}${_element}")
endforeach()
endmacro()
find_package(Doxygen)
if(DOXYGEN_FOUND)
file(GLOB _dox_deps *.dox *.html)
file(GLOB _all_hdrs
${CMAKE_SOURCE_DIR}/src/libical/*.h
${CMAKE_SOURCE_DIR}/src/libical/*.c
${CMAKE_BINARY_DIR}/src/libical/*.h
${CMAKE_SOURCE_DIR}/src/libicalss/*.h
${CMAKE_SOURCE_DIR}/src/libicalss/*.c
${CMAKE_BINARY_DIR}/src/libicalss/*.h
${CMAKE_SOURCE_DIR}/src/libicalvcal/*.h
${CMAKE_SOURCE_DIR}/src/libicalvcal/*.c
${CMAKE_BINARY_DIR}/src/libicalvcal/*.h
)
list(APPEND _all_hdrs ${_dox_deps})
_join_list(DOXYGEN_INPUT " " ${_all_hdrs})
#apidox generation using doxygen
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/apidocs/html/index.html
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
DEPENDS ${_all_hdrs} ${_dox_deps} ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
add_custom_target(docs
DEPENDS ${CMAKE_BINARY_DIR}/apidocs/html/index.html
)
endif()
libical-1.0.1/doc/Doxyfile.cmake 0000664 0000000 0000000 00000016157 12415522231 0016451 0 ustar 00root root 0000000 0000000 #---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = Libical
PROJECT_NUMBER = @PROJECT_VERSION@
OUTPUT_DIRECTORY = apidocs
#CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The \$name class" \
"The \$name widget" \
"The \$name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
BUILTIN_STL_SUPPORT = NO
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = YES
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = YES
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_MEMBERS_CTORS_1ST = YES
SORT_BRIEF_DOCS = YES
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = NO
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST = YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES
WARN_FORMAT = "\$file:\$line: \$text"
WARN_LOGFILE = doxygen.log
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = @DOXYGEN_INPUT@
FILE_PATTERNS = *.cpp \
*.c \
*.cc \
*.cxx \
*.h \
*.hh \
*.hxx \
*.hpp \
*.dox
RECURSIVE = YES
EXCLUDE = @CMAKE_SOURCE_DIR@/src/java \
@CMAKE_SOURCE_DIR@/src/libicalcap \
@CMAKE_SOURCE_DIR@/src/php \
@CMAKE_SOURCE_DIR@/src/python
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */.svn/* \
*/.git/* \
*/cmake/* \
*.moc.* \
moc* \
*.all_cpp.* \
*unload.* \
*/test/* \
*/tests/* \
*_p.cpp \
*_export.h
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH = @CMAKE_SOURCE_DIR@/docs
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# do NOT generate any formats other than html
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
GENERATE_HTML = YES
GENERATE_LATEX = NO
GENERATE_RTF = NO
GENERATE_XML = NO
GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
DISABLE_INDEX = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED = Q_DECL_IMPORT=""
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO
GROUP_GRAPHS = NO
UML_LOOK = NO
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
libical-1.0.1/doc/Mainpage.dox 0000664 0000000 0000000 00000002714 12415522231 0016113 0 ustar 00root root 0000000 0000000 /*!
@mainpage Libical - an implementation of iCalendar protocols and data formats
@section about About
Libical is an Open Source implementation of the iCalendar protocols
and protocol data units. The iCalendar specification describes how
calendar clients can communicate with calendar servers so users can
store their calendar data and arrange meetings with other users.
Libical implements RFC2445, RFC2446 and some of RFC2447.
@section license License
The code and datafiles in this distribution are licensed under the
Mozilla Public License (MPL) v1.0. See http://www.mozilla.org/MPL/1.0
for a copy of the license.
Alternately, you may use libical under the terms of the GNU Library
General Public License (LGPL) v2.1. See http://www.gnu.org/licenses/lgpl-2.1.txt
for a copy of the license.
This dual license ensures that the library can be incorporated into
both proprietary code and GPL'd programs, and will benefit from improvements
made by programmers in both realms. I will only accept changes into
my version of the library if they are similarly dual-licensed.
@section acknowledgements Acknowledgments
Portions of this distribution are (C) Copyright 1996 Apple Computer,
Inc., AT&T Corp., International Business Machines Corporation and
Siemens Rolm Communications Inc. See src/libicalvcal/README.TXT for details.
Portions of this distribution are Copyright (c) 1997 Theo de Raadt.
See the header for src/libical/vsnprintf.c for the full copyright statement.
*/
libical-1.0.1/doc/UsingLibical.txt 0000664 0000000 0000000 00000127556 12415522231 0017000 0 ustar 00root root 0000000 0000000
Using Libical
Eric Busboom (eric@softwarestudio.org)
January 2001
1 Introduction
Libical is an Open Source implementation of the iCalendar protocols
and protocol data units. The iCalendar specification describes how
calendar clients can communicate with calendar servers so users can
store their calendar data and arrange meetings with other users.
Libical implements RFC2445, RFC2446 and some of RFC2447.
This documentation assumes that you are familiar with the iCalendar
standards RFC2445 and RFC2446. these specifications are online on
the CALSCH webpage at:
http://www.imc.org/ietf-calendar/
1.1 The libical project
This code is under active development. If you would like to contribute
to the project, visit http://libical.github.io/libical/
1.2 License
The code and datafiles in this distribution are licensed under the
Mozilla Public License. See http://www.mozilla.org/NPL/MPL-1.0.html
for a copy of the license. Alternately, you may use libical under
the terms of the GNU Library General Public License. See
http://www.fsf.org/copyleft/lesser.html for a copy of the LGPL.
This dual license ensures that the library can be incorporated into
both proprietary code and GPL'd programs, and will benefit from improvements
made by programmers in both realms. I will only accept changes into
my version of the library if they are similarly dual-licensed.
1.3 Example Code
A lot of the documentation for this library is in the form of example
code. These examples are in the "examples" directory of the distribution.
Also look in "src/test" for additional annotated examples.
2 Building the Library
Libical uses autoconf to generate makefiles. It should built with no
adjustments on Linux, FreeBSD and Solaris under gcc. Some version
have been successfully been build on MacOS, Solaris, UnixWare, And
Tru64 UNIX without gcc, but you may run into problems with a particular
later version.
For a more complete guide to building the library, see the README file
in the distribution.
3 Structure
The iCalendar data model is based on four types of objects: components,
properties, values and parameters.
Properties are the fundamental unit of information in iCalendar, and they
work a bit like a hash entry, with a constant key and a variable value.
Properties may also have modifiers, called parameters. In the iCal
content line
ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com
The property name is "ORGANIZER," the value of the property is "mrbig@host.com"
and the "ROLE" parameter specifies that Mr Big is the chair of the
meetings associated with this property.
Components are groups of properties that represent the core objects
of a calendar system, such as events or timezones. Components are
delimited by "BEGIN" and "END" tags.
When a component is sent across a network, if it is un-encrypted, it
will look something like:
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID: -//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTAMP:19980309T231000Z
UID:guid-1.host1.com
ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com
ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:
MAILTO:employee-A@host.com
DESCRIPTION:Project XYZ Review Meeting
CATEGORIES:MEETING
CLASS:PUBLIC
CREATED:19980309T130000Z
SUMMARY:XYZ Project Review
DTSTART;TZID=US-Eastern:19980312T083000
DTEND;TZID=US-Eastern:19980312T093000
LOCATION:1CP Conference Room 4350
END:VEVENT
END:VCALENDAR
Note that components can be nested; this example has both a VCALENDAR
and a VEVENT component, one nested inside the other.
3.1 Core iCal classes
Libical is an object-based, data-oriented library. Nearly all of the
routines in the library are associated with an opaque data types and
perform some operation on that data type. Although the library does
not actually have classes, we will use those terms since the behavior
of these associations of data and routines is very similar to a class.
3.1.1 Properties
Properties are represented with the icalproperty class and its many
"derived" classes with on "derived" class per property type in RFC2445.
Again, there is no actual inheritance relations, but there are clusters
of routines that make this term useful. A property is a container
for a single value and a set of parameters.
3.1.2 Components
In libical, components are represented with the icalcomponent class.
Icalcomponent is a container for a set of other components and properties.
3.1.3 Values
Values are represented in a similar way to properties; a base class
and many "derived " classes. A value is essentially a abstract handle
on a single fundamental type, a structure or a union.
3.1.4 Parameters
Parameters are represented in a similar way to properties, except that
they contain only one value
3.2 Other elements of libical
In addition to the core iCal classes, libical has many other types,
structures, classes that aid in creating and using iCal components.
3.2.1 Enumerations and types
Libical is strongly typed, so every component, property, parameter,
and value type has an enumeration, and some have an associated structure
or union.
3.2.2 The parser
The libical parser offers a variety of ways to convert RFC2445 text
into a libical internal component structure. the parser can parse
blocks of text as a string, or it can parse line-by-line.
3.2.3 Error objects
Libical has a substantial error reporting system for both programming
errors and component usage errors.
3.2.4 Memory Management
Since many of libicals interfaces return strings, the library has its
own memory management system to elimiate the need to free every string
returned from the library.
3.2.5 Storage classes
The library also offers several classes to store components to flies,
memory or databases.
4 Differences From RFCs
Libical has been designed to follow the standards as closely as possible,
so that the key objects in the standards are also key objects in the
library. However, there are a few areas where the specifications are
(arguably) irregular, and following them exactly would result in an
unfriendly interface. These deviations make libical easier to use
by maintaining a self-similar interface.
4.1 Pseudo Components
Libical defines components for groups of properties that look and act
like components, but are not defined as components in the specification.
XDAYLIGHT and XSTANDARD are notable examples. These pseudo components
group properties within the VTIMEZONE components. For instanace, the
timezone properties associated with daylight savings time starts with
"BEGIN:DAYLIGHT" and ends with "END:DAYLIGHT, just like other components,
but is not defined as a component in RFC2445 (see RFC2445, page
61). In Libical,this grouping is represented by the XDAYLIGHT component.
Standard iCAL components all start with the letter "V," while pseudo
components start with"X."
There are also pseudo components that are conceptually derived classes
of VALARM. RFC2446 defines what properties may be included in each
component, and for VALARM, the set of properties it may have depends
on the value of the ACTION property.
For instance, if a VALARM component has an ACTION property with the
value of "AUDIO," the component must also have an "ATTACH" property.
However, if the ACTION value is "DISPLAY," the component must have
a DESCRIPTION property.
To handle these various, complex restrictions, libical has pseudo components
for each type of alarm: XAUDIOALARM, XDISPLAYALARM, XEMAILALARM and
XPROCEDUREALARM.
4.2 Combined Values
Many values can take more than one type. TRIGGER, for instance, can
have a value type of with DURATION or of DATE-TIME. These multiple
types make it difficult to create routines to return the value associated
with a property.
It is natural to have interfaces that would return the value of a property,
but it is cumbersome for a single routine to return multiple types.
So, in libical, properties that can have multiple types are given
a single type that is the union of their RFC2445 types. For instance,
in libical, the value of the TRIGGER property resolves to struct icaltriggertype.
This type is a union of a DURATION and a DATE-TIME.
4.3 Multi-Valued Properties
Some properties, such as CATEGORIES have only one value type, but each
CATEGORIES property can have multiple value instances. This also results
in a cumbersome interface -- CATEGORIES accessors would have to return
a list while all other accessors returned a single value. In libical,
all properties have a single value, and multi-valued properties are
broken down into multiple single valued properties during parsing.
That is, an input line like,
CATEGORIES: work, home
becomes in libical's internal representation
CATEGORIES: work
CATEGORIES: home
Oddly, RFC2445 allows some multi-valued properties (like FREEBUSY)
to exist as both a multi-values property and as multiple single
value properties, while others (like CATEGORIES) can only exist
as single multi-valued properties. This makes the internal representation
for CATEGORIES illegal. However when you convert a component to a
string, the library will collect all of the CATEGORIES properties
into one.
5 Using libical
5.1 Creating Components
There are three ways to create components in Libical: creating individual
objects and assembling them, building entire objects in massive vaargs
calls, and parsing a text file containing iCalendar data.
5.1.1 Constructor Interfaces
Using constructor interfaces, you create each of the objects separately
and then assemble them in to components:
icalcomponent *event;
icalproperty *prop;
icalparameter *param;
struct icaltimetype atime;
event = icalcomponent_new(ICAL_VEVENT_COMPONENT);
prop = icalproperty_new_dtstamp(atime) ;
icalcomponent_add_property(event, prop);
prop = icalproperty_new_uid(''guid-1.host1.com'');
icalcomponent_add_property(event,prop);
prop=icalproperty_new_organizer(''mrbig@host.com'');
param = icalparameter_new_role(ICAL_ROLE_CHAIR)
icalproperty_add_parameter(prop, param);
icalcomponent_add_property(event,prop);
Notice that libical uses a semi-object-oriented style of interface.
Most things you work with are objects, that are instantiated with
a constructor that has "new" in the name. Also note that, other than
the object reference, most structure data is passed in to libical
routines by value. Libical has some complex but very regular memory
handling rules. These are detailed in section [sec:memory].
If any of the constructors fail, they will return 0. If you try to
insert 0 into a property or component, or use a zero-valued object
reference, libical will either silently ignore the error or will abort
with an error message. This behavior is controlled by a compile time
flag (ICAL_ERRORS_ARE_FATAL), and will abort by default.
5.1.2 vaargs Constructors
There is another way to create complex components, which is arguably
more elegant, if you are not horrified by varargs. The varargs constructor
interface allows you to create intricate components in a single block
of code. Here is the previous examples in the vaargs style.
calendar =
icalcomponent_vanew(
ICAL_VCALENDAR_COMPONENT,
icalproperty_new_version(''2.0''),
icalproperty_new_prodid(
''-//RDU Software//NONSGML HandCal//EN''),
icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
icalproperty_new_dtstamp(atime),
icalproperty_new_uid(''guid-1.host1.com''),
icalproperty_vanew_organizer(
''mrbig@host.com''),
icalparameter_new_role(ICAL_ROLE_CHAIR),
0
),
icalproperty_vanew_attendee(
''employee-A@host.com'',
icalparameter_new_role(
ICAL_ROLE_REQPARTICIPANT),
icalparameter_new_rsvp(1),
icalparameter_new_cutype(ICAL_CUTYPE_GROUP),
0
),
icalproperty_new_location(
"1CP Conference Room 4350"),
0
),
0
);
This form is similar to the constructor form , except that the constructors
have "vanew" instead of "new" in the name. The arguments are similar
too, except that the component constructor can have a list of properties,
and the property constructor can have a list of parameters. Be sure
to terminate every list with a '0', or your code will crash, if you
are lucky.
5.1.3 Parsing Text Files
The final way to create components will probably be the most common;
you can create components from RFC2445 compliant text. If you have
the string in memory, use
icalcomponent* icalparser_parse_string(char* str);
If the string contains only one component, the parser will return the
component in libical form. If the string contains multiple components,
the multiple components will be returned as the children of an ICAL_XROOT_COMPONENT
component.
Parsing a whole string may seem wasteful if you want to pull a large
component off of the network or from a file; you may prefer to parse
the component line by line. This is possible too by using:
icalparser* icalparser_new();
void icalparser_free(icalparser* parser);
icalparser_get_line(parser,read_stream);
icalparser_add_line(parser,line);
icalparser_set_gen_data(parser,stream)
These routines will construct a parser object to which you can add
lines of input and retrieve any components that the parser creates
from the input. These routines work by specifing an adaptor routine
to get string data from a source. For an example:
char* read_stream(char *s, size_t size, void *d)
{
char *c = fgets(s,size, (FILE*)d);
return c;
}
main() {
char* line;
icalcomponent *c;
icalparser *parser = icalparser_new();
FILE* stream = fopen(argv[1],"r");
icalparser_set_gen_data(parser,stream);
do{
line = icalparser_get_line(parser,read_stream);
c = icalparser_add_line(parser,line);
if (c != 0){
printf("%s",icalcomponent_as_ical_string(c));
icalparser_claim(parser);
printf("\n---------------\n");
icalcomponent_free(c);
}
} while ( line != 0);
}
The parser object parameterizes the routine used to get input lines
with icalparser_set_gen_data() and icalparser_get_line(). In this
example, the routine read_stream() will fetch the next line from a
stream, with the stream passed in as the void* parameter d. The parser
calls read_stream() from icalparser_get_line(), but it also needs
to know what stream to use. This is set by the call to icalparser_set_gen_data().
By using a different routine for read_stream or passing in different
data with icalparser_set_gen_data, you can connect to any data source.
Using the same mechanism, other implementations could read from memory
buffers, sockets or other interfaces.
Since the example code is a very common way to use the parser, there
is a convenience routine;
icalcomponent* icalparser_parse(icalparser *parser,
char* (*line_gen_func)(char *s, size_t size, void*
d))
To use this routine, you still must construct the parser object and
pass in a reference to a line reading routine. If the parser can create
a single component from the input, it will return a pointer to the
newly constructed component. If the parser can construct multiple
components from the input, it will return a reference to an XROOT
component ( of type ICAL_XROOT_COMPONENT.) This XROOT component will
hold all of the components constructed from the input as children.
5.2 Accessing Components
Given a reference to a component, you probably will want to access
the properties, parameters and values inside. Libical interfaces let
you find sub-component, add and remove sub-components, and do the
same three operations on properties.
5.2.1 Finding Components
To find a sub-component of a component, use:
icalcomponent* icalcomponent_get_first_component(
icalcomponent* component,
icalcomponent_kind kind);
This routine will return a reference to the first component of the
type 'kind.' The key kind values, listed in icalenums.h are:
ICAL_ANY_COMPONENT
ICAL_VEVENT_COMPONENT
ICAL_VTODO_COMPONENT
ICAL_VJOURNAL_COMPONENT
ICAL_VCALENDAR_COMPONENT
ICAL_VFREEBUSY_COMPONENT
ICAL_VALARM_COMPONENT
These are only the most common components; there are many more listed
in icalenums.h.
As you might guess, if there is more than one subcomponent of the type
you have chosen, this routine will return only the first. to get at
the others, you need to iterate through the component.
5.2.2 Iterating Through Components
Iteration requires a second routine to get the next subcomponent after
the first:
icalcomponent* icalcomponent_get_next_component(
icalcomponent* component,
icalcomponent_kind kind);
With the 'first' and 'next' routines, you can create a for loop to
iterate through all of a components subcomponents
for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT);
c != 0;
c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT))
{
do_something(c);
}
This code bit wil iterate through all of the subcomponents in 'comp'
but you can select a specific type of component by changing ICAL_ANY_COMPONENT
to another component type.
5.2.3 Using Component Iterators
The iteration model in the previous section requires the component
to keep the state of the iteration. So, you could not use this model
to perform a sorting operations, since you'd need two iterators and
there is only space for one. If you ever call icalcomponent_get_first_component()
when an iteration is in progress, the pointer will be reset to the
beginning.
To solve this problem, there are also external iterators for components.
The routines associated with these external iterators are:
icalcompiter icalcomponent_begin_component(icalcomponent* component,
icalcomponent_kind kind);
icalcompiter icalcomponent_end_component(icalcomponent* component,
icalcomponent_kind kind);
icalcomponent* icalcompiter_next(icalcompiter* i);
icalcomponent* icalcompiter_prior(icalcompiter* i);
icalcomponent* icalcompiter_deref(icalcompiter* i);
The _begin_() and _end_() routines return a new iterator that points
to the beginning and ending of the list of subcomponent for the given
component, and the kind argument works like the kind argument for
internal iterators.
After creating an iterators, use _next_() and _prior_() to step forward
and backward through the list and get the component that the iterator
points to, and use _deref() to return the component that the iterator
points to without moving the iterator. All routines will return 0
when they move to point off the end of the list.
Here is an example of a loop using these routines:
for(
i = icalcomponent_begin_component(impl->cluster,ICAL_ANY_COMPONENT);
icalcompiter_deref(&i)!= 0;
icalcompiter_next(&i)
) {
icalcomponent *this = icalcompiter_deref(&i);
}
5.2.4 Removing Components
Removing an element from a list while iterating through the list with
the internal iterators can cause problems, since you will probably
be removing the element that the internal iterator points to. The
_remove() routine will keep the iterator valid by moving it to the
next component, but in a normal loop, this will result in two advances
per iteration, and you will remove only every other component. To
avoid the problem, you will need to step the iterator ahead of the
element you are going to remove, like this:
for(c = icalcomponent_get_first_component(parent_comp,ICAL_ANY_COMPONENT);
c != 0;
c = next
{
next = icalcomponent_get_next_component(parent_comp,ICAL_ANY_COMPONENT);
icalcomponent_remove_component(parent_comp,c);
}
Another way to remove components is to rely on the side effect of icalcomponent_remove_component:
if component iterator in the parent component is pointing to the child
that will be removed, it will move the iterator to the component after
the child. The following code will exploit this behavior:
icalcomponent_get_first_component(parent_comp,ICAL_VEVENT_COMPONENT);
while((c=icalcomponent_get_current_component(c)) != 0 ){
if(icalcomponent_isa(c) == ICAL_VEVENT_COMPONENT){
icalcomponent_remove_component(parent_comp,inner);
} else {
icalcomponent_get_next_component(parent_comp,ICAL_VEVENT_COMPONENT);
}
}
5.2.5 Working with properties and parameters
Finding, iterating and removing properties works the same as it does
for components, using the property-specific or parameter-specific
interfaces:
icalproperty* icalcomponent_get_first_property(
icalcomponent* component,
icalproperty_kind kind);
icalproperty* icalcomponent_get_next_property(
icalcomponent* component,
icalproperty_kind kind);
void icalcomponent_add_property(
icalcomponent* component,
icalproperty* property);
void icalcomponent_remove_property(
icalcomponent* component,
icalproperty* property);
For parameters:
icalparameter* icalproperty_get_first_parameter(
icalproperty* prop,
icalparameter_kind kind);
icalparameter* icalproperty_get_next_parameter(
icalproperty* prop,
icalparameter_kind kind);
void icalproperty_add_parameter(
icalproperty* prop,
icalparameter* parameter);
void icalproperty_remove_parameter(
icalproperty* prop,
icalparameter_kind kind);
Note that since there should be only one parameter of each type in
a property, you will rarely need to use icalparameter_get_nect_paameter.
5.2.6 Working with values
Values are typically part of a property, although they can exist on
their own. You can manipulate them either as part of the property
or independently.
The most common way to work with values to is to manipulate them from
they properties that contain them. This involves fewer routine calls
and intermediate variables than working with them independently, and
it is type-safe.
For each property, there are a _get_ and a _set_ routine that access
the internal value. For instanace, for the UID property, the routines
are:
void icalproperty_set_uid(icalproperty* prop, const char* v)
const char* icalproperty_get_uid(icalproperty* prop)
For multi-valued properties, like ATTACH, the value type is usually
a struct or union that holds both possible types.
If you want to work with the underlying value object, you can get and
set it with:
icalvalue* icalproperty_get_value (icalproperty* prop)
void icalproperty_set_value(icalproperty* prop, icalvalue* value);
Icalproperty_get_value() will return a reference that you can manipulate
with other icalvalue routines. Most of the time, you will have to
know what the type of the value is. For instance, if you know that
the value is a DATETIME type, you can manipulate it with:
struct icaltimetype icalvalue_get_datetime(icalvalue* value);
void icalvalue_set_datetime(icalvalue* value, struct icaltimetype v);
When working with an extension property or value (and X-PROPERTY or
a property that has the parameter VALUE=x-name ) the value type is
always a string. To get and set the value, use:
void icalproperty_set_x(icalproperty* prop, char* v);
char* icalproperty_get_x(icalproperty* prop);
All X properties have the type of ICAL_X_PROPERTY, so you will need
these routines to get and set the name of the property:
char* icalproperty_get_x_name(icalproperty* prop)
void icalproperty_set_x_name(icalproperty* prop, char* name);
5.2.7 Checking Component Validity
RFC 2446 defines rules for what properties must exist in a component
to be used for transferring scheduling data. Most of these rules relate
to the existence of properties relative to the METHOD property, which
declares what operation a remote receiver should use to process a
component. For instance, if the METHOD is REQUEST and the component
is a VEVENT, the sender is probably asking the receiver to join in
a meeting. In this case, RFC2446 says that the component must specify
a start time (DTSTART) and list the receiver as an attendee (ATTENDEE).
Libical can check these restrictions with the routine:
int icalrestriction_check(icalcomponent* comp);
This routine returns 0 if the component does not pass RFC2446 restrictions,
or if the component is malformed. The component you pass in must be
a VCALENDAR, with one or more children, like the examples in RFC2446.
When this routine runs, it will insert new properties into the component
to indicate any errors it finds. See section 6.5.3, X-LIC-ERROR for
more information about these error properties.
5.2.8 Converting Components to Text
To create an RFC2445 compliant text representation of an object, use
one of the *_as_ical_string() routines:
char* icalcomponent_as_ical_string (icalcomponent* component)
char* icalproperty_as_ical_string (icalproperty* property)
char* icalparameter_as_ical_string (icalparameter* parameter)
char* icalvalue_as_ical_string (icalvalue* value)
In most cases, you will only use icalcomponent_as_ical_string (), since
it will cascade and convert all of the parameters, properties and
values that are attached to the root component.
Icalproperty_as_ical_string() will terminate each line with the RFC2445
specified line terminator "\\n" However, if you compile with the symbol
ICAL_UNIX_NEWLINE undefined, ( it is defined by default) it will terminate
lines with "\\n\\r"
Remember that the string returned by these routines is owned by the
library, and will eventually be re-written. You should copy it if
you want to preserve it.
5.3 Time
5.3.1 Time structure
LIbical defines it's own time structure for storing all dates and times.
It would have been nice to re-use the C library's struct tm, but that
structure does not differentiate between dates and times, and between
local time and UTC. The libical structure is:
struct icaltimetype {
int year;
int month;
int day;
int hour;
int minute;
int second;
int is_utc; /* 1-> time is in UTC timezone */
int is_date; /* 1 -> interpret this as date. */ };
The year, month, day, hour, minute and second fields hold the broken-out
time values. The is_utc field distinguishes between times in UTC and
a local time zone. The is_date field indicates if the time should
be interpreted only as a date. If it is a date, the hour, minute and
second fields are assumed to be zero, regardless of their actual vaules.
5.3.2 Creating time structures
There are several ways to create a new icaltimetype structure:
struct icaltimetype icaltime_from_string(const char* str);
struct icaltimetype icaltime_from_timet(time_t v, int is_date);
struct icaltimetype icaltime_from_int(int v, int is_date, int is_utc);
Icaltime_from_string takes any RFC2445 compliant time string:
struct icaltimetype tt = icaltime_from_string("19970101T103000");
Icaltime_from_timet takes a timet value, representing seconds past
the POSIX epoch, and a flag to indicate if the time is a date. Dates
have an identical structure to a time, but the time portion ( hours,
minuts and seconds ) is always 00:00:00. Dates act differently in
sorting an comparision, and they have a different string representation
in RFC2445.
The icaltime_from_int is like icaltime_from_timet, but with an arbitrary
epoch. This routine was a mistake and is deprecated.
5.3.3 Time manipulating routines
The null time value is used to indicate that the data in the structure
is not a valid time.
struct icaltimetype icaltime_null_time(void);
int icaltime_is_null_time(struct icaltimetype t);
It is sensible for the broken-out time fields to contain values that
are not permitted in an ISO compliant time string. For instance, the
seconds field can hold values greater than 59, and the hours field
can hold values larger than 24. The excessive values will be rolled
over into the next larger field when the structure is normalized.
struct icaltimetype icaltime_normalize(struct icaltimetype t);
Normalizing allows you to do arithmetic operations on time values.
struct icaltimetype tt = icaltime_from_string("19970101T103000");
tt.days +=3
tt.second += 70;
tt = icaltime_normalize(tt);
There are several routines to get the day of the week or month, etc,
from a time structure.
short icaltime_day_of_year(struct icaltimetype t);
struct icaltimetype icaltime_from_day_of_year(short doy, short year);
short icaltime_day_of_week(struct icaltimetype t);
short icaltime_start_doy_of_week(struct icaltimetype t);
short icaltime_week_number(short day_of_month, short month, short year);
struct icaltimetype icaltime_from_week_number(short week_number, short
year);
short icaltime_days_in_month(short month,short year);
Two routines convert time structures to and from the number of seconds
since the POSIX epoch. The is_date field indicates whether or not
the hour, minute and second fields should be used in the conversion.
struct icaltimetype icaltime_from_timet(time_t v, int is_date);
time_t icaltime_as_timet(struct icaltimetype);
The compare routine works exactly like strcmp, but on time structures.
int icaltime_compare(struct icaltimetype a,struct icaltimetype b);
The following routines convert between UTC and a named timezone. The
tzid field must be a timezone name from the Olsen database, such as
"America/Los_Angeles."
The utc_offset routine returns the offset of the named time zone from
UTC, in seconds.
The tt parameter in the following routines indicates the date on which
the conversion should be made. The tt parameter is necessary because
timezones have many different rules for when daylight savings time
is used, and these rules can change over time. So, for a single timezone
one year may have daylight savings time on March 15, but for other
years March 15 may be standard time, and some years may have standard
time all year.
int icaltime_utc_offset(struct icaltimetype tt, char* tzid);
int icaltime_local_utc_offset();
struct icaltimetype icaltime_as_utc(struct icaltimetype tt,char* tzid);
struct icaltimetype icaltime_as_zone(struct icaltimetype tt,char* tzid);
struct icaltimetype icaltime_as_local(struct icaltimetype tt);
5.4 Storing Objects
The libical distribution includes a separate library, libicalss, that
allows you to store iCal component data to disk in a variety of ways.
The file storage routines are organized in an inheritance heirarchy
that is rooted in icalset, with the derived class icalfileset and
icaldirset. Icalfileset stores components to a file, while icaldirset
stores components to multiple files, one per month based on DTSTAMP.
Other storages classess, for storage to a heap or a mysql database
for example, could be added in the future.
All of the icalset derived classes have the same interface:
icaldirset* icaldirset_new(const char* path);
void icaldirset_free(icaldirset* store);
const char* icaldirset_path(icaldirset* store);
void icaldirset_mark(icaldirset* store);
icalerrorenum icaldirset_commit(icaldirset* store);
icalerrorenum icaldirset_add_component(icaldirset* store, icalcomponent*
comp);
icalerrorenum icaldirset_remove_component(icaldirset* store, icalcomponent*
comp);
int icaldirset_count_components(icaldirset* store, icalcomponent_kind
kind);
icalerrorenum icaldirset_select(icaldirset* store, icalcomponent* gauge);
void icaldirset_clear(icaldirset* store);
icalcomponent* icaldirset_fetch(icaldirset* store, const char* uid);
int icaldirset_has_uid(icaldirset* store, const char* uid);
icalcomponent* icaldirset_fetch_match(icaldirset* set, icalcomponent
*c);
icalerrorenum icaldirset_modify(icaldirset* store, icalcomponent *oldc,
icalcomponent *newc);
icalcomponent* icaldirset_get_current_component(icaldirset* store);
icalcomponent* icaldirset_get_first_component(icaldirset* store);
icalcomponent* icaldirset_get_next_component(icaldirset* store);
5.4.1 Creating a new set
You can create a new set from either the base class or the direved
class. From the base class use one of:
icalset* icalset_new_file(const char* path);
icalset* icalset_new_dir(const char* path);
icalset* icalset_new_heap(void);
icalset* icalset_new_mysql(const char* path);
You can also create a new set based on the derived class, For instance,
with icalfileset:
icalfileset* icalfileset_new(const char* path);
icalfileset* icalfileset_new_open(const char* path, int flags, mode_t
mode);
icalset_new_file is identical to icalfileset_new. Both routines will
open an existing file for readinga and writing, or create a new file
if it does not exist. Icalfilset_new_open takes the same arguments
as the open() system routine and behaves in the same way.
The icalset and icalfilset objects are somewhat interchangable -- you
can use an icalfileset* as an argument to any of the icalset routines.
The following examples will all use icalfileset routines; using the
other icalset derived classess will be similar.
5.4.2 Adding, Finding and Removing Components
To add components to a set, use:
icalerrorenum icalfileset_add_component(icalfileset* cluster, icalcomponent*
child);
The fileset keeps an inmemory copy of the components, and this set
must be written back to the file ocassionally. There are two routines
to manage this:
void icalfileset_mark(icalfileset* cluster);
icalerrorenum icalfileset_commit(icalfileset* cluster);
icalfileset_mark indicates that the in-memory components have changed.
Calling the _add_component routine will call _mark automatically,
but you may need to call it yourself if you have made a change to
an existing component. The _commit routine writes the data base to
disk, but only if it is marked. The _commit routine is called automatically
when the icalfileset is freed.
To iterate through the components in a set, use:
icalcomponent* icalfileset_get_first_component(icalfileset* cluster);
icalcomponent* icalfileset_get_next_component(icalfileset* cluster);
icalcomponent* icalfileset_get_current_component (icalfileset* cluster);
These routines work like the corresponding routines from icalcomponent,
except that their output is filtered through a gauge. A gauge is a
test for the properties within a components; only components that
pass the test are returned. A gauge can be constructed from a MINSQL
string with:
icalgauge* icalgauge_new_from_sql(char* sql);
Then, you can add the gauge to the set with :
icalerrorenum icalfileset_select(icalfileset* store, icalgauge* gauge);
Here is an example that puts all of these routines together:
void test_fileset()
{
icalfileset *fs;
icalcomponent *c;
int i;
char *path = "test_fileset.ics";
icalgauge *g = icalgauge_new_from_sql(
"SELECT * FROM VEVENT WHERE DTSTART > '20000103T120000Z' AND
DTSTART <= '20000106T120000Z'");
fs = icalfileset_new(path);
for (i = 0; i!= 10; i++){
c = make_component(i); /* Make a new component where DTSTART
has month of i */
icalfileset_add_component(fs,c);
}
icalfileset_commit(fs); /* Write to disk */
icalfileset_select(fs,g); /* Set the gauge to filter components
*/
for (c = icalfileset_get_first_component(fs);
c != 0;
c = icalfileset_get_next_component(fs)){
struct icaltimetype t = icalcomponent_get_dtstart(c);
printf("%s\n",icaltime_as_ctime(t));
}
icalfileset_free(fs);
}
5.4.3 Other routines
There are several other routines in the icalset interface, but they
not fully implemented yet.
5.5 Memory Management
Libical relies heavily on dynamic allocation for both the core objects
and for the strings used to hold values. Some of this memory the library
caller owns and must free, and some of the memory is managed by the
library. Here is a summary of the memory rules.
1) If the function name has "new" in it, the caller gets control
of the memory. ( such as icalcomponent_new(), or icalproperty_new_clone()
)
2) If you got the memory from a routine with new in it, you must
call the corresponding *_free routine to free the memory. ( Use
icalcomponent_free() to free objects created with icalcomponent_new())
3) If the function name has "add" in it, the caller is transferring
control of the memory to the routine. ( icalproperty_add_parameter() )
4) If the function name has "remove" in it, the caller passes in
a pointer to an object and after the call returns, the caller owns
the object. So, before you call icalcomponent_remove_property(comp,foo),
you do not own "foo" and after the call returns, you do.
5) If the routine returns a string and its name does NOT end in "_r",
libical owns the memory and will put it on a ring buffer to reclaim
later. For example, icalcomponent_as_ical_string(). You'd better
strdup() it if you want to keep it, and you don't have to delete it.
6) If the routine returns a string and its name *does* end in "_r", the
caller gets control of the memory and is responsible for freeing it.
For example, icalcomponent_as_ical_string_r() does the same thing as
icalcomponent_as_ical_string(), except you now have control of the
string buffer it returns.
5.6 Error Handling
Libical has several error handling mechanisms for the various types
of programming, semantic and syntactic errors you may encounter.
5.6.1 Return values
Many library routines signal errors through their return values. All
routines that return a pointer, such as icalcomponent_new(), will
return 0 ( zero ) on a fatal error. Some routines will return a value
of enum icalerrorenum.
5.6.2 icalerrno
Most routines will set the global error value icalerrno on errors.
This variable is an enumeration; permissible values can be found in
libical/icalerror.h. If the routine returns an enum icalerrorenum,
then the return value will be the same as icalerrno. You can use icalerror_strerror()
to get a string that describes the error. The enumerations are:
* ICAL_BADARG_ERROR -- One of the argument to a routine was bad. Typically
for a null pointer.
* ICAL_NEWFAILED_ERROR -- A new() or malloc() failed
* ICAL_MALFORMEDDATA_ERROR -- An input string was not in the correct
format
* ICAL_PARSE_ERROR -- The parser failed to parse an incomming component
* ICAL_INTERNAL_ERROR -- Largely equivalent to an assert
* ICAL_FILE_ERROR -- A file operation failed. Check errno for more
detail.
* ICAL_ALLOCATION_ERROR -- ?
* ICAL_USAGE_ERROR -- ?
* ICAL_NO_ERROR -- No error
* ICAL_MULTIPLEINCLUSION_ERROR -- ?
* ICAL_TIMEDOUT_ERROR -- For CSTP and acquiring locks
* ICAL_UNKNOWN_ERROR -- ?
5.6.3 X-LIC-ERROR and X-LIC-INVALID-COMPONENT
The library handles semantic and syntactic errors in components by
inserting errors properties into the components. If the parser cannot
parse incoming text ( a syntactic error ) or if the icalrestriction_check()
routine indicates that the component does not meet the requirements
of RFC2446 ( a semantic error) the library will insert properties
of the type X-LIC-ERROR to describe the error. Here is an example
of the error property:
X-LIC-ERROR;X-LIC-ERRORTYPE=INVALID_ITIP :Failed iTIP restrictions
for property DTSTART.
Expected 1 instances of the property and got 0
This error resulted from a call to icalrestriction_check(), which discovered
that the component does not have a DTSTART property, as required by
RFC2445.
There are a few routines to manipulate error properties:
[ The following data is supposed to be in a table. It looks OK in LyX,
but does not format propertly in output. ]
+-------------------------------------+---------------------------------------------------------+
| Routine | Purpose |
+-------------------------------------+---------------------------------------------------------+
| void icalrestriction_check() | Check a component against RFC2446 and insert |
+-------------------------------------+---------------------------------------------------------+
| | error properties to indicate non compliance |
+-------------------------------------+---------------------------------------------------------+
| int icalcomponent_count_errors() | Return the number of error properties |
+-------------------------------------+---------------------------------------------------------+
| | in a component |
+-------------------------------------+---------------------------------------------------------+
| void icalcomponent_strip_errors() | Remove all error properties in as |
+-------------------------------------+---------------------------------------------------------+
| | component |
+-------------------------------------+---------------------------------------------------------+
| void icalcomponent_convert_errors() | Convert some error properties into |
+-------------------------------------+---------------------------------------------------------+
| | REQUESTS-STATUS proprties to indicate the inability to |
+-------------------------------------+---------------------------------------------------------+
| | process the component as an iTIP request. |
+-------------------------------------+---------------------------------------------------------+
The types of errors are listed in icalerror.h. They are:
ICAL_XLICERRORTYPE_COMPONENTPARSEERROR
ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR
ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR
ICAL_XLICERRORTYPE_PROPERTYPARSEERROR
ICAL_XLICERRORTYPE_VALUEPARSEERROR
ICAL_XLICERRORTYPE_UNKVCALPROP
ICAL_XLICERRORTYPE_INVALIDITIP
The libical parser will generate the error that end in PARSEERROR when
it encounters garbage in the input steam. ICAL_XLICERRORTYPE_INVALIDITIP
is inserted by icalrestriction_check(), and ICAL_XLICERRORTYPE_UNKVCALPROP
is generated by icalvcal_convert() when it encounters a vCal property
that it cannot convert or does not know about.
Icalcomponent_convert_errors() converts some of the error properties
in a component into REQUEST-STATUS properties that indicate a failure.
As of libical version0.18, this routine only convert *PARSEERROR errors
and it always generates a 3.x ( failure ) code. This makes it more
of a good idea than a really useful bit of code.
5.6.4 ICAL_ERRORS_ARE_FATAL and icalerror_errors_are_fatal
If the global variable icalerror_errors_are_fatal is set to 1, then
any error condition will cause the program to abort. The abort occurs
in icalerror_set_errno(), and is done with an assert(0) if NDEBUG
is undefined, and with icalerror_crash_here if NDEBUG is defined.
The default value of icalerror_errors_are_fatal is 1 when ICAL_ERRORS_ARE_FATAL
is defined, and 0 otherwise. Since ICAL_ERRORS_ARE_FATAL is defined
by default, icalerror_errors_are_fatal is also defined by default.
5.7 Naming Standard
Structures that you access with the "struct" keyword, such as "struct
icaltimetype" are things that you are allowed to see inside and poke
at.
Structures that you access though a typedef, such as "icalcomponent"
are things where all of the data is hidden.
Component names that start with "V" are part of RFC 2445 or another
iCal standard. Component names that start with "X" are also part of
the spec, but they are not actually components in the spec. However,
they look and act like components, so they are components in libical.
Names that start with "XLIC" or "X-LIC" are not part of any iCal spec.
They are used internally by libical.
Enums that identify a component, property, value or parameter end with
"_COMPONENT," "_PROPERTY," "_VALUE," or "_PARAMETER"s
Enums that identify a parameter value have the name of the parameter
as the second word. For instance: ICAL_ROLE_REQPARTICIPANT or ICAL_PARTSTAT_ACCEPTED.
The enums for the parts of a recurarance rule and request statuses
are irregular.
6 Hacks and Bugs
There are a lot of hacks in the library -- bits of code that I am not
proud of and should probably be changed. These are marked with the
comment string "HACK."
7 Library Reference
7.1 Manipulating struct icaltimetype
7.1.1 Struct icaltimetype
struct icaltimetype
{
int year;
int month;
int day;
int hour;
int minute;
int second;
int is_utc;
int is_date;
const char* zone;
};
libical-1.0.1/examples/ 0000775 0000000 0000000 00000000000 12415522231 0014723 5 ustar 00root root 0000000 0000000 libical-1.0.1/examples/.svnignore 0000664 0000000 0000000 00000000067 12415522231 0016741 0 ustar 00root root 0000000 0000000 Makefile
.deps
.libs
*.lo
*.la
doesnothing
Makefile.in
libical-1.0.1/examples/CMakeLists.txt 0000664 0000000 0000000 00000001061 12415522231 0017461 0 ustar 00root root 0000000 0000000 include_directories(
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/src ${CMAKE_BINARY_DIR}/src
${CMAKE_SOURCE_DIR}/src/libical ${CMAKE_BINARY_DIR}/src/libical
${CMAKE_SOURCE_DIR}/src/libicalss ${CMAKE_BINARY_DIR}/src/libicalss
)
########### next target ###############
set(doesnothing_SRCS
access_components.c
access_properties_and_parameters.c
errors.c
main.c
parse_text.c
)
add_executable(doesnothing ${doesnothing_SRCS})
target_link_libraries(doesnothing ical icalss icalvcal ical icalss icalvcal)
########### install files ###############
libical-1.0.1/examples/access-usecases.txt 0000664 0000000 0000000 00000002534 12415522231 0020542 0 ustar 00root root 0000000 0000000
Usecases
---------
1) iMIP based CUA uses a local, file-based store
2) CAP based CUA uses one or more remote CAP servers
3) CAP based CUA uses a local cache that synchronizes with one or more
CAP servers.
4) CUA imports and exports from a file
Scenarios.
---------
1 Open a connection to a store.
2 Create a new calendar for which user Bob can read and user Alice can
read an write.
3 Create several new calendars
4 Delete a calendar
5 Change the calid of a calendar
6 Delete all calendars belonging to user bob
7 Get three new UIDs from the store
8 Store a new VEVENT in the store.
9 Find all components for which the LOCATION is "West Conference Room"
and change them to "East Conference Room"
10 Find the component with UID X and add a GEO property to it.
11 Delete all VEVENTS which have a METHOD that is not CREATED
12 Retrieve all VEVENTS which have a METHOD that is not CREATED
13 Retrieve the capabilities of the store
14 Retrieve/Modify/Add/Delete properties of a store
15 Retrieve/Modify/Add/Delete VCARs of a store
16 Retrieve/Modify/Add/Delete VTIMEZONEs of a store
17 Retrieve/Modify/Add/Delete properties of a calendar
18 Retrieve/Modify/Add/Delete VCARs of a calendar
19 Retrieve/Modify/Add/Delete VTIMEZONEs of a calendar
20 Translate a CALID into one or more UPNs
21 Expand a group UPN into all of the members of the group libical-1.0.1/examples/access_components.c 0000664 0000000 0000000 00000020400 12415522231 0020571 0 ustar 00root root 0000000 0000000 /* Access_component.c */
#include
#include
#include /* for strdup */
#include /* for malloc */
#include /* for printf */
#include /* for time() */
void do_something(icalcomponent *c);
/* Creating iCal Components
There are two ways to create new component in libical. You can
build the component from primitive parts, or you can create it
from a string.
There are two variations of the API for building the component from
primitive parts. In the first variation, you add each parameter and
value to a property, and then add each property to a
component. This results in a long series of function calls. This
style is show in create_new_component()
The second variation uses vargs lists to nest many primitive part
constructors, resulting in a compact, neatly formated way to create
components. This style is shown in create_new_component_with_va_args()
*/
icalcomponent* create_new_component()
{
/* variable definitions */
icalcomponent* calendar;
icalcomponent* event;
struct icaltimetype atime = icaltime_from_timet( time(0),0);
struct icalperiodtype rtime;
icalproperty* property;
/* Define a time type that will use as data later. */
rtime.start = icaltime_from_timet( time(0),0);
rtime.end = icaltime_from_timet( time(0),0);
rtime.end.hour++;
/* Create calendar and add properties */
calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT);
/* Nearly every libical function call has the same general
form. The first part of the name defines the 'class' for the
function, and the first argument will be a pointer to a struct
of that class. So, icalcomponent_ functions will all take
icalcomponent* as their first argument. */
/* The next call creates a new proeprty and immediately adds it to the
'calendar' component. */
icalcomponent_add_property(
calendar,
icalproperty_new_version("2.0")
);
/* Here is the short version of the memory rules:
If the routine name has "new" in it:
Caller owns the returned memory.
If you pass in a string, the routine takes the memory.
If the routine name has "add" in it:
The routine takes control of the component, property,
parameter or value memory.
If the routine returns a string ( "get" and "as_ical_string" )
The library owns the returned memory.
There are more rules, so refer to the documentation for more
details.
*/
icalcomponent_add_property(
calendar,
icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN")
);
/* Add an event */
event = icalcomponent_new(ICAL_VEVENT_COMPONENT);
icalcomponent_add_property(
event,
icalproperty_new_dtstamp(atime)
);
/* In the previous call, atime is a struct, and it is passed in by value.
This is how all compound types of values are handled. */
icalcomponent_add_property(
event,
icalproperty_new_uid("guid-1.host1.com")
);
/* add a property that has parameters */
property = icalproperty_new_organizer("mailto:mrbig@host.com");
icalproperty_add_parameter(
property,
icalparameter_new_role(ICAL_ROLE_CHAIR)
);
icalcomponent_add_property(event,property);
/* In this style of component creation, you need to use an extra
call to add parameters to properties, but the form of this
operation is the same as adding a property to a component */
/* add another property that has parameters */
property = icalproperty_new_attendee("mailto:employee-A@host.com");
icalproperty_add_parameter(
property,
icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT)
);
icalproperty_add_parameter(
property,
icalparameter_new_rsvp(1)
);
icalproperty_add_parameter(
property,
icalparameter_new_cutype(ICAL_CUTYPE_GROUP)
);
icalcomponent_add_property(event,property);
/* more properties */
icalcomponent_add_property(
event,
icalproperty_new_description("Project XYZ Review Meeting")
);
icalcomponent_add_property(
event,
icalproperty_new_categories("MEETING")
);
icalcomponent_add_property(
event,
icalproperty_new_class(ICAL_CLASS_PUBLIC)
);
icalcomponent_add_property(
event,
icalproperty_new_created(atime)
);
icalcomponent_add_property(
event,
icalproperty_new_summary("XYZ Project Review")
);
property = icalproperty_new_dtstart(atime);
icalproperty_add_parameter(
property,
icalparameter_new_tzid("US-Eastern")
);
icalcomponent_add_property(event,property);
property = icalproperty_new_dtend(atime);
icalproperty_add_parameter(
property,
icalparameter_new_tzid("US-Eastern")
);
icalcomponent_add_property(event,property);
icalcomponent_add_property(
event,
icalproperty_new_location("1CP Conference Room 4350")
);
icalcomponent_add_component(calendar,event);
return calendar;
}
/* Now, create the same component as in the previous routine, but use
the constructor style. */
icalcomponent* create_new_component_with_va_args()
{
/* This is a similar set up to the last routine */
icalcomponent* calendar;
struct icaltimetype atime = icaltime_from_timet( time(0),0);
struct icalperiodtype rtime;
rtime.start = icaltime_from_timet( time(0),0);
rtime.end = icaltime_from_timet( time(0),0);
rtime.end.hour++;
/* Some of these routines are the same as those in the previous
routine, but we've also added several 'vanew' routines. These
'vanew' routines take a list of properties, parameters or
values and add each of them to the parent property or
component. */
calendar =
icalcomponent_vanew(
ICAL_VCALENDAR_COMPONENT,
icalproperty_new_version("2.0"),
icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"),
icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
icalproperty_new_dtstamp(atime),
icalproperty_new_uid("guid-1.host1.com"),
icalproperty_vanew_organizer(
"mailto:mrbig@host.com",
icalparameter_new_role(ICAL_ROLE_CHAIR),
0
),
icalproperty_vanew_attendee(
"mailto:employee-A@host.com",
icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT),
icalparameter_new_rsvp(1),
icalparameter_new_cutype(ICAL_CUTYPE_GROUP),
0
),
icalproperty_new_description("Project XYZ Review Meeting"),
icalproperty_new_categories("MEETING"),
icalproperty_new_class(ICAL_CLASS_PUBLIC),
icalproperty_new_created(atime),
icalproperty_new_summary("XYZ Project Review"),
icalproperty_vanew_dtstart(
atime,
icalparameter_new_tzid("US-Eastern"),
0
),
icalproperty_vanew_dtend(
atime,
icalparameter_new_tzid("US-Eastern"),
0
),
icalproperty_new_location("1CP Conference Room 4350"),
0
),
0
);
/* Note that properties with no parameters can use the regular
'new' constructor, while those with parameters use the 'vanew'
constructor. And, be sure that the last argument in the 'vanew'
call is a zero. Without, your program will probably crash. */
return calendar;
}
void find_sub_components(icalcomponent* comp)
{
icalcomponent *c;
/* The second parameter to icalcomponent_get_first_component
indicates the type of component to search for. This will
iterate through all sub-components */
for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT);
c != 0;
c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){
do_something(c);
}
/* This will iterate only though VEVENT sub-components */
for(c = icalcomponent_get_first_component(comp,ICAL_VEVENT_COMPONENT);
c != 0;
c = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT)){
do_something(c);
}
}
/* Ical components only have one internal iterator, so removing the
object that the iterator points to can cause problems. Here is the
right way to remove components */
void remove_vevent_sub_components(icalcomponent* comp){
icalcomponent *c, *next;
for( c = icalcomponent_get_first_component(comp,ICAL_VEVENT_COMPONENT);
c != 0;
c = next)
{
next = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT);
icalcomponent_remove_component(comp,c);
do_something(c);
}
}
libical-1.0.1/examples/access_properties_and_parameters.c 0000664 0000000 0000000 00000010372 12415522231 0023654 0 ustar 00root root 0000000 0000000 /* access_properties_and_parameters.c */
#include
#include
#include
/* Get a particular parameter out of a component. This routine will
return a list of strings of all attendees who are required. Note
that this routine assumes that the component that we pass in is a
VEVENT. */
void get_required_attendees(icalcomponent* event)
{
icalproperty* p;
icalparameter* parameter;
assert(event != 0);
assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT);
/* This loop iterates over all of the ATTENDEE properties in the
event */
/* The iteration routines save their state in the event
struct, so the are not thread safe unless you lock the whole
component. */
for(
p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY);
p != 0;
p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY)
) {
/* Get the first ROLE parameter in the property. There should
only be one, so we won't bother to iterate over them. But,
you can iterate over parameters just like with properties */
parameter = icalproperty_get_first_parameter(p,ICAL_ROLE_PARAMETER);
/* If the parameter indicates the participant is required, get
the attendees name and stick a copy of it into the output
array */
if ( icalparameter_get_role(parameter) == ICAL_ROLE_REQPARTICIPANT)
{
/* Remember, the caller does not own this string, so you
should strdup it if you want to change it. */
const char *attendee = icalproperty_get_attendee(p);
printf("%s",attendee);
}
}
}
/* Here is a similar example. If an attendee has a PARTSTAT of
NEEDSACTION or has no PARTSTAT parameter, change it to
TENTATIVE. */
void update_attendees(icalcomponent* event)
{
icalproperty* p;
icalparameter* parameter;
assert(event != 0);
assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT);
for(
p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY);
p != 0;
p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY)
) {
parameter = icalproperty_get_first_parameter(p,ICAL_PARTSTAT_PARAMETER);
if (parameter == 0) {
/* There was no PARTSTAT parameter, so add one. */
icalproperty_add_parameter(
p,
icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE)
);
} else if (icalparameter_get_partstat(parameter) == ICAL_PARTSTAT_NEEDSACTION) {
/* Remove the NEEDSACTION parameter and replace it with
TENTATIVE */
icalproperty_remove_parameter(p,ICAL_PARTSTAT_PARAMETER);
/* Don't forget to free it */
icalparameter_free(parameter);
/* Add a new one */
icalproperty_add_parameter(
p,
icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE)
);
}
}
}
/* Here are some examples of manipulating properties */
void test_properties()
{
icalproperty *prop;
icalparameter *param;
icalvalue *value;
char *str;
icalproperty *clone;
/* Create a new property */
prop = icalproperty_vanew_comment(
"Another Comment",
icalparameter_new_cn("A Common Name 1"),
icalparameter_new_cn("A Common Name 2"),
icalparameter_new_cn("A Common Name 3"),
icalparameter_new_cn("A Common Name 4"),
0);
/* Iterate through all of the parameters in the property */
for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PARAMETER);
param != 0;
param = icalproperty_get_next_parameter(prop,ICAL_ANY_PARAMETER)) {
printf("Prop parameter: %s\n",icalparameter_get_cn(param));
}
/* Get a string representation of the property's value */
printf("Prop value: %s\n",icalproperty_get_comment(prop));
/* Spit out the property in its RFC 2445 representation */
str = icalproperty_as_ical_string_r(prop);
printf("As iCAL string:\n %s\n", str);
free(str);
/* Make a copy of the property. Caller owns the memory */
clone = icalproperty_new_clone(prop);
/* Get a reference to the value within the clone property */
value = icalproperty_get_value(clone);
str = icalvalue_as_ical_string_r(value);
printf("Value: %s", str);
free(str);
/* Free the original and the clone */
icalproperty_free(clone);
icalproperty_free(prop);
}
libical-1.0.1/examples/access_store.c 0000664 0000000 0000000 00000013356 12415522231 0017554 0 ustar 00root root 0000000 0000000
void acess_cap(void) {
/* Note, all routines that are prefixed with "caller_" are
implemented by the caller of libical */
/* 1 Open a connection to a store. */
/* The caller is responsible for getting a socket to the server
and negotiating the first stages of the CAP exchange. These can
be fairly complex and varied for different operating systems,
local vs remote usage, and for different authentication
schemes, so the API does not try to simplify them. */
int sock = caller_create_socket_to_server();
icalcstp *cstp = icalcstp_new(0,sock,sock);
caller_authenticate(cstp);
icalcsdb *csdb = icalcsdb_new(cstp);
/* 2 Create a new calendar for which user Bill can read and user Mary can
read and write. See CAP draft 7.2.1.1.1. for the text of this example*/
/* This case requires setting up a TARGET, multiple OWNERs and
multiple VCARs, so it creates a component and uses CSTP that
than the CSDB interface.
icalcomponent *create = icalcaputil_new_create();
icalcomponent_add_property(create,
icalproperty_new_target(
strdup("cap://cal.example.com/relcal8")
));
icalcomponent *cal =
icalcomponent_vanew_vcalendar(
icalproperty_new_relcalid(strdup("relcalid")),
icalproperty_new_name(strdup("Bill & Mary's cal")),
icalproperty_new_owner(strdup("bill")),
icalproperty_new_owner(strdup("mary")),
icalproperty_new_calmaster(strdup("mailto:bill@example.com")),
icalcomponent_vanew_vcar(
icalproperty_new_grant(strdup("UPN=bill;ACTION=*;OBJECT=*")),
icalproperty_new_grant(strdup("UPN=bill;ACTION=*;OBJECT=*"))
0)
0);
error = icalcomponent_add_component(create,cal);
/* Send the data */
error = icalcstp_senddata(cstp,10,create);
/* Get the response */
icalcstp_response response = icalcstp_get_first_response(cstp);
/* Do something with the response*/
if(icalenum_reqstat_major(response.code) != 2){
/* do something with the error */
}
icalcomponent_free(create);
/* 3 Create several new calendars */
/* Same as #2, but insert more TARGET properties and read more responses*/
/* 4 Delete a calendar */
error = icalcsdb_delete(csdb,"uid12345-example.com");
/* 5 Change the calid of a calendar */
erorr = icalcsdb_move(csdb,"uid12345-old-example.com",
"uid12345-new-example.com");
/* 6 Delete all calendars belonging to user bob */
icalproperty *p;
/* First expand bob's UPN into a set of CALIDs */
icalcomponent *calids = icalcsdb_expand_upn("bob@example.com");
/* Then, create a message to delete all of them */
icalcomponent *delete = icalcaputil_new_create();
for(p = icalcomponent_get_first_property(calids,ICAL_CALID_PROPERTY);
p != 0;
p = icalcomponent_get_next_property(calids,ICAL_CALID_PROPERTY)){
char* = icalproperty_get_calid(p);
icalcomponent_add_target(delete,p);
}
/* Send the message */
error = icalcstp_senddata(cstp,10,delete);
/* Finally, read the responses */
for(response = icalcstp_get_first_response(cstp);
response.code != ICAL_UNKNOWN_STATUS;
response = icalcstp_get_next_response(cstp)){
if(icalenum_reqstat_major(response.code) != 2){
/* do something with the error */
}
}
/* 7 Get three new UIDs from the store */
/* libical owns the returned memory. Copy before using */
char* uid1 = icalcsdb_generateuid(csdb);
char* uid2 = icalcsdb_generateuid(csdb);
char* uid3 = icalcsdb_generateuid(csdb);
/* 8 Store a new VEVENT in the store. */
/* Very similar to case #2 */
/* 9 Find all components for which the LOCATION is "West Conference
Room" and change them to "East Conference Room" */
icalcomponent *modify = icalcaputil_new_modify();
icalcaputil_modify_add_old_prop(modify,
icalproperty_new_location(
strdup("West Conference Room")));
icalcaputil_modify_add_new_prop(modify,
icalproperty_new_location(
strdup("East Conference Room")));
icalcaputil_add_target(modify,"relcal2");
/* Send the component */
error = icalcstp_senddata(cstp,10,delete);
/* Get the response */
icalcstp_response response = icalcstp_get_first_response(cstp);
/* Do something with the response*/
if(icalenum_reqstat_major(response.code) != 2){
/* do something with the error */
}
icalcomponent_free(modify);
/* 10 Find the component with UID X and add a GEO property to it. */
icalcomponent *modify = icalcaputil_new_modify();
icalcaputil_modify_add_query(modify,
"SELECT UID FROM VEVENT WHERE UID = 'X'");
icalcaputil_modify_add_new_prop(modify,
icalproperty_new_geo(
strdup("-117;32")));
icalcaputil_add_target(modify,"relcal2");
/* Send the component */
error = icalcstp_senddata(cstp,10,delete);
/* Get the response */
icalcstp_response response = icalcstp_get_first_response(cstp);
/* Do something with the response*/
if(icalenum_reqstat_major(response.code) != 2){
/* do something with the error */
}
icalcomponent_free(modify);
/* 11 Delete all VEVENTS which have a METHOD that is not CREATED */
/* 12 Retrieve all VEVENTS which have a METHOD that is not CREATED */
/* Nearly the same at #11 */
/* 13 Retrieve the capabilities of the store */
/* 14 Retrieve/Modify/Add/Delete properties of a store */
/* 15 Retrieve/Modify/Add/Delete VCARs of a store */
/* 16 Retrieve/Modify/Add/Delete VTIMEZONEs of a store */
/* 17 Retrieve/Modify/Add/Delete properties of a calendar */
/* 18 Retrieve/Modify/Add/Delete VCARs of a calendar */
/* 19 Retrieve/Modify/Add/Delete VTIMEZONEs of a calendar */
/* 20 Translate a CALID into one or more UPNs */
/* 21 Expand a group UPN into all of the members of the group */
libical-1.0.1/examples/changenames.pl 0000664 0000000 0000000 00000000156 12415522231 0017533 0 ustar 00root root 0000000 0000000 s/icalcluster/icalfileset/g;
s/ICALCLUSTER/ICALFILESET/g;
s/icalstore/icaldirset/g;
s/ICALSTORE/ICALDIRSET/g;
libical-1.0.1/examples/errors.c 0000664 0000000 0000000 00000003330 12415522231 0016402 0 ustar 00root root 0000000 0000000 /* errors.c */
#include
#include
void program_errors()
{
/*Most routines will set icalerrno on errors. This is an
enumeration defined in icalerror.h */
icalerror_clear_errno();
(void)icalcomponent_new(ICAL_VEVENT_COMPONENT);
if (icalerrno != ICAL_NO_ERROR){
fprintf(stderr,"Horrible libical error: %s\n",
icalerror_strerror(icalerrno));
}
}
void component_errors(icalcomponent *comp)
{
int errors;
icalproperty *p;
/* presume that we just got this component from the parser */
errors = icalcomponent_count_errors(comp);
printf("This component has %d parsing errors\n", errors);
/* Print out all of the parsing errors. This is not strictly
correct, because it does not descend into any sub-components,
as icalcomponent_count_errors() does. */
for(p = icalcomponent_get_first_property(comp,ICAL_XLICERROR_PROPERTY);
p != 0;
p = icalcomponent_get_next_property(comp,ICAL_XLICERROR_PROPERTY))
{
printf("-- The error is %s:\n",icalproperty_get_xlicerror(p));
}
/* Check the component for iTIP compilance, and add more
X-LIC-ERROR properties if it is non-compilant. */
icalrestriction_check(comp);
/* Count the new errors. */
if(errors != icalcomponent_count_errors(comp)){
printf(" -- The component also has iTIP restriction errors \n");
}
/* Since there are iTIP restriction errors, it may be impossible
to process this component as an iTIP request. In this case, the
X-LIC-ERROR proeprties should be expressed as REQUEST-STATUS
properties in the reply. This following routine makes this
conversion */
icalcomponent_convert_errors(comp);
}
libical-1.0.1/examples/main.c 0000664 0000000 0000000 00000000313 12415522231 0016010 0 ustar 00root root 0000000 0000000 /* This is just to make the code in the example directory link properly. */
#include
int main()
{
return 1;
}
void do_something(icalcomponent* comp){
(void)comp;/*unused*/
}
libical-1.0.1/examples/parse_text.c 0000664 0000000 0000000 00000003031 12415522231 0017242 0 ustar 00root root 0000000 0000000 /* parse_text.c
*/
#include
#include
#include
#include
#include
#include
/* The icalparser_get_line routine will create a single *content* line
out of one or more input lines. The content line is all of the
properties and values for a single property, and it can span several
input lines. So, icalparser_get_line will need to be able to get more
data on its own. Read_string is a routine that does this. You can
write your own version of read stream to get data from other types of
files, sockets, etc. */
char* read_stream(char *s, size_t size, void *d)
{
return fgets(s, (int)size, (FILE*)d);
}
void parse_text(char* argv[])
{
char* line;
FILE* stream;
icalcomponent *c;
/* Create a new parser object */
icalparser *parser = icalparser_new();
stream = fopen(argv[1],"r");
assert(stream != 0);
/* Tell the parser what input routie it should use. */
icalparser_set_gen_data(parser,stream);
do{
/* Get a single content line by making one or more calls to
read_stream()*/
line = icalparser_get_line(parser,read_stream);
/* Now, add that line into the parser object. If that line
completes a component, c will be non-zero */
c = icalparser_add_line(parser,line);
if (c != 0){
char *temp = icalcomponent_as_ical_string_r(c);
printf("%s", temp);
free(temp);
printf("\n---------------\n");
icalcomponent_free(c);
}
} while ( line != 0);
icalparser_free(parser);
}
libical-1.0.1/examples/usecases.c 0000664 0000000 0000000 00000004733 12415522231 0016711 0 ustar 00root root 0000000 0000000 /* -*- Mode: C -*-
======================================================================
FILE: usecases.c
CREATOR: eric 03 April 1999
DESCRIPTION:
$Id: usecases.c,v 1.3 2008-01-02 20:07:29 dothebart Exp $
$Locker: $
(C) COPYRIGHT 1999 Eric Busboom
http://www.softwarestudio.org
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and
limitations under the License.
The original author is Eric Busboom
The original code is usecases.c
======================================================================*/
#include
#include
#include /* for strdup */
#include /* for malloc */
#include /* for printf */
#include /* for time() */
char str[] = "BEGIN:VCALENDAR\
PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\
VERSION:2.0\
BEGIN:VEVENT\
DTSTAMP:19980309T231000Z\
UID:guid-1.host1.com\
ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\
ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\
DESCRIPTION:Project XYZ Review Meeting\
CATEGORIES:MEETING\
CREATED:19980309T130000Z\
SUMMARY:XYZ Project Review\
DTSTART;TZID=US-Eastern:19980312T083000\
DTEND;TZID=US-Eastern:19980312T093000\
END:VEVENT\
END:VCALENDAR";
/* Here are some ways to work with values. */
void test_values()
{
icalvalue *v;
icalvalue *copy;
char *str;
v = icalvalue_new_caladdress("cap://value/1");
printf("caladdress 1: %s\n",icalvalue_get_caladdress(v));
icalvalue_set_caladdress(v,"cap://value/2");
printf("caladdress 2: %s\n",icalvalue_get_caladdress(v));
str = icalvalue_as_ical_string_r(v));
printf("String: %s\n", str);
free(str);
copy = icalvalue_new_clone(v);
str = icalvalue_as_ical_string_r(v);
printf("Clone: %s\n", str);
free(str);
icalvalue_free(v);
icalvalue_free(copy);
}
void test_parameters()
{
icalparameter *p;
char *str;
p = icalparameter_new_cn("A Common Name");
printf("Common Name: %s\n",icalparameter_get_cn(p));
str = icalparameter_as_ical_string_r(p));
printf("As String: %s\n", str);
free(str);
}
libical-1.0.1/libical.pc.in 0000664 0000000 0000000 00000000431 12415522231 0015433 0 ustar 00root root 0000000 0000000 prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
threadslib=@PTHREAD_LIBS@
Name: libical
Description: An implementation of basic iCAL protocols
Version: @VERSION@
Libs: -L${libdir} -lical -licalss -licalvcal ${threadslib}
Cflags: -I${includedir}
libical-1.0.1/scripts/ 0000775 0000000 0000000 00000000000 12415522231 0014574 5 ustar 00root root 0000000 0000000 libical-1.0.1/scripts/.svnignore 0000664 0000000 0000000 00000000053 12415522231 0016605 0 ustar 00root root 0000000 0000000 Makefile
.deps
.libs
*.lo
*.la
Makefile.in
libical-1.0.1/scripts/CMakeLists.txt 0000664 0000000 0000000 00000000054 12415522231 0017333 0 ustar 00root root 0000000 0000000
########### install files ###############
libical-1.0.1/scripts/mkderivedcomponents.pl 0000775 0000000 0000000 00000005744 12415522231 0021226 0 ustar 00root root 0000000 0000000 #!/usr/bin/env perl
use Getopt::Std;
getopts('chspi:');
# ARG 0 is components.txt
open(PV,"$ARGV[0]") || die "Can't open components file $ARGV[0]:$!";
my @components;
while (){
s/#.*//;
chop;
push(@components,$_);
}
close PV;
# Write the file inline by copying everything before a demarcation
# line, and putting the generated data after the demarcation
if ($opt_i) {
open(IN,$opt_i) || die "Can't open input file \"$opt_i\"";
while(){
if (/Do not edit/){
last;
}
print;
}
if($opt_i){
print "# Everything below this line is machine generated. Do not edit. \n";
} else {
print "/* Everything below this line is machine generated. Do not edit. */\n";
}
}
if ($opt_c or $opt_h and !$opt_i){
print < /* for va_arg functions */
EOM
}
if ($opt_p and !$opt_i){
print <