>Mi Sep 10 2008 11:26:31 EDT von Chenthill in 0000000000.Sent Items> an
>Patrick Ohly  
>Betreff: Re: [Evolution-hackers] Removing libical fork, moving to new
>upstream?
>
>
>>>
>>> > How would you feel about a global flag which tells libical how to
>>> > allocate memory?
>>>
>>> The problem with that is that it is not possible to mix code which uses
>>> the old and the new semantic. For example, a program or library which
>>> uses libical directly, using the old semantic, couldn't be combined with
>>> the Evolution libraries.
>>

>
>Yes right. Its not possible to have the old semantic with changed memory
>allocation.
>
>>>
>>> To let old and new code coexists I would suggest the following approach:
>>>      1. The Evolution patch gets applied, making the core functions safe
>>>         to use.
>>>      2. The function implementations whose semantic has changed get
>>>         renamed; I kind of like the _r suffix, but _alloc or _copy would
>>>         also work.
>>>      3. Under the old names small wrappers are added which establish the
>>>         old behavior again by copying the string into the ring buffer
>>>         and freeing the dynamically allocated one: this incurs some
>>>         overhead, but usage of these versions of the calls is
>>>         discouraged anyway. By using function attributes it would be
>>>         possible to trigger deprecation warnings for code which still
>>>         uses them.
>>>      4. In the header file both variants are declared.
>>>      5. In addition, ical.h also redefines the old names to the new
>>>         names if the HANDLE_LIBICAL_MEMORY define is set: Evolution code
>>>         already does that and therefore continues to work with such a
>>>         modified upstream libical without source code changes.
>>>
>>> I personally would prefer to avoid step 5 and rather do a search/replace
>>> in Evolution, but Chenthill didn't like that.
>>

>Since we do really want to remove the fork and pick up packages from
>upstream, I can change the apis in evolution related packages if a new
>set of apis with some suffix is provided from libical upstream.
>
>The old patch is attached with bug 516408. You can find the patches at,
>
>http://svn.gnome.org/viewvc/libical?view=revision&revision=633
>and
>http://svn.gnome.org/viewvc/libical?view=revision&revision=637
>
>
>thanks, Chenthill.
>
>
>



Since it doesn't make sense imho to mix old style and new style api calls in
one application imho, and I hink we can deprecate the old style.

It also should be exeptable to drop binary compatibility; raise the
lib-version, and add one significant incompatible function here, which gets
triggered, so distributors have to recompile applications.

I think the oldstyle methods realy should just be wrappers in the headers,
and I like the idea of hiding them via an define. 

We also have the new include schematic of having libical/ical.h than
<ical.h>  maybe this could be used to do it imlicit, so no define would be
needed in the old case.

 

Wilfried Goesgens
_______________________________________________
Evolution-hackers mailing list
Evolution-hackers@gnome.org
http://mail.gnome.org/mailman/listinfo/evolution-hackers

Reply via email to