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) {