Hello cruel, synchronised world :-)
For the most part, multisync works brilliantly for me. I'm syncing my
Siemens S55 phone with Evolution, but there are some occasional
glitches. I've recovered quite easily from them most of the time, but
yesterday I majorly stuffed up my calendar :-) I managed to get out of
this by deleting ~/.multisync/1/remoteevolutionchanges (it contained a
lot of bogus entries it was continually sending to my phone), manually
resetting some change counters and syncing the entire calendar across
again. Just pressing Resync didn't work for me.
Anyway, my problems yesterday prompted me to break my silence :-)
Issues I've encountered:
. crashing phone: occasionally, my phone will crash mid-sync. Most
of the time, booting the phone, and restarting multisync (reboot
everything mentality :-) will fix it. Occasionally, I'll get stuck
with the phone crashing on every sync though. I think one such bug
in the phone is when you try to sync a birthday event over to it in
certain circumstances.
. all day events: syncing between Evo and s55 of all-day events
results in midnight-midnight events in the s55. a) this is done in
GMT, so its 8am -> 8am for me, and b) midnight-midnight localtime
spills over into the next day (looks bad on s55 calendar, I saw
someone else asking about that too).
I patched the code to equate vCal v2 all day events to vCal v1
zero-minute events at midnight on the day. Which is great for the
s55 (but probably not so good for other v1 vCal devices; I think the
"proper" way to do it on the s55 is to supply a midnight starttime
and no end time at all). The patch is attached. It needs some
work, and probably a checkbox exposed to the UI to turn it on and
off. It breaks multiday allday events. I was hoping to refine it
later, but best to put these things out there in case I don't get
time or I'm barking up the wrong tree.
. Evo contact "labels": contacts sync to Evo with a ADR;WORK: line,
but Evo won't display them by default without a label. multisync
might like to insert a LABEL; line too on the Evolution side. I
ended up exporting my Contact database to a .vcs file, fixing it
with a perl script, and reimporting :-)
So I thought I'd put these out there just to introduce myself :-)
,dunc
--- multisync-0.81.orig/src/sync_vtype.c 2003-12-03 09:24:12.000000000 +0800
+++ multisync-0.81/src/sync_vtype.c 2004-03-15 12:48:42.000000000 +0800
@@ -395,13 +395,14 @@
if (value && alldayevent) {
int y, m, d, h, min, s, res;
char utc = ' ';
+ time_t fixtz;
res = sscanf(value,
"%4d%2d%2dT%2d%2d%2d%c", &y, &m, &d, &h, &min, &s, &utc);
if (res >= 3) {
// Date only, convert to 00:00
if (!dtend) { // DTSTART
g_free(value);
- value = g_strdup_printf("%04d%02d%02dT000000Z", y, m, d);
+ value = g_strdup_printf("%04d%02d%02dT000000", y, m, d);
} else { // DTEND
time_t t = sync_dt_to_timet(value);
char *tpos;
@@ -412,7 +413,7 @@
if (tpos) {
char *tmp;
tpos[0] = 0;
- tmp = g_strdup_printf("%sT240000Z", value);
+ tmp = g_strdup_printf("%sT000000", value);
g_free(value);
value = tmp;
}
@@ -420,26 +421,21 @@
}
}
if (value && dt1to2) {
- int y, m, d, h, min, s, res;
- char utc = ' ';
- res = sscanf(value,
- "%4d%2d%2dT%2d%2d%2d%c", &y, &m, &d, &h, &min, &s, &utc);
- if (res == 7 && (h == 0|| h == 24) && min == 0 && s == 0) {
+ struct tm *lt;
+ time_t t;
+
+ t = sync_dt_to_timet(value);
+ if (dtend)
+ t += 86400;
+
+ lt = localtime(&t);
+ if (lt->tm_hour == 0 && lt->tm_min == 0 && lt->tm_sec == 0) {
// All day event?
g_free(value);
-
+
g_string_append(outcard, ";VALUE=DATE");
- value = g_strdup_printf("%04d%02d%02d", y, m, d);
- if (h == 24) {
- time_t t = sync_dt_to_timet(value);
- char *tpos;
- t += 24*3600; // Move one day forwards
- g_free(value);
- value = sync_timet_to_dt(t);
- tpos = strstr(value, "T");
- if (tpos)
- tpos[0] = 0; // End string after date
- }
+ value = g_strdup_printf("%04d%02d%02d", lt->tm_year + 1900,
+ lt->tm_mon + 1, lt->tm_mday);
}
}
if (fixdst && value) {