I have the same issue when I sync Contact.

Le samedi 09 mai 2009 à 03:12 -0400, Chris Frey a écrit :
> On Thu, May 07, 2009 at 05:38:10PM +0100, Dr J A Gow wrote:
> > Folks,
> > 
> >     Attached is a patch that provides reasonable (but not yet fully tested)
> > 2-way syncing of recurrent events in the opensync-0.4x plugin. I based
> > this on the recurrence handling stuff I wrote for the SynCE project
> > although it is not a direct port.
> 
> Thanks very much for this patch.  I worked through it and have a few
> comments.
> 
> 
> > It also fixes up a problem with some addresses not syncing and a
> > case-issue in Evo.
> 
> I noticed that the patch includes changes like this:
> 
> 
> >     // add all applicable phone numbers... there can be multiple
> >     // TEL fields, even with the same TYPE value... therefore, the
> >     // second TEL field with a TYPE=work, will be stored in WorkPhone2
> > -   AddPhoneCond("pref", con.Phone);
> > -   AddPhoneCond("fax", con.Fax);
> > -   AddPhoneCond("work", con.WorkPhone);
> > -   AddPhoneCond("work", con.WorkPhone2);
> > -   AddPhoneCond("home", con.HomePhone);
> > -   AddPhoneCond("home", con.HomePhone2);
> > -   AddPhoneCond("cell", con.MobilePhone);
> > -   AddPhoneCond("pager", con.Pager);
> > +   AddPhoneCond("PREF", con.Phone);
> > +   AddPhoneCond("FAX", con.Fax);
> > +   AddPhoneCond("WORK", con.WorkPhone);
> > +   AddPhoneCond("WORK", con.WorkPhone2);
> > +   AddPhoneCond("HOME", con.HomePhone);
> > +   AddPhoneCond("HOME", con.HomePhone2);
> > +   AddPhoneCond("CELL", con.MobilePhone);
> > +   AddPhoneCond("PAGER", con.Pager);
> >     AddPhoneCond(con.OtherPhone);
> 
> This was for a bug in SynCE, as I recall.
> http://www.mail-archive.com/barry-devel@lists.sourceforge.net/msg01109.html
> I don't recall that Evolution had this problem.
> 
> As you might expect, I have a general resistance to including workarounds
> in my code for bugs in other software. :-)  So far I have not included
> this, although I might add it as a contrib/ patch for those needing to
> work with SynCE.  I'd much rather see this fixed in SynCE.
> 
> I would even accept a patch that added a --with-synce option to Barry's
> configure script that automatically applied this patch.  I don't want
> to make it painless for synce users, since they should be fixing their
> own code too.  Note that any change to configure and friends needs to pass
> the test/buildtest.sh script.
> 
> 
> > +unsigned short vCalendar::GetMonthWeekNumFromBYDAY(const std::string& 
> > ByDay)
> > +{
> > +   return atoi(ByDay.substr(0,ByDay.length()-2).c_str());
> > +}
> 
> I'm confused by this... BYDAY can contain strings like this, according
> to the RFC:
> 
>       BYDAY=MO,TU,WE,TH,FR
> 
> Which doesn't work with an atoi() call.
> 
> What kind of data are you seeing in your tests?
> 
> 
> >     case Calendar::Day:             // eg. every day
> > -           AddParam(attr, "FREQ", "DAILY");
> > +           //AddParam(attr, "FREQ", "DAILY");
> > +           AddValue(attr,"FREQ=DAILY");
> >             break;
> 
> Looks like I was hoping for better support in vformat.c... Thanks. :-)
> I need to do more testing on this, but your change looks better than
> my code on first glance.
> 
> 
> > +                   // we do have COUNT. This means we won't have UNTIL. So 
> > we need to
> > +                   // process the RecurringEndTime from the current start 
> > date. Set the count level to
> > +                   // something other than zero to indicate we need to 
> > process it as the exact end date will
> > +                   // depend upon the frequency.
> > +                   count=atoi(args["COUNT"].c_str());
> > +           }
> > +   }
> 
> I added a check here so that an exception would be thrown if count == 0.
> This seems to match the RFC requirements too, and makes your if(count)
> tests below safer.
> 
> 
> > +   // we need these if COUNT is true, or if we are a yearly job.
> > +   
> > +   time_t time = cal.StartTime;
> 
> Code needs to be clearer... this introduces a prerequisite dependency on
> the order of initialization of the cal class... if the code is moved
> someday to fill in StartTime after this function is called, things will
> break.
> 
> I changed it to use a function argument for starttime, to make this
> requirement clearer.
> 
> 
> > +   if(args.find(string("FREQ"))!=args.end()) {
> > +           if(args["FREQ"]==string("DAILY")) {
> > +                   cal.RecurringType=Calendar::Day;
> > +           } else {
> > +                   if(args["FREQ"]==string("WEEKLY")) {
> 
> I changed this into a more linear if / else if / else if structure for
> readability, and fixed a bracket bug on the YEARLY count at the bottom.
> 
> 
> > +                                           // convert to struct tm, then 
> > simply add to the year.
> > +                                           struct tm datestruct;
> > +                                           gmtime_r(&time,&datestruct);
> > +                                           datestruct.tm_year += count;
> > +                                           
> > cal.RecurringEndTime=mktime(&datestruct);
> 
> There were a few places where this sequence was used: gmtime converts
> time_t into a struct tm in UTC, while mktime converts a struct tm in
> the local timezone into time_t.  I changed gmtime() to localtime().
> 
> 
> I still need to do more testing on this, but you put a lot of work into
> this patch, and thank you very much.  It has been applied with changes.
> 
> - Chris
> 
> 
> ------------------------------------------------------------------------------
> The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
> production scanning environment may not be a perfect world - but thanks to
> Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
> Series Scanner you'll get full speed at 300 dpi even with all image 
> processing features enabled. http://p.sf.net/sfu/kodak-com
> _______________________________________________
> Barry-devel mailing list
> Barry-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/barry-devel

-- 
Nicolas VIVIEN


------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Barry-devel mailing list
Barry-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/barry-devel

Reply via email to