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:
Damon Chaplin
2001-10-30 01:49:30 +00:00
committed by Damon Chaplin
parent 71657b5741
commit dbff414ea8
7 changed files with 104 additions and 24 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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
}