aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libical/ChangeLog6
-rw-r--r--libical/src/libical/icalparameter.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/libical/ChangeLog b/libical/ChangeLog
index f26bdb1448..70c28eb878 100644
--- a/libical/ChangeLog
+++ b/libical/ChangeLog
@@ -1,3 +1,9 @@
+2001-07-25 JP Rosevear <jpr@ximian.com>
+
+ * src/libical/icalparameter.c (icalparameter_as_ical_string): if
+ the property contains ':' or ';' put the value in quotes so it
+ parses correctly
+
2001-07-23 JP Rosevear <jpr@ximian.com>
* src/libical/icalparser.c: pass extra param to
diff --git a/libical/src/libical/icalparameter.c b/libical/src/libical/icalparameter.c
index 156ecdb04b..7e0d15cef3 100644
--- a/libical/src/libical/icalparameter.c
+++ b/libical/src/libical/icalparameter.c
@@ -245,7 +245,17 @@ icalparameter_as_ical_string (icalparameter* parameter)
icalmemory_append_string(&buf, &buf_ptr, &buf_size, "=");
if(impl->string !=0){
+ int qm = 0;
+
+ /* Encapsulate the property in quotes if necessary */
+ if (strchr (impl->string, ';') != 0 || strchr (impl->string, ':') != 0) {
+ icalmemory_append_char (&buf, &buf_ptr, &buf_size, '"');
+ qm = 1;
+ }
icalmemory_append_string(&buf, &buf_ptr, &buf_size, impl->string);
+ if (qm == 1) {
+ icalmemory_append_char (&buf, &buf_ptr, &buf_size, '"');
+ }
} else if (impl->data != 0){
const char* str = icalparameter_enum_to_string(impl->data);
icalmemory_append_string(&buf, &buf_ptr, &buf_size, str);