renamed the library to libical-evolution.la, install ical.h into
2001-10-29 Damon Chaplin <damon@ximian.com> * src/libical/Makefile.am: renamed the library to libical-evolution.la, install ical.h into $includedir/evolution, with the other Evo headers. * src/libical/icalproperty.c (fold_property_line): new function to fold property lines around every 70 characters. Outlook Web Access doesn't seem to like some properties folded after the property name (e.g. UID, VTIMEZONE stuff.) Slight chance of data corruption here. * src/libical/icalvalue.c (icalvalue_text_as_ical_string): don't fold the lines here. * src/libical/icaltime.c (icaltime_from_string): DATE values should not have is_utc set to 1 - they don't have a timezone. * src/libical/icalvalue.c (icalvalue_utcoffset_as_ical_string): always round UTC offsets to the nearest minute, for compatability with Outlook. Should round data when parsing as well. svn path=/trunk/; revision=14396
This commit is contained in:
committed by
Damon Chaplin
parent
71657b5741
commit
dbff414ea8
@ -1,3 +1,23 @@
|
||||
2001-10-29 Damon Chaplin <damon@ximian.com>
|
||||
|
||||
* src/libical/Makefile.am: renamed the library to libical-evolution.la,
|
||||
install ical.h into $includedir/evolution, with the other Evo headers.
|
||||
|
||||
* src/libical/icalproperty.c (fold_property_line): new function to
|
||||
fold property lines around every 70 characters. Outlook Web Access
|
||||
doesn't seem to like some properties folded after the property name
|
||||
(e.g. UID, VTIMEZONE stuff.) Slight chance of data corruption here.
|
||||
|
||||
* src/libical/icalvalue.c (icalvalue_text_as_ical_string): don't fold
|
||||
the lines here.
|
||||
|
||||
* src/libical/icaltime.c (icaltime_from_string): DATE values should
|
||||
not have is_utc set to 1 - they don't have a timezone.
|
||||
|
||||
* src/libical/icalvalue.c (icalvalue_utcoffset_as_ical_string):
|
||||
always round UTC offsets to the nearest minute, for compatability
|
||||
with Outlook. Should round data when parsing as well.
|
||||
|
||||
2001-10-27 Damon Chaplin <damon@ximian.com>
|
||||
|
||||
* src/libical/icaltimezone.c (icaltimezone_get_display_name): added
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(src)
|
||||
AM_INIT_AUTOMAKE(libical,0.23a)
|
||||
AM_INIT_AUTOMAKE(libical-evolution,0.23a)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl Initialize maintainer mode
|
||||
|
||||
@ -4,4 +4,6 @@ else
|
||||
PYTHON_DIR =
|
||||
endif
|
||||
|
||||
SUBDIRS = libical libicalss libicalvcal # $(PYTHON_DIR) test
|
||||
# For evolution we only build libical at present.
|
||||
SUBDIRS = libical
|
||||
#SUBDIRS = libical libicalss libicalvcal # $(PYTHON_DIR) test
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
# FILE: Makefile.am
|
||||
# CREATOR: eric
|
||||
#
|
||||
# $Id: Makefile.am,v 1.32 2001/10/05 20:23:26 ettore Exp $
|
||||
# $Id: Makefile.am,v 1.33 2001/10/30 01:49:30 damon Exp $
|
||||
#
|
||||
#
|
||||
# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
|
||||
@ -26,10 +26,10 @@
|
||||
DESIGNDATA = $(top_srcdir)/design-data
|
||||
ICALSCRIPTS = $(top_srcdir)/scripts
|
||||
|
||||
lib_LTLIBRARIES = libical.la
|
||||
lib_LTLIBRARIES = libical-evolution.la
|
||||
|
||||
noinst_LTLIBRARIES = libical-static.la
|
||||
libical_static_la_SOURCES = $(libical_la_SOURCES)
|
||||
libical_static_la_SOURCES = $(libical_evolution_la_SOURCES)
|
||||
libical_static_la_LDFLAGS = --all-static
|
||||
|
||||
YFLAGS = -d -v -t -pical_yy
|
||||
@ -46,9 +46,9 @@ INCLUDES = \
|
||||
-I$(top_builddir)/src \
|
||||
-I$(srcdir)
|
||||
|
||||
libical_la_LDFLAGS = -version-info 0:0:0
|
||||
libical_evolution_la_LDFLAGS = -version-info 0:0:0
|
||||
|
||||
libical_la_SOURCES = \
|
||||
libical_evolution_la_SOURCES = \
|
||||
$(BUILT_SOURCES) \
|
||||
icalarray.c \
|
||||
icalarray.h \
|
||||
@ -98,7 +98,8 @@ libical_la_SOURCES = \
|
||||
icallangbind.h \
|
||||
icallangbind.c
|
||||
|
||||
libicalincludedir = $(includedir)
|
||||
#libicalincludedir = $(includedir)/$(PACKAGE)
|
||||
libicalincludedir = $(includedir)/evolution
|
||||
|
||||
libicalinclude_HEADERS = ical.h
|
||||
|
||||
|
||||
@ -263,6 +263,49 @@ icalproperty_free (icalproperty* prop)
|
||||
}
|
||||
|
||||
|
||||
/* This splits the property every 75 octects, as described in the spec.
|
||||
It returns a tmp buffer.
|
||||
NOTE: I'm not sure if it matters if we split a line in the middle of a
|
||||
UTF-8 character. It probably won't look nice in a text editor. */
|
||||
static char*
|
||||
fold_property_line (char *text)
|
||||
{
|
||||
int len, max_lines, line_length;
|
||||
char *buf, *src, *dest, ch;
|
||||
|
||||
len = strlen (text);
|
||||
|
||||
/* The minimum length we split a line at is 65 characters, so calculate
|
||||
the maximum number of newlines we will need. */
|
||||
max_lines = ((len - 1) / 65);
|
||||
|
||||
/* Calculate the maximum size for the buffer we need, if we add a newline
|
||||
character for each line, and a '\0' at the end. */
|
||||
buf = icalmemory_tmp_buffer (len + max_lines + 1);
|
||||
|
||||
src = text;
|
||||
dest = buf;
|
||||
line_length = 0;
|
||||
while (ch = *src) {
|
||||
/* If the line is 65 characters or over, try to split at next space.
|
||||
If it is 75 characters or over, split now. */
|
||||
if ((line_length >= 65 && ch == ' ') || (line_length >= 75)) {
|
||||
*dest++ = '\n';
|
||||
*dest++ = ' ';
|
||||
line_length = 0;
|
||||
}
|
||||
|
||||
*dest++ = ch;
|
||||
line_length++;
|
||||
|
||||
src++;
|
||||
}
|
||||
*dest = '\0';
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
icalproperty_as_ical_string (icalproperty* prop)
|
||||
{
|
||||
@ -305,8 +348,8 @@ icalproperty_as_ical_string (icalproperty* prop)
|
||||
|
||||
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, property_name);
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);
|
||||
|
||||
/* Outlook doesn't like a newline here. */
|
||||
/*icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);*/
|
||||
|
||||
|
||||
/* Determine what VALUE parameter to include. The VALUE parameters
|
||||
@ -353,10 +396,13 @@ icalproperty_as_ical_string (icalproperty* prop)
|
||||
}
|
||||
|
||||
if(kind_string!=0){
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, " ;");
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, "VALUE=");
|
||||
/* We aren't outputting a newline, so we don't want a space. */
|
||||
/*icalmemory_append_string(&buf, &buf_ptr, &buf_size, " ;");*/
|
||||
/*icalmemory_append_string(&buf, &buf_ptr, &buf_size, "VALUE=");*/
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, ";VALUE=");
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, kind_string);
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);
|
||||
/* No newline again. */
|
||||
/*icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);*/
|
||||
}
|
||||
|
||||
|
||||
@ -381,15 +427,13 @@ icalproperty_as_ical_string (icalproperty* prop)
|
||||
continue;
|
||||
}
|
||||
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, " ;");
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, ";");
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, kind_string);
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);
|
||||
|
||||
}
|
||||
|
||||
/* Append value */
|
||||
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, " :");
|
||||
icalmemory_append_string(&buf, &buf_ptr, &buf_size, ":");
|
||||
|
||||
value = icalproperty_get_value(prop);
|
||||
|
||||
@ -407,9 +451,11 @@ icalproperty_as_ical_string (icalproperty* prop)
|
||||
/* Now, copy the buffer to a tmp_buffer, which is safe to give to
|
||||
the caller without worring about de-allocating it. */
|
||||
|
||||
|
||||
out_buf = icalmemory_tmp_buffer(strlen(buf)+1);
|
||||
strcpy(out_buf, buf);
|
||||
/* We now use a function to fold the line properly every 75 characters. */
|
||||
out_buf = fold_property_line (buf);
|
||||
|
||||
/*out_buf = icalmemory_tmp_buffer(strlen(buf)+1);*/
|
||||
/*strcpy(out_buf, buf);*/
|
||||
|
||||
icalmemory_free_buffer(buf);
|
||||
|
||||
|
||||
@ -336,7 +336,7 @@ struct icaltimetype icaltime_from_string(const char* str)
|
||||
}
|
||||
|
||||
} else if (size == 8) { /* A DATE */
|
||||
tt.is_utc = 1;
|
||||
tt.is_utc = 0;
|
||||
tt.is_date = 1;
|
||||
} else { /* error */
|
||||
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
|
||||
|
||||
@ -629,12 +629,18 @@ char* icalvalue_utcoffset_as_ical_string(icalvalue* value)
|
||||
sign = '-';
|
||||
}
|
||||
|
||||
/* We add 30 to +ve values or -29 to -ve values, since we will round to
|
||||
the nearest minute, so we compatable with Outlook. */
|
||||
if (data >= 0)
|
||||
data += 30;
|
||||
else
|
||||
data -= 29;
|
||||
|
||||
h = data/3600;
|
||||
m = (data - (h*3600))/ 60;
|
||||
s = (data - (h*3600) - (m*60));
|
||||
/*s = (data - (h*3600) - (m*60));*/
|
||||
s = 0;
|
||||
|
||||
/* FIXME: We may want to always round to the nearest minute, to avoid
|
||||
interop problems with Outlook (2000). It doesn't like seconds here. */
|
||||
if (s == 0)
|
||||
sprintf(str,"%c%02d%02d",sign,abs(h),abs(m));
|
||||
else
|
||||
@ -731,6 +737,10 @@ char* icalvalue_text_as_ical_string(icalvalue* value) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* We don't do folding here any more. We do it in
|
||||
icalproperty_as_ical_string(). */
|
||||
#if 0
|
||||
if (line_length > 65 && *p == ' '){
|
||||
icalmemory_append_string(&str,&str_p,&buf_sz,"\n ");
|
||||
line_length=0;
|
||||
@ -741,6 +751,7 @@ char* icalvalue_text_as_ical_string(icalvalue* value) {
|
||||
icalmemory_append_string(&str,&str_p,&buf_sz,"\n ");
|
||||
line_length=0;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user