<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-14407</id>
	<title>Nabble - Opensync - Dev</title>
	<updated>2009-11-21T01:20:50Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Opensync---Dev-f14407.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Opensync---Dev-f14407.html" />
	<subtitle type="html">OpenSync</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26454859</id>
	<title>Re: Capabilities and ticket 1183.</title>
	<published>2009-11-21T01:20:50Z</published>
	<updated>2009-11-21T01:20:50Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Daniel Gollub wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Monday 09 November 2009 07:19:37 pm Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; However, I have a question:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Assume we have a group with two members M1 and M2.
&lt;br&gt;&amp;gt;&amp;gt; Member M1 supports ObjFormat F1 with capabilities CAP1, and member M2 
&lt;br&gt;&amp;gt;&amp;gt; supports ObjFormat F2 with capabilities CAP2.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The function _osync_obj_engine_mapping_find will try to compare two 
&lt;br&gt;&amp;gt;&amp;gt; changes CHANGE1 and CHANGE2 from the two members.
&lt;br&gt;&amp;gt;&amp;gt; This is done by: _osync_obj_engine_clone_and_demerge_change(CAPS2, 
&lt;br&gt;&amp;gt;&amp;gt; CHANGE1) and _osync_obj_engine_clone_and_demerge_change(CAPS1, CHANGE2).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This means, that an ObjFormat F1, which supplies a (de)merger with 
&lt;br&gt;&amp;gt;&amp;gt; capabilties CAP1, needs to be able to demerge changes of ObjFormat F2, 
&lt;br&gt;&amp;gt;&amp;gt; which it does not know.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; OSyncCapsConverter take care about converting the caps-format to something the 
&lt;br&gt;&amp;gt; demerge of F1 can handle ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; For example the vformat plugins provides a caps-format converter for vformat 
&lt;br&gt;&amp;gt; to xmlformat capabilities.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So if the caps are reported in caps-format vformat .. and the entry to compare 
&lt;br&gt;&amp;gt; is in xmlformat-contact, the caps get converted by this caps-format-converter 
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; Some guidance on how the is supposed to work would be most appreciated.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Does this help?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;Yes! Thank you very much for the explanation.
&lt;br&gt;I will see what I can do...
&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26454859&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Capabilities-and-ticket-1183.-tp26271193p26454859.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26442045</id>
	<title>Re: Capabilities and ticket 1183.</title>
	<published>2009-11-20T03:48:46Z</published>
	<updated>2009-11-20T03:48:46Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Monday 09 November 2009 07:19:37 pm Henrik /KaarPoSoft wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; However, I have a question:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Assume we have a group with two members M1 and M2.
&lt;br&gt;&amp;gt; Member M1 supports ObjFormat F1 with capabilities CAP1, and member M2 
&lt;br&gt;&amp;gt; supports ObjFormat F2 with capabilities CAP2.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The function _osync_obj_engine_mapping_find will try to compare two 
&lt;br&gt;&amp;gt; changes CHANGE1 and CHANGE2 from the two members.
&lt;br&gt;&amp;gt; This is done by: _osync_obj_engine_clone_and_demerge_change(CAPS2, 
&lt;br&gt;&amp;gt; CHANGE1) and _osync_obj_engine_clone_and_demerge_change(CAPS1, CHANGE2).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This means, that an ObjFormat F1, which supplies a (de)merger with 
&lt;br&gt;&amp;gt; capabilties CAP1, needs to be able to demerge changes of ObjFormat F2, 
&lt;br&gt;&amp;gt; which it does not know.
&lt;/div&gt;&lt;/div&gt;OSyncCapsConverter take care about converting the caps-format to something the 
&lt;br&gt;demerge of F1 can handle ...
&lt;br&gt;&lt;br&gt;For example the vformat plugins provides a caps-format converter for vformat 
&lt;br&gt;to xmlformat capabilities.
&lt;br&gt;&lt;br&gt;So if the caps are reported in caps-format vformat .. and the entry to compare 
&lt;br&gt;is in xmlformat-contact, the caps get converted by this caps-format-converter 
&lt;br&gt;...
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Some guidance on how the is supposed to work would be most appreciated.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Does this help?
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26442045&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26442045&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26442045/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Capabilities-and-ticket-1183.-tp26271193p26442045.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26378047</id>
	<title>Re: Could we have several versions of a plugin	configuration file?</title>
	<published>2009-11-16T11:34:54Z</published>
	<updated>2009-11-16T11:34:54Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Chris Frey wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Thu, Nov 12, 2009 at 04:37:21PM +0100, Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; Obviously a Frontend may have specific knowledge of specific plugins and 
&lt;br&gt;&amp;gt;&amp;gt; create an even better GUI, but it would be nice if a Frontend could 
&lt;br&gt;&amp;gt;&amp;gt; automatically create a GUI for any OpenSync plugin automatically.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; How is it possible to create a GUI for any plugin at the moment?
&lt;br&gt;&amp;gt; What if there are plugin-specific fields? &amp;nbsp;How do you label them or
&lt;br&gt;&amp;gt; describe them in the GUI?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;blueZync is actually doing this at the moment.
&lt;br&gt;Far from perfect, but a start.
&lt;br&gt;See attached screenshots.
&lt;br&gt;&lt;br&gt;The frontend simply creates a GUI based on advanced options and resources.
&lt;br&gt;&amp;gt; Would this have anything to do with these points:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: Config's AdvancedOption XML entity: Help?
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://sourceforge.net/mailarchive/forum.php?thread_name=20090221040116.GA15434%40foursquare.net&amp;forum_name=opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceforge.net/mailarchive/forum.php?thread_name=20090221040116.GA15434%40foursquare.net&amp;forum_name=opensync-devel&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: localization in plugin configs
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://sourceforge.net/mailarchive/forum.php?thread_name=20091003014003.GA7477%40foursquare.net&amp;forum_name=opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceforge.net/mailarchive/forum.php?thread_name=20091003014003.GA7477%40foursquare.net&amp;forum_name=opensync-devel&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;Those would improve the GUI which could be presented.
&lt;br&gt;&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26378047&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26378047.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26367185</id>
	<title>Re: osync_archive_save_ignored_conflict()</title>
	<published>2009-11-15T21:47:09Z</published>
	<updated>2009-11-15T21:47:09Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Friday 13 November 2009 10:33:12 pm Chris Frey wrote:
&lt;br&gt;&amp;gt; I noticed that your patch added a prototype for
&lt;br&gt;&amp;gt; osync_mapping_entry_get_member_id() to the
&lt;br&gt;&amp;gt; &amp;nbsp;opensync_mapping_entry_internals.h header.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yet that function already exists in opensync_mapping_entry.h
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Was this intended?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;No, this was not intended. I reverted it ... thanks for finding this!
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26367185&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26367185&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26367185/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26367185.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26358502</id>
	<title>Re: new printf format checks and compiler settings</title>
	<published>2009-11-15T04:01:11Z</published>
	<updated>2009-11-15T04:01:11Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Friday 13 November 2009 10:30:03 pm Chris Frey wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Thu, Nov 12, 2009 at 04:36:40PM -0500, Chris Frey wrote:
&lt;br&gt;&amp;gt; &amp;gt; I think the GCC_FORMAT_CHECK is worth it in the long run (there were lots
&lt;br&gt;&amp;gt; &amp;gt; of printf style errors in the code), but the (void*) casts are
&lt;br&gt;&amp;gt; &amp;gt; unfortunate. Anyone know of a cleaner workaround?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; After a conversation on #gcc on irc.freenode.net (thanks to segher),
&lt;br&gt;&amp;gt; I had the following enlightenment:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the C standard does not guarantee that all pointers are the same
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size on all platforms
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - for example, data pointers and function pointers can have
&lt;br&gt;&amp;gt; &amp;nbsp;differing formats
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the C standard guarantees that you can cast all pointers to void*
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and back
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the %p format string identifier only takes a void*
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - vararg functions cannot provide implicit casts, since there is
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; no prototype for the variable data
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - so in general, to be standard-C correct, you need to cast all
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %p pointers to vararg functions
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the -pedantic option makes all this show up explicitly, but in
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; most cases you don't need it, at least with gcc
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Basically there's no way around it, except disabling -pedantic in your
&lt;br&gt;&amp;gt; compiles, or adding (void*) casts to all %p pointers.
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;/div&gt;Thank you very much for sharing this knowledge!
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26358502&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26358502&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26358502/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/new-printf-format-checks-and-compiler-settings-tp26326915p26358502.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26348439</id>
	<title>Re: mozilla-format FORMAT plugin?</title>
	<published>2009-11-14T01:06:34Z</published>
	<updated>2009-11-14T01:06:34Z</updated>
	<author>
		<name>Graham Cobb-4</name>
	</author>
	<content type="html">On Tue, Nov 10, 2009 at 01:46:46AM +0100, Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt; Now the question is: Where to put the definition of the C struct and the 
&lt;br&gt;&amp;gt; wrapping functions?
&lt;br&gt;&lt;br&gt;My suggestion would be to put the struct and wrapping functions in a
&lt;br&gt;completely separate library (nothing to do with Opensync) which you then use
&lt;br&gt;from both the format plugin and the sync plugin.
&lt;br&gt;&lt;br&gt;Your new library would, of course, become a dependency of the plugins. &amp;nbsp;I
&lt;br&gt;think there would be three options for distributing it:
&lt;br&gt;&lt;br&gt;1) Statically link it and don't distribute it at all. &amp;nbsp;This would require
&lt;br&gt;getting Daniel to create you somewhere in the tree to store the library but
&lt;br&gt;you wouldn't be shipping the code at all. &amp;nbsp;CMake magic could compile it
&lt;br&gt;whenever needed by either plugin.
&lt;br&gt;&lt;br&gt;2) Completely separate it from OpenSync: build it and distribute it
&lt;br&gt;separately and just make sure the CMake scripts for the two plugins
&lt;br&gt;correctly check for it being installed. &amp;nbsp;A variant of this would be to ask
&lt;br&gt;Daniel to still host it in the OpenSync SVN somewhere but build it and
&lt;br&gt;distribute it separately (a bit like libsyncml).
&lt;br&gt;&lt;br&gt;3) Have it built and installed as part of the building of your plugins -- so
&lt;br&gt;building either your format plugin or your sync plugin would require
&lt;br&gt;previously building and installing your new library. &amp;nbsp;Easy enough to do
&lt;br&gt;manually although it would be an extra step for anyone who wanted to build
&lt;br&gt;your plugins.
&lt;br&gt;&lt;br&gt;Graham
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26348439&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/mozilla-format-FORMAT-plugin--tp26276439p26348439.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26344766</id>
	<title>Re: Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-13T14:47:57Z</published>
	<updated>2009-11-13T14:47:57Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">On Thu, Nov 12, 2009 at 04:37:21PM +0100, Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt; Obviously a Frontend may have specific knowledge of specific plugins and 
&lt;br&gt;&amp;gt; create an even better GUI, but it would be nice if a Frontend could 
&lt;br&gt;&amp;gt; automatically create a GUI for any OpenSync plugin automatically.
&lt;br&gt;&lt;br&gt;How is it possible to create a GUI for any plugin at the moment?
&lt;br&gt;What if there are plugin-specific fields? &amp;nbsp;How do you label them or
&lt;br&gt;describe them in the GUI?
&lt;br&gt;&lt;br&gt;Would this have anything to do with these points:
&lt;br&gt;&lt;br&gt;Subject: Config's AdvancedOption XML entity: Help?
&lt;br&gt;&lt;a href=&quot;http://sourceforge.net/mailarchive/forum.php?thread_name=20090221040116.GA15434%40foursquare.net&amp;forum_name=opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceforge.net/mailarchive/forum.php?thread_name=20090221040116.GA15434%40foursquare.net&amp;forum_name=opensync-devel&lt;/a&gt;&lt;br&gt;&lt;br&gt;Subject: localization in plugin configs
&lt;br&gt;&lt;a href=&quot;http://sourceforge.net/mailarchive/forum.php?thread_name=20091003014003.GA7477%40foursquare.net&amp;forum_name=opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceforge.net/mailarchive/forum.php?thread_name=20091003014003.GA7477%40foursquare.net&amp;forum_name=opensync-devel&lt;/a&gt;&lt;br&gt;&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26344766&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26344766.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26349342</id>
	<title>[RFC][PATCH][API change] long long patch</title>
	<published>2009-11-13T13:40:12Z</published>
	<updated>2009-11-13T13:40:12Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;At long last, I present my long long patch, which also changes the various
&lt;br&gt;ID variables into typedefs in the process. &amp;nbsp;I think this makes the code
&lt;br&gt;cleaner, and easier to change in the future. &amp;nbsp;So even if we don't want
&lt;br&gt;to change mappingids, memberids, etc to ints, we should keep the
&lt;br&gt;typedefs in my opinion.
&lt;br&gt;&lt;br&gt;This is a Request for Comments patch only. &amp;nbsp;If it is satisfactory, I
&lt;br&gt;can apply it in a few days.
&lt;br&gt;&lt;br&gt;It is fairly large, but the changes are as limited in scope as possible.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;[PATCH] Removed all unnecessary long longs from IDs, and gave IDs typedef names
&lt;br&gt;&lt;br&gt;The new ID types are:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; typedef int osync_memberid;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; typedef int osync_mappingid;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; typedef int osync_groupid;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; typedef long long int osync_archiveid;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; typedef long long int osync_messageid;
&lt;br&gt;&lt;br&gt;osync_archiveid is 64 bits because the ID is the row ID of the underlying
&lt;br&gt;database. &amp;nbsp;This must match the database used.
&lt;br&gt;&lt;br&gt;Note that there is a bug in the implementation where the above 64 bit
&lt;br&gt;IDs are crammed into a 32 bit pointer on 32 bit systems. &amp;nbsp;The
&lt;br&gt;implementation should be fixed, not the size of the osync_archiveid.
&lt;br&gt;Look for FIXME's in the code.
&lt;br&gt;&lt;br&gt;osync_messageid is 64 bits because 6 bytes are used for the time in
&lt;br&gt;seconds and microseconds, and the lower 2 bytes are a random number,
&lt;br&gt;to create a unique IPC message ID.
&lt;br&gt;&lt;br&gt;The other 3 IDs usually start at 1 or 0 and increment from there,
&lt;br&gt;and int should be completely sufficient for them.
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;opensync/archive/opensync_archive.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 51 +++++++++++---------
&lt;br&gt;&amp;nbsp;opensync/archive/opensync_archive_internals.h &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;8 ++--
&lt;br&gt;&amp;nbsp;opensync/client/opensync_client.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;4 +-
&lt;br&gt;&amp;nbsp;opensync/client/opensync_client_proxy.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;6 +-
&lt;br&gt;&amp;nbsp;opensync/engine/opensync_engine.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 10 ++--
&lt;br&gt;&amp;nbsp;opensync/engine/opensync_engine_private.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/engine/opensync_mapping_engine.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 12 ++--
&lt;br&gt;&amp;nbsp;opensync/engine/opensync_mapping_engine.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/engine/opensync_obj_engine.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 12 ++--
&lt;br&gt;&amp;nbsp;opensync/engine/opensync_sink_engine.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/group/opensync_group.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 14 +++---
&lt;br&gt;&amp;nbsp;opensync/group/opensync_group.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;6 +-
&lt;br&gt;&amp;nbsp;opensync/group/opensync_group_env.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;8 ++--
&lt;br&gt;&amp;nbsp;opensync/group/opensync_group_env_private.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/group/opensync_group_internals.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/group/opensync_group_private.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/group/opensync_member.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;4 +-
&lt;br&gt;&amp;nbsp;opensync/group/opensync_member.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/group/opensync_member_internals.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/ipc/opensync_message.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;4 +-
&lt;br&gt;&amp;nbsp;opensync/ipc/opensync_message_internals.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;4 +-
&lt;br&gt;&amp;nbsp;opensync/ipc/opensync_message_private.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/ipc/opensync_queue.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;6 +-
&lt;br&gt;&amp;nbsp;opensync/ipc/opensync_queue_private.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;4 +-
&lt;br&gt;&amp;nbsp;opensync/mapping/opensync_mapping.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;6 +-
&lt;br&gt;&amp;nbsp;opensync/mapping/opensync_mapping.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;6 +-
&lt;br&gt;&amp;nbsp;opensync/mapping/opensync_mapping_entry.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;8 ++--
&lt;br&gt;&amp;nbsp;opensync/mapping/opensync_mapping_entry.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;8 ++--
&lt;br&gt;&amp;nbsp;.../mapping/opensync_mapping_entry_internals.h &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;6 +-
&lt;br&gt;&amp;nbsp;opensync/mapping/opensync_mapping_internals.h &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;opensync/mapping/opensync_mapping_table.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 14 +++--
&lt;br&gt;&amp;nbsp;opensync/mapping/opensync_mapping_table.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;4 +-
&lt;br&gt;&amp;nbsp;opensync/opensync.h &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;5 ++
&lt;br&gt;&amp;nbsp;opensync/plugin/opensync_plugin_info_private.h &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;tests/archive-tests/check_archive.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;8 ++--
&lt;br&gt;&amp;nbsp;tests/mock-plugin/mock_sync.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp;wrapper/opensync-group.i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;4 +-
&lt;br&gt;&amp;nbsp;37 files changed, 129 insertions(+), 117 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/opensync/archive/opensync_archive.c b/opensync/archive/opensync_archive.c
&lt;br&gt;index d3fbe8a..16e0d87 100644
&lt;br&gt;--- a/opensync/archive/opensync_archive.c
&lt;br&gt;+++ b/opensync/archive/opensync_archive.c
&lt;br&gt;@@ -204,12 +204,12 @@ void osync_archive_unref(OSyncArchive *archive)
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-osync_bool osync_archive_save_data(OSyncArchive *archive, long long int id, const char *objtype, const char *data, unsigned int size, OSyncError **error)
&lt;br&gt;+osync_bool osync_archive_save_data(OSyncArchive *archive, osync_mappingid id, const char *objtype, const char *data, unsigned int size, OSyncError **error)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %lli, %s, %p, %u, %p)&amp;quot;, __func__, archive, id, objtype, data, size, error);
&lt;br&gt;+	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %i, %s, %p, %u, %p)&amp;quot;, __func__, archive, id, objtype, data, size, error);
&lt;br&gt;&amp;nbsp;	osync_assert(archive);
&lt;br&gt;&amp;nbsp;	osync_assert(data);
&lt;br&gt;&amp;nbsp;	osync_assert(size);
&lt;br&gt;@@ -219,7 +219,7 @@ osync_bool osync_archive_save_data(OSyncArchive *archive, long long int id, cons
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	// FIXME: Avoid subselect - this query needs up to 0.5s
&lt;br&gt;&amp;nbsp;	escaped_objtype = osync_db_sql_escape(objtype);
&lt;br&gt;-	query = osync_strdup_printf(&amp;quot;REPLACE INTO tbl_archive (objtype, mappingid, data) VALUES('%s', %lli, ?)&amp;quot;, escaped_objtype, id);
&lt;br&gt;+	query = osync_strdup_printf(&amp;quot;REPLACE INTO tbl_archive (objtype, mappingid, data) VALUES('%s', %i, ?)&amp;quot;, escaped_objtype, id);
&lt;br&gt;&amp;nbsp;	osync_free(escaped_objtype);
&lt;br&gt;&amp;nbsp;	escaped_objtype = NULL;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -281,14 +281,14 @@ int osync_archive_load_data(OSyncArchive *archive, const char *uid, const char *
&lt;br&gt;&amp;nbsp;	return -1;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_archive_save_change(OSyncArchive *archive, long long int id, const char *uid, const char *objtype, long long int mappingid, long long int memberid, const char *objengine, OSyncError **error)
&lt;br&gt;+osync_archiveid osync_archive_save_change(OSyncArchive *archive, osync_archiveid id, const char *uid, const char *objtype, osync_mappingid mappingid, osync_memberid memberid, const char *objengine, OSyncError **error)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_uid = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objengine = NULL;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %lli, %s, %s, %lli, %lli, %p, %p)&amp;quot;, __func__, archive, id, uid, objtype, mappingid, memberid, __NULLSTR(objengine), error);
&lt;br&gt;+	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %lli, %s, %s, %i, %i, %p, %p)&amp;quot;, __func__, archive, id, uid, objtype, mappingid, memberid, __NULLSTR(objengine), error);
&lt;br&gt;&amp;nbsp;	osync_assert(archive);
&lt;br&gt;&amp;nbsp;	osync_assert(uid);
&lt;br&gt;&amp;nbsp;	osync_assert(objtype);
&lt;br&gt;@@ -302,9 +302,9 @@ long long int osync_archive_save_change(OSyncArchive *archive, long long int id,
&lt;br&gt;&amp;nbsp;	escaped_objengine = osync_db_sql_escape(objengine);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	if (!id) {
&lt;br&gt;-		query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changes (objtype, uid, mappingid, memberid, objengine) VALUES('%s', '%s', '%lli', '%lli', '%s')&amp;quot;, escaped_objtype, escaped_uid, mappingid, memberid, objengine);
&lt;br&gt;+		query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changes (objtype, uid, mappingid, memberid, objengine) VALUES('%s', '%s', '%i', '%i', '%s')&amp;quot;, escaped_objtype, escaped_uid, mappingid, memberid, objengine);
&lt;br&gt;&amp;nbsp;	} else {
&lt;br&gt;-		query = osync_strdup_printf(&amp;quot;UPDATE tbl_changes SET uid='%s', mappingid='%lli', memberid='%lli', objengine='%s' WHERE objtype='%s' AND id=%lli&amp;quot;, escaped_uid, mappingid, memberid, escaped_objengine, escaped_objtype, id);
&lt;br&gt;+		query = osync_strdup_printf(&amp;quot;UPDATE tbl_changes SET uid='%s', mappingid='%i', memberid='%i', objengine='%s' WHERE objtype='%s' AND id=%lli&amp;quot;, escaped_uid, mappingid, memberid, escaped_objengine, escaped_objtype, id);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;	osync_free(escaped_objengine);
&lt;br&gt;&amp;nbsp;	osync_free(escaped_objtype);
&lt;br&gt;@@ -331,7 +331,7 @@ long long int osync_archive_save_change(OSyncArchive *archive, long long int id,
&lt;br&gt;&amp;nbsp;	return 0;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-osync_bool osync_archive_delete_change(OSyncArchive *archive, long long int id, const char *objtype, OSyncError **error)
&lt;br&gt;+osync_bool osync_archive_delete_change(OSyncArchive *archive, osync_archiveid id, const char *objtype, OSyncError **error)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;@@ -366,7 +366,9 @@ osync_bool osync_archive_load_changes(OSyncArchive *archive, const char *objtype
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;&amp;nbsp;	OSyncList *result = NULL, *row = NULL, *column = NULL;
&lt;br&gt;-	long long int id = 0, mappingid = 0, memberid = 0;
&lt;br&gt;+	osync_archiveid id = 0;
&lt;br&gt;+	osync_mappingid mappingid = 0;
&lt;br&gt;+	osync_memberid memberid = 0;
&lt;br&gt;&amp;nbsp;	const char *uid = NULL;
&lt;br&gt;&amp;nbsp;	const char *value_str = NULL;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -420,21 +422,23 @@ osync_bool osync_archive_load_changes(OSyncArchive *archive, const char *objtype
&lt;br&gt;&amp;nbsp;			osync_error_set(error, OSYNC_ERROR_GENERIC, &amp;quot;Database table tbl_changes corrupt, mappingid is NULL&amp;quot;);
&lt;br&gt;&amp;nbsp;			goto error;
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;-		mappingid = g_ascii_strtoull(value_str, NULL, 0);
&lt;br&gt;+		mappingid = strtoul(value_str, NULL, 0);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		value_str = osync_list_nth_data(column, 3);
&lt;br&gt;&amp;nbsp;		if (!value_str) {
&lt;br&gt;&amp;nbsp;			osync_error_set(error, OSYNC_ERROR_GENERIC, &amp;quot;Database table tbl_changes corrupt, memberid is NULL&amp;quot;);
&lt;br&gt;&amp;nbsp;			goto error;
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;-		memberid = g_ascii_strtoull(value_str, NULL, 0);
&lt;br&gt;+		memberid = strtoul(value_str, NULL, 0);
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;+		// FIXME - this (int) cast throws away part of the id's 64 bits
&lt;br&gt;+		// and these 64 bits are governed by the DB layer's row ID
&lt;br&gt;&amp;nbsp;		*ids = osync_list_append((*ids), GINT_TO_POINTER((int)id));
&lt;br&gt;&amp;nbsp;		*uids = osync_list_append((*uids), osync_strdup(uid));
&lt;br&gt;-		*mappingids = osync_list_append((*mappingids), GINT_TO_POINTER((int)mappingid));
&lt;br&gt;-		*memberids = osync_list_append((*memberids), GINT_TO_POINTER((int)memberid));
&lt;br&gt;+		*mappingids = osync_list_append((*mappingids), GINT_TO_POINTER(mappingid));
&lt;br&gt;+		*memberids = osync_list_append((*memberids), GINT_TO_POINTER(memberid));
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;-		osync_trace(TRACE_INTERNAL, &amp;quot;Loaded change with uid %s, mappingid %lli from member %lli&amp;quot;, uid, mappingid, memberid);
&lt;br&gt;+		osync_trace(TRACE_INTERNAL, &amp;quot;Loaded change with uid %s, mappingid %i from member %i&amp;quot;, uid, mappingid, memberid);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_db_free_list(result);	
&lt;br&gt;@@ -483,7 +487,8 @@ osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const cha
&lt;br&gt;&amp;nbsp;	OSyncList *result = NULL, *row = NULL, *column = NULL;
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;-	long long int mappingid = 0, memberid = 0;
&lt;br&gt;+	osync_mappingid mappingid = 0;
&lt;br&gt;+	osync_memberid memberid = 0;
&lt;br&gt;&amp;nbsp;	int changetype = 0;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %s, %p, %p)&amp;quot;, __func__, archive, objtype, mappingids, error);
&lt;br&gt;@@ -516,11 +521,11 @@ osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const cha
&lt;br&gt;&amp;nbsp;		mappingid = atoi(osync_list_nth_data(column, 1));
&lt;br&gt;&amp;nbsp;		changetype = atoi(osync_list_nth_data(column, 2));
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;-		*memberids = osync_list_append((*memberids), GINT_TO_POINTER((int)memberid));
&lt;br&gt;-		*mappingids = osync_list_append((*mappingids), GINT_TO_POINTER((int)mappingid));
&lt;br&gt;-		*changetypes = osync_list_append((*changetypes), GINT_TO_POINTER((int)changetype));
&lt;br&gt;+		*memberids = osync_list_append((*memberids), GINT_TO_POINTER(memberid));
&lt;br&gt;+		*mappingids = osync_list_append((*mappingids), GINT_TO_POINTER(mappingid));
&lt;br&gt;+		*changetypes = osync_list_append((*changetypes), GINT_TO_POINTER(changetype));
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;-		osync_trace(TRACE_INTERNAL, &amp;quot;Loaded ignored mapping with mappingid %lli&amp;quot;, mappingid);
&lt;br&gt;+		osync_trace(TRACE_INTERNAL, &amp;quot;Loaded ignored mapping with mappingid %i&amp;quot;, mappingid);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_db_free_list(result);	
&lt;br&gt;@@ -532,11 +537,11 @@ osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const cha
&lt;br&gt;&amp;nbsp;	return FALSE;	
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int memberid, long long int mappingid, OSyncChangeType changetype, OSyncError **error)
&lt;br&gt;+osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, osync_memberid memberid, osync_mappingid mappingid, OSyncChangeType changetype, OSyncError **error)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;-	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %s, %lli, %lli, %p)&amp;quot;, __func__, archive, objtype, memberid, mappingid, error);
&lt;br&gt;+	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %s, %i, %i, %p)&amp;quot;, __func__, archive, objtype, memberid, mappingid, error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_assert(archive);
&lt;br&gt;&amp;nbsp;	osync_assert(objtype);
&lt;br&gt;@@ -545,7 +550,7 @@ osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char
&lt;br&gt;&amp;nbsp;		goto error;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	escaped_objtype = osync_db_sql_escape(objtype);
&lt;br&gt;-	query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changelog (objtype, memberid, mappingid, changetype) VALUES('%s', '%lli', '%lli', '%i')&amp;quot;, escaped_objtype, memberid, mappingid, changetype);
&lt;br&gt;+	query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changelog (objtype, memberid, mappingid, changetype) VALUES('%s', '%i', '%i', '%i')&amp;quot;, escaped_objtype, memberid, mappingid, changetype);
&lt;br&gt;&amp;nbsp;	osync_free(escaped_objtype);
&lt;br&gt;&amp;nbsp;	escaped_objtype = NULL;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -556,7 +561,7 @@ osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_free(query);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	osync_trace(TRACE_EXIT, &amp;quot;%s: %lli&amp;quot;, __func__, mappingid);
&lt;br&gt;+	osync_trace(TRACE_EXIT, &amp;quot;%s: %i&amp;quot;, __func__, mappingid);
&lt;br&gt;&amp;nbsp;	return TRUE;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp; error:
&lt;br&gt;diff --git a/opensync/archive/opensync_archive_internals.h b/opensync/archive/opensync_archive_internals.h
&lt;br&gt;index 4757f88..56e8cf4 100644
&lt;br&gt;--- a/opensync/archive/opensync_archive_internals.h
&lt;br&gt;+++ b/opensync/archive/opensync_archive_internals.h
&lt;br&gt;@@ -80,7 +80,7 @@ OSYNC_TEST_EXPORT osync_bool osync_archive_load_changes(OSyncArchive *archive, c
&lt;br&gt;&amp;nbsp; * @param error Pointer to an error struct
&lt;br&gt;&amp;nbsp; * @return Returns TRUE on success otherwise FALSE
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_TEST_EXPORT osync_bool osync_archive_save_data(OSyncArchive *archive, long long int id, const char *objtype, const char *data, unsigned int size, OSyncError **error);
&lt;br&gt;+OSYNC_TEST_EXPORT osync_bool osync_archive_save_data(OSyncArchive *archive, osync_mappingid id, const char *objtype, const char *data, unsigned int size, OSyncError **error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Loads data of an entry which is stored in the group archive database (blob).
&lt;br&gt;@@ -108,7 +108,7 @@ OSYNC_TEST_EXPORT int osync_archive_load_data(OSyncArchive *archive, const char
&lt;br&gt;&amp;nbsp; * @param error Pointer to an error struct
&lt;br&gt;&amp;nbsp; * @return Returns number of entries in archive group database. 0 on error. 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_TEST_EXPORT long long int osync_archive_save_change(OSyncArchive *archive, long long int id, const char *uid, const char *objtype, long long int mappingid, long long int memberid, const char *objengine, OSyncError **error);
&lt;br&gt;+OSYNC_TEST_EXPORT osync_archiveid osync_archive_save_change(OSyncArchive *archive, osync_archiveid id, const char *uid, const char *objtype, osync_mappingid mappingid, osync_memberid memberid, const char *objengine, OSyncError **error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Deletes an entry from a group archive.
&lt;br&gt;@@ -119,7 +119,7 @@ OSYNC_TEST_EXPORT long long int osync_archive_save_change(OSyncArchive *archive,
&lt;br&gt;&amp;nbsp; * @param error Pointer to an error struct
&lt;br&gt;&amp;nbsp; * @return TRUE if the specified change was deleted successfully, otherwise FALSE
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-osync_bool osync_archive_delete_change(OSyncArchive *archive, long long int id, const char *objtype, OSyncError **error);
&lt;br&gt;+osync_bool osync_archive_delete_change(OSyncArchive *archive, osync_archiveid id, const char *objtype, OSyncError **error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Delete all changes from group archive for a certain object type.
&lt;br&gt;@@ -155,7 +155,7 @@ osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const cha
&lt;br&gt;&amp;nbsp; * @param error Pointer to an error struct
&lt;br&gt;&amp;nbsp; * @return Returns TRUE on success, FALSE otherwise 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int memberid, long long int mappingid, OSyncChangeType changetype, OSyncError **error);
&lt;br&gt;+osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, osync_memberid memberid, osync_mappingid mappingid, OSyncChangeType changetype, OSyncError **error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Deletes all ignored conflict entries of the changelog with the objtype.
&lt;br&gt;diff --git a/opensync/client/opensync_client.c b/opensync/client/opensync_client.c
&lt;br&gt;index 4b77fa8..89079ae 100644
&lt;br&gt;--- a/opensync/client/opensync_client.c
&lt;br&gt;+++ b/opensync/client/opensync_client.c
&lt;br&gt;@@ -783,8 +783,8 @@ static osync_bool _osync_client_handle_initialize(OSyncClient *client, OSyncMess
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;#ifdef OPENSYNC_UNITTESTS
&lt;br&gt;&amp;nbsp;	{
&lt;br&gt;-		long long int memberid;
&lt;br&gt;-		if (!osync_message_read_long_long_int(message, &amp;memberid, error)) // Introduced (only) for testing/debugging purpose (mock-sync)
&lt;br&gt;+		osync_memberid memberid;
&lt;br&gt;+		if (!osync_message_read_int(message, &amp;memberid, error)) // Introduced (only) for testing/debugging purpose (mock-sync)
&lt;br&gt;&amp;nbsp;			goto error;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		client-&amp;gt;plugin_info-&amp;gt;memberid = memberid;
&lt;br&gt;diff --git a/opensync/client/opensync_client_proxy.c b/opensync/client/opensync_client_proxy.c
&lt;br&gt;index bbe0b24..666942a 100644
&lt;br&gt;--- a/opensync/client/opensync_client_proxy.c
&lt;br&gt;+++ b/opensync/client/opensync_client_proxy.c
&lt;br&gt;@@ -1068,7 +1068,7 @@ osync_bool osync_client_proxy_spawn(OSyncClientProxy *proxy, OSyncStartType type
&lt;br&gt;&amp;nbsp;					osync_queue_disconnect(read2, error);
&lt;br&gt;&amp;nbsp;						
&lt;br&gt;&amp;nbsp;					osync_trace(TRACE_INTERNAL, &amp;quot;About to exec osplugin&amp;quot;);
&lt;br&gt;-					//char *memberstring = g_strdup_printf(&amp;quot;%lli&amp;quot;, osync_member_get_id(proxy-&amp;gt;member));
&lt;br&gt;+					//char *memberstring = g_strdup_printf(&amp;quot;%i&amp;quot;, osync_member_get_id(proxy-&amp;gt;member));
&lt;br&gt;&amp;nbsp;					//execlp(&amp;quot;osplugin&amp;quot;, &amp;quot;osplugin&amp;quot;, osync_group_get_configdir(osync_member_get_group(osync_proxy_get_member(proxy)), memberstring, NULL);
&lt;br&gt;&amp;nbsp;					readfd = osync_strdup_printf(&amp;quot;%i&amp;quot;, osync_queue_get_fd(read1));
&lt;br&gt;&amp;nbsp;					writefd = osync_strdup_printf(&amp;quot;%i&amp;quot;, osync_queue_get_fd(write2));
&lt;br&gt;@@ -1293,7 +1293,7 @@ osync_bool osync_client_proxy_initialize(OSyncClientProxy *proxy, initialize_cb
&lt;br&gt;&amp;nbsp;	int haspluginconfig = config ? TRUE : FALSE;
&lt;br&gt;&amp;nbsp;	OSyncMessage *message = NULL;
&lt;br&gt;&amp;nbsp;#ifdef OPENSYNC_UNITTESTS
&lt;br&gt;-	long long int memberid = 0;
&lt;br&gt;+	osync_memberid memberid = 0;
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %p, %p, %s, %s, %s, %s, %s, %p, %p)&amp;quot;, __func__, proxy, callback, userdata, formatdir, plugindir, plugin, groupname, configdir, config, error);
&lt;br&gt;@@ -1355,7 +1355,7 @@ osync_bool osync_client_proxy_initialize(OSyncClientProxy *proxy, initialize_cb
&lt;br&gt;&amp;nbsp;	if (proxy-&amp;gt;member)
&lt;br&gt;&amp;nbsp;		memberid = osync_member_get_id(proxy-&amp;gt;member);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	osync_message_write_long_long_int(message, memberid, error);
&lt;br&gt;+	osync_message_write_int(message, memberid, error);
&lt;br&gt;&amp;nbsp;#endif	
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	osync_message_set_handler(message, _osync_client_proxy_init_handler, ctx);
&lt;br&gt;diff --git a/opensync/engine/opensync_engine.c b/opensync/engine/opensync_engine.c
&lt;br&gt;index ccd6e40..3e0a72b 100644
&lt;br&gt;--- a/opensync/engine/opensync_engine.c
&lt;br&gt;+++ b/opensync/engine/opensync_engine.c
&lt;br&gt;@@ -195,7 +195,7 @@ static void _osync_engine_receive_change(OSyncClientProxy *proxy, void *userdata
&lt;br&gt;&amp;nbsp;	OSyncError *error = NULL;
&lt;br&gt;&amp;nbsp;	osync_bool found = FALSE;
&lt;br&gt;&amp;nbsp;	OSyncMember *member = NULL;
&lt;br&gt;-	long long int memberid = 0;
&lt;br&gt;+	osync_memberid memberid = 0;
&lt;br&gt;&amp;nbsp;	const char *uid = NULL;
&lt;br&gt;&amp;nbsp;	OSyncChangeType changetype = 0;
&lt;br&gt;&amp;nbsp;	const char *format = NULL;
&lt;br&gt;@@ -217,7 +217,7 @@ static void _osync_engine_receive_change(OSyncClientProxy *proxy, void *userdata
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	objtype_sink = osync_member_find_objtype_sink(member, objtype);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	osync_trace(TRACE_INTERNAL, &amp;quot;Received change %s, changetype %i, format %s, objtype %s from member %lli&amp;quot;, uid, changetype, format, objtype, memberid);
&lt;br&gt;+	osync_trace(TRACE_INTERNAL, &amp;quot;Received change %s, changetype %i, format %s, objtype %s from member %i&amp;quot;, uid, changetype, format, objtype, memberid);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	data = osync_change_get_data(change);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -233,7 +233,7 @@ static void _osync_engine_receive_change(OSyncClientProxy *proxy, void *userdata
&lt;br&gt;&amp;nbsp;		objtype = osync_objformat_get_objtype(detected_format);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	member_objtype = osync_strdup_printf(&amp;quot;%lli_%s&amp;quot;, memberid, objtype); 
&lt;br&gt;+	member_objtype = osync_strdup_printf(&amp;quot;%i_%s&amp;quot;, memberid, objtype); 
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	/* Convert the format to the internal format */
&lt;br&gt;&amp;nbsp;	internalFormat = _osync_engine_get_internal_format(engine, objtype);
&lt;br&gt;@@ -1127,7 +1127,7 @@ void osync_engine_trace_multiply_summary(OSyncEngine *engine)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	OSyncList *o;
&lt;br&gt;&amp;nbsp;	unsigned int added, modified, deleted, unmodified, unknown, total, n;
&lt;br&gt;-	long long int memberid;
&lt;br&gt;+	osync_memberid memberid;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	if (!osync_trace_is_enabled())
&lt;br&gt;&amp;nbsp;		return;
&lt;br&gt;@@ -1176,7 +1176,7 @@ void osync_engine_trace_multiply_summary(OSyncEngine *engine)
&lt;br&gt;&amp;nbsp;				}
&lt;br&gt;&amp;nbsp;			}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-			osync_trace(TRACE_INTERNAL, &amp;quot;\tMember: %lli &amp;quot;
&lt;br&gt;+			osync_trace(TRACE_INTERNAL, &amp;quot;\tMember: %i &amp;quot;
&lt;br&gt;&amp;nbsp;					&amp;quot;added:%u modified:%u deleted:%u &amp;quot;
&lt;br&gt;&amp;nbsp;					&amp;quot;(unmodified:%u unknown:%u)&amp;quot;,
&lt;br&gt;&amp;nbsp;					memberid, added, modified, deleted, unmodified, unknown);
&lt;br&gt;diff --git a/opensync/engine/opensync_engine_private.h b/opensync/engine/opensync_engine_private.h
&lt;br&gt;index bee860c..7e4cf8b 100644
&lt;br&gt;--- a/opensync/engine/opensync_engine_private.h
&lt;br&gt;+++ b/opensync/engine/opensync_engine_private.h
&lt;br&gt;@@ -176,7 +176,7 @@ struct OSyncEngineMappingUpdate {
&lt;br&gt;&amp;nbsp;	/** The type of the status update */
&lt;br&gt;&amp;nbsp;	OSyncEngineMappingEvent type;
&lt;br&gt;&amp;nbsp;	/** If the mapping was already solved, this will have the id if the winning entry */
&lt;br&gt;-	long long int winner;
&lt;br&gt;+	osync_memberid winner;
&lt;br&gt;&amp;nbsp;	/** The mapping for which the status update is */
&lt;br&gt;&amp;nbsp;	OSyncMapping *mapping;
&lt;br&gt;&amp;nbsp;	/** If the status was a error, this error will be set */
&lt;br&gt;diff --git a/opensync/engine/opensync_mapping_engine.c b/opensync/engine/opensync_mapping_engine.c
&lt;br&gt;index a40d02f..6c81066 100644
&lt;br&gt;--- a/opensync/engine/opensync_mapping_engine.c
&lt;br&gt;+++ b/opensync/engine/opensync_mapping_engine.c
&lt;br&gt;@@ -284,7 +284,7 @@ osync_bool osync_mapping_engine_multiply(OSyncMappingEngine *engine, OSyncError
&lt;br&gt;&amp;nbsp;	osync_assert(engine);
&lt;br&gt;&amp;nbsp;	osync_assert(engine-&amp;gt;mapping);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p(%lli), %p)&amp;quot;, __func__, engine, osync_mapping_get_id(engine-&amp;gt;mapping), error);
&lt;br&gt;+	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p(%i), %p)&amp;quot;, __func__, engine, osync_mapping_get_id(engine-&amp;gt;mapping), error);
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;	if (engine-&amp;gt;synced) {
&lt;br&gt;&amp;nbsp;		osync_trace(TRACE_EXIT, &amp;quot;%s: No need to multiply. Already synced&amp;quot;, __func__);
&lt;br&gt;@@ -578,7 +578,7 @@ OSyncChange *osync_mapping_engine_nth_change(OSyncMappingEngine *engine, unsigne
&lt;br&gt;&amp;nbsp;	return NULL;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-OSyncChange *osync_mapping_engine_member_change(OSyncMappingEngine *engine, long long int memberid)
&lt;br&gt;+OSyncChange *osync_mapping_engine_member_change(OSyncMappingEngine *engine, osync_memberid memberid)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	OSyncList *e = NULL;
&lt;br&gt;&amp;nbsp;	osync_assert(engine);
&lt;br&gt;@@ -620,7 +620,7 @@ osync_bool osync_mapping_engine_ignore(OSyncMappingEngine *engine, OSyncError **
&lt;br&gt;&amp;nbsp;	OSyncObjEngine *objengine = NULL;
&lt;br&gt;&amp;nbsp;	OSyncArchive *archive = NULL;
&lt;br&gt;&amp;nbsp;	char *objtype = NULL;
&lt;br&gt;-	long long int id = 0;
&lt;br&gt;+	osync_mappingid id = 0;
&lt;br&gt;&amp;nbsp;	OSyncList *c = NULL;
&lt;br&gt;&amp;nbsp;	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %p)&amp;quot;, __func__, engine, error);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -705,15 +705,15 @@ osync_bool osync_mapping_engine_duplicate(OSyncMappingEngine *existingMapping, O
&lt;br&gt;&amp;nbsp;		OSyncMappingEntryEngine *entry = e-&amp;gt;data;
&lt;br&gt;&amp;nbsp;		if (entry-&amp;gt;change) {
&lt;br&gt;&amp;nbsp;			if (osync_change_get_changetype(entry-&amp;gt;change) == OSYNC_CHANGE_TYPE_MODIFIED || osync_change_get_changetype(entry-&amp;gt;change) == OSYNC_CHANGE_TYPE_ADDED) {
&lt;br&gt;-				osync_trace(TRACE_INTERNAL, &amp;quot;Appending entry %s, changetype %i from member %lli&amp;quot;, osync_change_get_uid(entry-&amp;gt;change), osync_change_get_changetype(entry-&amp;gt;change), osync_member_get_id(osync_client_proxy_get_member(entry-&amp;gt;sink_engine-&amp;gt;proxy)));
&lt;br&gt;+				osync_trace(TRACE_INTERNAL, &amp;quot;Appending entry %s, changetype %i from member %i&amp;quot;, osync_change_get_uid(entry-&amp;gt;change), osync_change_get_changetype(entry-&amp;gt;change), osync_member_get_id(osync_client_proxy_get_member(entry-&amp;gt;sink_engine-&amp;gt;proxy)));
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;				entries = osync_list_append(entries, entry);
&lt;br&gt;&amp;nbsp;			} else {
&lt;br&gt;-				osync_trace(TRACE_INTERNAL, &amp;quot;Removing entry %s, changetype %i from member %lli&amp;quot;, osync_change_get_uid(entry-&amp;gt;change), osync_change_get_changetype(entry-&amp;gt;change), osync_member_get_id(osync_client_proxy_get_member(entry-&amp;gt;sink_engine-&amp;gt;proxy)));
&lt;br&gt;+				osync_trace(TRACE_INTERNAL, &amp;quot;Removing entry %s, changetype %i from member %i&amp;quot;, osync_change_get_uid(entry-&amp;gt;change), osync_change_get_changetype(entry-&amp;gt;change), osync_member_get_id(osync_client_proxy_get_member(entry-&amp;gt;sink_engine-&amp;gt;proxy)));
&lt;br&gt;&amp;nbsp;				osync_entry_engine_update(entry, NULL);
&lt;br&gt;&amp;nbsp;			}
&lt;br&gt;&amp;nbsp;		} else {
&lt;br&gt;-			osync_trace(TRACE_INTERNAL, &amp;quot;member %lli does not have a entry&amp;quot;, osync_member_get_id(osync_client_proxy_get_member(entry-&amp;gt;sink_engine-&amp;gt;proxy)));
&lt;br&gt;+			osync_trace(TRACE_INTERNAL, &amp;quot;member %i does not have a entry&amp;quot;, osync_member_get_id(osync_client_proxy_get_member(entry-&amp;gt;sink_engine-&amp;gt;proxy)));
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;diff --git a/opensync/engine/opensync_mapping_engine.h b/opensync/engine/opensync_mapping_engine.h
&lt;br&gt;index 8655e21..cf53cc9 100644
&lt;br&gt;--- a/opensync/engine/opensync_mapping_engine.h
&lt;br&gt;+++ b/opensync/engine/opensync_mapping_engine.h
&lt;br&gt;@@ -28,7 +28,7 @@
&lt;br&gt;&amp;nbsp; * @param memberid The member id of the request change.
&lt;br&gt;&amp;nbsp; * @returns The pointer to the change of the member. NULL if member doesn't have an entry in this mapping.
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT OSyncChange *osync_mapping_engine_member_change(OSyncMappingEngine *engine, long long int memberid);
&lt;br&gt;+OSYNC_EXPORT OSyncChange *osync_mapping_engine_member_change(OSyncMappingEngine *engine, osync_memberid memberid);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;OSYNC_EXPORT OSyncMember *osync_mapping_engine_change_find_member(OSyncMappingEngine *engine, OSyncChange *change);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/opensync/engine/opensync_obj_engine.c b/opensync/engine/opensync_obj_engine.c
&lt;br&gt;index fc8487f..fd5ee6b 100644
&lt;br&gt;--- a/opensync/engine/opensync_obj_engine.c
&lt;br&gt;+++ b/opensync/engine/opensync_obj_engine.c
&lt;br&gt;@@ -385,8 +385,8 @@ osync_bool osync_obj_engine_map_changes(OSyncObjEngine *engine, OSyncError **err
&lt;br&gt;&amp;nbsp;		 * the current sinkengine, since there will be only one entry (for the current sinkengine) so there
&lt;br&gt;&amp;nbsp;		 * is no need to compare */
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		long long int memberid = osync_member_get_id(osync_client_proxy_get_member(sinkengine-&amp;gt;proxy));
&lt;br&gt;-		osync_trace(TRACE_INTERNAL, &amp;quot;Sinkengine of member %lli&amp;quot;, memberid);
&lt;br&gt;+		osync_memberid memberid = osync_member_get_id(osync_client_proxy_get_member(sinkengine-&amp;gt;proxy));
&lt;br&gt;+		osync_trace(TRACE_INTERNAL, &amp;quot;Sinkengine of member %i&amp;quot;, memberid);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		unmapped_mappings = osync_list_copy(new_mappings);
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;@@ -394,7 +394,7 @@ osync_bool osync_obj_engine_map_changes(OSyncObjEngine *engine, OSyncError **err
&lt;br&gt;&amp;nbsp;		while (sinkengine-&amp;gt;unmapped) {
&lt;br&gt;&amp;nbsp;			OSyncChange *change = sinkengine-&amp;gt;unmapped-&amp;gt;data;
&lt;br&gt;&amp;nbsp;			
&lt;br&gt;-			osync_trace(TRACE_INTERNAL, &amp;quot;Looking for mapping for change %s, changetype %i from member %lli&amp;quot;, osync_change_get_uid(change), osync_change_get_changetype(change), memberid);
&lt;br&gt;+			osync_trace(TRACE_INTERNAL, &amp;quot;Looking for mapping for change %s, changetype %i from member %i&amp;quot;, osync_change_get_uid(change), osync_change_get_changetype(change), memberid);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;			/* See if there is an exisiting mapping, which fits the unmapped change */
&lt;br&gt;&amp;nbsp;			result = _osync_obj_engine_mapping_find(unmapped_mappings, change, sinkengine, &amp;mapping_engine, error);
&lt;br&gt;@@ -405,7 +405,7 @@ osync_bool osync_obj_engine_map_changes(OSyncObjEngine *engine, OSyncError **err
&lt;br&gt;&amp;nbsp;					if (!mapping_engine)
&lt;br&gt;&amp;nbsp;						goto error;
&lt;br&gt;&amp;nbsp;					
&lt;br&gt;-					osync_trace(TRACE_INTERNAL, &amp;quot;Unable to find mapping. Creating new mapping with id %lli&amp;quot;, osync_mapping_get_id(mapping_engine-&amp;gt;mapping));
&lt;br&gt;+					osync_trace(TRACE_INTERNAL, &amp;quot;Unable to find mapping. Creating new mapping with id %i&amp;quot;, osync_mapping_get_id(mapping_engine-&amp;gt;mapping));
&lt;br&gt;&amp;nbsp;					/* TODO: what about _prepend (O(1)) instead of _append (O(n))? Order doesn't matter here - right? */
&lt;br&gt;&amp;nbsp;					new_mappings = osync_list_append(new_mappings, mapping_engine);
&lt;br&gt;&amp;nbsp;					unmapped_mappings = osync_list_append(unmapped_mappings, mapping_engine);
&lt;br&gt;@@ -634,7 +634,7 @@ void osync_obj_engine_commit_change_callback(OSyncClientProxy *proxy, void *user
&lt;br&gt;&amp;nbsp;	OSyncMappingEntry *entry = NULL;
&lt;br&gt;&amp;nbsp;	const char *objtype = NULL;
&lt;br&gt;&amp;nbsp;	const char *objengine_objtype = NULL;
&lt;br&gt;-	long long int id = 0;
&lt;br&gt;+	osync_mappingid id = 0;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	objengine_objtype = osync_obj_engine_get_objtype(engine);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -784,7 +784,7 @@ static osync_bool _inject_changelog_entries(OSyncObjEngine *engine, OSyncError *
&lt;br&gt;&amp;nbsp;	t = changetypes;
&lt;br&gt;&amp;nbsp;	mid = memberids;
&lt;br&gt;&amp;nbsp;	for (j = ids; j; j = j-&amp;gt;next) {
&lt;br&gt;-		long long int id = (long long int)GPOINTER_TO_INT(j-&amp;gt;data);
&lt;br&gt;+		osync_archiveid id = GPOINTER_TO_INT(j-&amp;gt;data);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		OSyncMapping *ignored_mapping = osync_mapping_table_find_mapping(engine-&amp;gt;mapping_table, id);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/opensync/engine/opensync_sink_engine.c b/opensync/engine/opensync_sink_engine.c
&lt;br&gt;index f1065dd..639e24a 100644
&lt;br&gt;--- a/opensync/engine/opensync_sink_engine.c
&lt;br&gt;+++ b/opensync/engine/opensync_sink_engine.c
&lt;br&gt;@@ -230,7 +230,7 @@ osync_bool osync_sink_engine_write(OSyncSinkEngine *engine, OSyncArchive *archiv
&lt;br&gt;&amp;nbsp;			OSyncChange *change = osync_entry_engine_get_change(entry_engine);
&lt;br&gt;&amp;nbsp;			osync_assert(change);
&lt;br&gt;&amp;nbsp;				
&lt;br&gt;-			osync_trace(TRACE_INTERNAL, &amp;quot;Writing change %s, changetype %i, format %s , objtype %s from member %lli&amp;quot;, 
&lt;br&gt;+			osync_trace(TRACE_INTERNAL, &amp;quot;Writing change %s, changetype %i, format %s , objtype %s from member %i&amp;quot;, 
&lt;br&gt;&amp;nbsp;					osync_change_get_uid(change), 
&lt;br&gt;&amp;nbsp;					osync_change_get_changetype(change), 
&lt;br&gt;&amp;nbsp;					osync_objformat_get_name(osync_change_get_objformat(change)), 
&lt;br&gt;diff --git a/opensync/group/opensync_group.c b/opensync/group/opensync_group.c
&lt;br&gt;index 81e0abb..ffb3c6b 100644
&lt;br&gt;--- a/opensync/group/opensync_group.c
&lt;br&gt;+++ b/opensync/group/opensync_group.c
&lt;br&gt;@@ -76,16 +76,16 @@ static int flock(int fd, int operation)
&lt;br&gt;&amp;nbsp;#endif //not defined _WIN32
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-static long long int osync_group_create_member_id(OSyncGroup *group)
&lt;br&gt;+static osync_memberid osync_group_create_member_id(OSyncGroup *group)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	char *filename = NULL;
&lt;br&gt;-	long long int i = 0;
&lt;br&gt;+	osync_memberid i = 0;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	do {
&lt;br&gt;&amp;nbsp;		i++;
&lt;br&gt;&amp;nbsp;		if (filename)
&lt;br&gt;&amp;nbsp;			osync_free(filename);
&lt;br&gt;-		filename = osync_strdup_printf(&amp;quot;%s%c%lli&amp;quot;, group-&amp;gt;configdir, G_DIR_SEPARATOR, i);
&lt;br&gt;+		filename = osync_strdup_printf(&amp;quot;%s%c%i&amp;quot;, group-&amp;gt;configdir, G_DIR_SEPARATOR, i);
&lt;br&gt;&amp;nbsp;	} while (g_file_test(filename, G_FILE_TEST_EXISTS));
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	osync_free(filename);
&lt;br&gt;@@ -778,7 +778,7 @@ void osync_group_add_member(OSyncGroup *group, OSyncMember *member)
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	if (!osync_member_get_configdir(member)) {
&lt;br&gt;&amp;nbsp;		member-&amp;gt;id = osync_group_create_member_id(group);
&lt;br&gt;-		char *configdir = osync_strdup_printf(&amp;quot;%s%c%lli&amp;quot;, group-&amp;gt;configdir, G_DIR_SEPARATOR, member-&amp;gt;id);
&lt;br&gt;+		char *configdir = osync_strdup_printf(&amp;quot;%s%c%i&amp;quot;, group-&amp;gt;configdir, G_DIR_SEPARATOR, member-&amp;gt;id);
&lt;br&gt;&amp;nbsp;		osync_member_set_configdir(member, configdir);
&lt;br&gt;&amp;nbsp;		osync_free(configdir);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;@@ -794,7 +794,7 @@ void osync_group_remove_member(OSyncGroup *group, OSyncMember *member)
&lt;br&gt;&amp;nbsp;	osync_member_unref(member);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-OSyncMember *osync_group_find_member(OSyncGroup *group, long long int id)
&lt;br&gt;+OSyncMember *osync_group_find_member(OSyncGroup *group, osync_memberid id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	OSyncList *m = NULL;
&lt;br&gt;&amp;nbsp;	for (m = group-&amp;gt;members; m; m = m-&amp;gt;next) {
&lt;br&gt;@@ -980,14 +980,14 @@ time_t osync_group_get_last_synchronization(OSyncGroup *group)
&lt;br&gt;&amp;nbsp;	return group-&amp;gt;last_sync;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-void osync_group_set_conflict_resolution(OSyncGroup *group, OSyncConflictResolution res, long long int winner)
&lt;br&gt;+void osync_group_set_conflict_resolution(OSyncGroup *group, OSyncConflictResolution res, osync_memberid winner)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(group);
&lt;br&gt;&amp;nbsp;	group-&amp;gt;conflict_resolution = res;
&lt;br&gt;&amp;nbsp;	group-&amp;gt;conflict_winner = winner;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-void osync_group_get_conflict_resolution(OSyncGroup *group, OSyncConflictResolution *res, long long int *winner)
&lt;br&gt;+void osync_group_get_conflict_resolution(OSyncGroup *group, OSyncConflictResolution *res, osync_memberid *winner)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(group);
&lt;br&gt;&amp;nbsp;	osync_assert(res);
&lt;br&gt;diff --git a/opensync/group/opensync_group.h b/opensync/group/opensync_group.h
&lt;br&gt;index adb8fc6..9a47305 100644
&lt;br&gt;--- a/opensync/group/opensync_group.h
&lt;br&gt;+++ b/opensync/group/opensync_group.h
&lt;br&gt;@@ -193,7 +193,7 @@ OSYNC_EXPORT void osync_group_remove_member(OSyncGroup *group, OSyncMember *memb
&lt;br&gt;&amp;nbsp; * @returns The member, or NULL if not found
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT OSyncMember *osync_group_find_member(OSyncGroup *group, long long int id);
&lt;br&gt;+OSYNC_EXPORT OSyncMember *osync_group_find_member(OSyncGroup *group, osync_memberid id);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Returns a OSyncList that contains the OSyncMembers of this group
&lt;br&gt;@@ -271,7 +271,7 @@ OSYNC_EXPORT time_t osync_group_get_last_synchronization(OSyncGroup *group);
&lt;br&gt;&amp;nbsp; * @param winner The Member ID which solves the conflict (winner)
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT void osync_group_set_conflict_resolution(OSyncGroup *group, OSyncConflictResolution res, long long int winner);
&lt;br&gt;+OSYNC_EXPORT void osync_group_set_conflict_resolution(OSyncGroup *group, OSyncConflictResolution res, osync_memberid winner);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/** @brief Get fixed conflict resolution for the group for all appearing conflicts 
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;@@ -280,7 +280,7 @@ OSYNC_EXPORT void osync_group_set_conflict_resolution(OSyncGroup *group, OSyncCo
&lt;br&gt;&amp;nbsp; * @param winner Pointer to set Member ID value which solves the conflict (winner)
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT void osync_group_get_conflict_resolution(OSyncGroup *group, OSyncConflictResolution *res, long long int *winner);
&lt;br&gt;+OSYNC_EXPORT void osync_group_get_conflict_resolution(OSyncGroup *group, OSyncConflictResolution *res, osync_memberid *winner);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/** @brief Get group configured status of merger use. 
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;diff --git a/opensync/group/opensync_group_env.c b/opensync/group/opensync_group_env.c
&lt;br&gt;index b3ca99a..830f43f 100644
&lt;br&gt;--- a/opensync/group/opensync_group_env.c
&lt;br&gt;+++ b/opensync/group/opensync_group_env.c
&lt;br&gt;@@ -26,15 +26,15 @@
&lt;br&gt;&amp;nbsp;#include &amp;quot;opensync_group_env_internals.h&amp;quot;
&lt;br&gt;&amp;nbsp;#include &amp;quot;opensync_group_env_private.h&amp;quot;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-static long long int osync_group_env_create_group_id(OSyncGroupEnv *env)
&lt;br&gt;+static osync_groupid osync_group_env_create_group_id(OSyncGroupEnv *env)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	char *filename = NULL;
&lt;br&gt;-	long long int i = 0;
&lt;br&gt;+	osync_groupid i = 0;
&lt;br&gt;&amp;nbsp;	do {
&lt;br&gt;&amp;nbsp;		i++;
&lt;br&gt;&amp;nbsp;		if (filename)
&lt;br&gt;&amp;nbsp;			osync_free(filename);
&lt;br&gt;-		filename = osync_strdup_printf(&amp;quot;%s%cgroup%lli&amp;quot;, env-&amp;gt;groupsdir, G_DIR_SEPARATOR, i);
&lt;br&gt;+		filename = osync_strdup_printf(&amp;quot;%s%cgroup%i&amp;quot;, env-&amp;gt;groupsdir, G_DIR_SEPARATOR, i);
&lt;br&gt;&amp;nbsp;	} while (g_file_test(filename, G_FILE_TEST_EXISTS));
&lt;br&gt;&amp;nbsp;	osync_free(filename);
&lt;br&gt;&amp;nbsp;	return i;
&lt;br&gt;@@ -409,7 +409,7 @@ osync_bool osync_group_env_add_group(OSyncGroupEnv *env, OSyncGroup *group, OSyn
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	if (!osync_group_get_configdir(group)) {
&lt;br&gt;-		char *configdir = osync_strdup_printf(&amp;quot;%s%cgroup%lli&amp;quot;, env-&amp;gt;groupsdir, G_DIR_SEPARATOR, osync_group_env_create_group_id(env));
&lt;br&gt;+		char *configdir = osync_strdup_printf(&amp;quot;%s%cgroup%i&amp;quot;, env-&amp;gt;groupsdir, G_DIR_SEPARATOR, osync_group_env_create_group_id(env));
&lt;br&gt;&amp;nbsp;		osync_group_set_configdir(group, configdir);
&lt;br&gt;&amp;nbsp;		osync_free(configdir);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;diff --git a/opensync/group/opensync_group_env_private.h b/opensync/group/opensync_group_env_private.h
&lt;br&gt;index c1fc5ed..926f44c 100644
&lt;br&gt;--- a/opensync/group/opensync_group_env_private.h
&lt;br&gt;+++ b/opensync/group/opensync_group_env_private.h
&lt;br&gt;@@ -37,7 +37,7 @@
&lt;br&gt;&amp;nbsp; * @returns The next free number
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-static long long int osync_group_env_create_group_id(OSyncGroupEnv *env);
&lt;br&gt;+static osync_groupid osync_group_env_create_group_id(OSyncGroupEnv *env);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/*@}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/opensync/group/opensync_group_internals.h b/opensync/group/opensync_group_internals.h
&lt;br&gt;index f8c87ea..e60e977 100644
&lt;br&gt;--- a/opensync/group/opensync_group_internals.h
&lt;br&gt;+++ b/opensync/group/opensync_group_internals.h
&lt;br&gt;@@ -52,7 +52,7 @@ struct OSyncGroup {
&lt;br&gt;&amp;nbsp;	/** The defined resolution for this group */
&lt;br&gt;&amp;nbsp;	OSyncConflictResolution conflict_resolution;
&lt;br&gt;&amp;nbsp;	/** The winning side if the select resolution is choosen */
&lt;br&gt;-	long long int conflict_winner;
&lt;br&gt;+	osync_memberid conflict_winner;
&lt;br&gt;&amp;nbsp;	/** The configured merger status of this group */
&lt;br&gt;&amp;nbsp;	osync_bool merger_enabled;
&lt;br&gt;&amp;nbsp;	/** The configured converter status of this group */
&lt;br&gt;diff --git a/opensync/group/opensync_group_private.h b/opensync/group/opensync_group_private.h
&lt;br&gt;index d7f6cb1..a821930 100644
&lt;br&gt;--- a/opensync/group/opensync_group_private.h
&lt;br&gt;+++ b/opensync/group/opensync_group_private.h
&lt;br&gt;@@ -36,7 +36,7 @@
&lt;br&gt;&amp;nbsp; * @returns A new unique member id
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-static long long int osync_group_create_member_id(OSyncGroup *group);
&lt;br&gt;+static osync_memberid osync_group_create_member_id(OSyncGroup *group);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/** @brief Loads all members of a group
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;diff --git a/opensync/group/opensync_member.c b/opensync/group/opensync_member.c
&lt;br&gt;index 20020a1..4fbd0e8 100644
&lt;br&gt;--- a/opensync/group/opensync_member.c
&lt;br&gt;+++ b/opensync/group/opensync_member.c
&lt;br&gt;@@ -540,7 +540,7 @@ osync_bool osync_member_save(OSyncMember *member, OSyncError **error)
&lt;br&gt;&amp;nbsp;		 * member_configdir_deep_path
&lt;br&gt;&amp;nbsp;		 */
&lt;br&gt;&amp;nbsp;		if (g_mkdir_with_parents(member-&amp;gt;configdir, 0700)) {
&lt;br&gt;-			osync_error_set(error, OSYNC_ERROR_IO_ERROR, &amp;quot;Unable to create directory for member %lli\n&amp;quot;, member-&amp;gt;id);
&lt;br&gt;+			osync_error_set(error, OSYNC_ERROR_IO_ERROR, &amp;quot;Unable to create directory for member %i\n&amp;quot;, member-&amp;gt;id);
&lt;br&gt;&amp;nbsp;			goto error;
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;@@ -629,7 +629,7 @@ osync_bool osync_member_delete(OSyncMember *member, OSyncError **error)
&lt;br&gt;&amp;nbsp;	return TRUE;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_member_get_id(OSyncMember *member)
&lt;br&gt;+osync_memberid osync_member_get_id(OSyncMember *member)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(member);
&lt;br&gt;&amp;nbsp;	return member-&amp;gt;id;
&lt;br&gt;diff --git a/opensync/group/opensync_member.h b/opensync/group/opensync_member.h
&lt;br&gt;index 0412460..91b9504 100644
&lt;br&gt;--- a/opensync/group/opensync_member.h
&lt;br&gt;+++ b/opensync/group/opensync_member.h
&lt;br&gt;@@ -191,7 +191,7 @@ OSYNC_EXPORT osync_bool osync_member_delete(OSyncMember *member, OSyncError **er
&lt;br&gt;&amp;nbsp; * @returns The id of the member thats unique in its group
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT long long int osync_member_get_id(OSyncMember *member);
&lt;br&gt;+OSYNC_EXPORT osync_memberid osync_member_get_id(OSyncMember *member);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Returns a OSyncList that contains the objtypes of this member
&lt;br&gt;diff --git a/opensync/group/opensync_member_internals.h b/opensync/group/opensync_member_internals.h
&lt;br&gt;index 903f7ad..d6793ce 100644
&lt;br&gt;--- a/opensync/group/opensync_member_internals.h
&lt;br&gt;+++ b/opensync/group/opensync_member_internals.h
&lt;br&gt;@@ -31,7 +31,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/** @brief A member of a group which represent a single device */
&lt;br&gt;&amp;nbsp;struct OSyncMember {
&lt;br&gt;-	long long int id;
&lt;br&gt;+	osync_memberid id;
&lt;br&gt;&amp;nbsp;	char *configdir;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	OSyncPluginConfig *config;
&lt;br&gt;diff --git a/opensync/ipc/opensync_message.c b/opensync/ipc/opensync_message.c
&lt;br&gt;index 4f5de21..c135b8c 100644
&lt;br&gt;--- a/opensync/ipc/opensync_message.c
&lt;br&gt;+++ b/opensync/ipc/opensync_message.c
&lt;br&gt;@@ -87,13 +87,13 @@ unsigned int osync_message_get_timeout(OSyncMessage *message)
&lt;br&gt;&amp;nbsp;	return message-&amp;gt;timeout;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-void osync_message_set_id(OSyncMessage *message, long long int id)
&lt;br&gt;+void osync_message_set_id(OSyncMessage *message, osync_messageid id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(message);
&lt;br&gt;&amp;nbsp;	message-&amp;gt;id = id;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_message_get_id(OSyncMessage *message)
&lt;br&gt;+osync_messageid osync_message_get_id(OSyncMessage *message)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(message);
&lt;br&gt;&amp;nbsp;	return message-&amp;gt;id;
&lt;br&gt;diff --git a/opensync/ipc/opensync_message_internals.h b/opensync/ipc/opensync_message_internals.h
&lt;br&gt;index a2b155a..a8590b7 100644
&lt;br&gt;--- a/opensync/ipc/opensync_message_internals.h
&lt;br&gt;+++ b/opensync/ipc/opensync_message_internals.h
&lt;br&gt;@@ -149,7 +149,7 @@ OSYNC_TEST_EXPORT OSyncMessageCommand osync_message_get_cmd(OSyncMessage *messag
&lt;br&gt;&amp;nbsp; * @param id The ID which get set for supplied message object 
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_TEST_EXPORT void osync_message_set_id(OSyncMessage *message, long long int id);
&lt;br&gt;+OSYNC_TEST_EXPORT void osync_message_set_id(OSyncMessage *message, osync_messageid id);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/** @brief Get message ID of supplied message object
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;@@ -157,7 +157,7 @@ OSYNC_TEST_EXPORT void osync_message_set_id(OSyncMessage *message, long long int
&lt;br&gt;&amp;nbsp; * @returns The message ID of supplied message
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_TEST_EXPORT long long int osync_message_get_id(OSyncMessage *message);
&lt;br&gt;+OSYNC_TEST_EXPORT osync_messageid osync_message_get_id(OSyncMessage *message);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/** @brief Get marshal object of supplied message object
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;diff --git a/opensync/ipc/opensync_message_private.h b/opensync/ipc/opensync_message_private.h
&lt;br&gt;index b02ee7b..bb53e62 100644
&lt;br&gt;--- a/opensync/ipc/opensync_message_private.h
&lt;br&gt;+++ b/opensync/ipc/opensync_message_private.h
&lt;br&gt;@@ -39,7 +39,7 @@ struct OSyncMessage {
&lt;br&gt;&amp;nbsp;	/** The type of this message */
&lt;br&gt;&amp;nbsp;	OSyncMessageCommand cmd;
&lt;br&gt;&amp;nbsp;	/** The name of the message*/
&lt;br&gt;-	long long int id;
&lt;br&gt;+	osync_messageid id;
&lt;br&gt;&amp;nbsp;	/** Where should the reply be received? */
&lt;br&gt;&amp;nbsp;	OSyncMessageHandler callback;
&lt;br&gt;&amp;nbsp;	/** The user data */
&lt;br&gt;diff --git a/opensync/ipc/opensync_queue.c b/opensync/ipc/opensync_queue.c
&lt;br&gt;index 641f93d..1515e6c 100644
&lt;br&gt;--- a/opensync/ipc/opensync_queue.c
&lt;br&gt;+++ b/opensync/ipc/opensync_queue.c
&lt;br&gt;@@ -689,7 +689,7 @@ static gboolean _source_dispatch(GSource *source, GSourceFunc callback, gpointer
&lt;br&gt;&amp;nbsp;	do {
&lt;br&gt;&amp;nbsp;		int size = 0;
&lt;br&gt;&amp;nbsp;		int cmd = 0, timeout = 0;
&lt;br&gt;-		long long int id = 0;
&lt;br&gt;+		osync_messageid id = 0;
&lt;br&gt;&amp;nbsp;		char *buffer = NULL;
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;		/* The size of the buffer */
&lt;br&gt;@@ -1375,7 +1375,7 @@ OSyncMessage *osync_queue_get_message(OSyncQueue *queue)
&lt;br&gt;&amp;nbsp;	return g_async_queue_pop(queue-&amp;gt;incoming);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-static long long int opensync_queue_gen_id(const GTimeVal *tv)
&lt;br&gt;+static osync_messageid opensync_queue_gen_id(const GTimeVal *tv)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	long long int now = (tv-&amp;gt;tv_sec * 1000000 + tv-&amp;gt;tv_usec) &amp;lt;&amp;lt; 16;
&lt;br&gt;&amp;nbsp;	long long int rnd = ((long long int)g_random_int()) &amp; 0xFFFF;
&lt;br&gt;@@ -1408,7 +1408,7 @@ osync_bool osync_queue_send_message_with_timeout(OSyncQueue *queue, OSyncQueue *
&lt;br&gt;&amp;nbsp;	if (osync_message_get_handler(message)) {
&lt;br&gt;&amp;nbsp;		OSyncPendingMessage *pending = NULL;
&lt;br&gt;&amp;nbsp;		GTimeVal current_time;
&lt;br&gt;-		long long int id = 0;
&lt;br&gt;+		osync_messageid id = 0;
&lt;br&gt;&amp;nbsp;		osync_assert(replyqueue);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		g_mutex_lock(replyqueue-&amp;gt;pendingLock);
&lt;br&gt;diff --git a/opensync/ipc/opensync_queue_private.h b/opensync/ipc/opensync_queue_private.h
&lt;br&gt;index 25803ab..4a4b4b9 100644
&lt;br&gt;--- a/opensync/ipc/opensync_queue_private.h
&lt;br&gt;+++ b/opensync/ipc/opensync_queue_private.h
&lt;br&gt;@@ -134,7 +134,7 @@ typedef struct OSyncTimeoutInfo {
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;typedef struct OSyncPendingMessage {
&lt;br&gt;&amp;nbsp;	/** ID of the expected Message */
&lt;br&gt;-	long long int id;
&lt;br&gt;+	osync_messageid id;
&lt;br&gt;&amp;nbsp;	/** Where should the reply be received? */
&lt;br&gt;&amp;nbsp;	OSyncMessageHandler callback;
&lt;br&gt;&amp;nbsp;	/** The user data */
&lt;br&gt;@@ -151,7 +151,7 @@ typedef struct OSyncPendingMessage {
&lt;br&gt;&amp;nbsp; * the lower 2 bytes are a random number
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;&amp;nbsp; * */
&lt;br&gt;-static long long int opensync_queue_gen_id(const GTimeVal *tv);
&lt;br&gt;+static osync_messageid opensync_queue_gen_id(const GTimeVal *tv);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/*@}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping.c b/opensync/mapping/opensync_mapping.c
&lt;br&gt;index 20382f1..68101af 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping.c
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping.c
&lt;br&gt;@@ -68,13 +68,13 @@ void osync_mapping_unref(OSyncMapping *mapping)
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_mapping_get_id(OSyncMapping *mapping)
&lt;br&gt;+osync_mappingid osync_mapping_get_id(OSyncMapping *mapping)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(mapping);
&lt;br&gt;&amp;nbsp;	return mapping-&amp;gt;id;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-void osync_mapping_set_id(OSyncMapping *mapping, long long int id)
&lt;br&gt;+void osync_mapping_set_id(OSyncMapping *mapping, osync_mappingid id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(mapping);
&lt;br&gt;&amp;nbsp;	mapping-&amp;gt;id = id;
&lt;br&gt;@@ -109,7 +109,7 @@ void osync_mapping_remove_entry(OSyncMapping *mapping, OSyncMappingEntry *entry)
&lt;br&gt;&amp;nbsp;	return NULL;
&lt;br&gt;&amp;nbsp;	}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-OSyncMappingEntry *osync_mapping_find_entry_by_member_id(OSyncMapping *mapping, long long int memberid)
&lt;br&gt;+OSyncMappingEntry *osync_mapping_find_entry_by_member_id(OSyncMapping *mapping, osync_memberid memberid)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	OSyncList *e;
&lt;br&gt;&amp;nbsp;	for (e = mapping-&amp;gt;entries; e; e = e-&amp;gt;next) {
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping.h b/opensync/mapping/opensync_mapping.h
&lt;br&gt;index cd6db32..0b24ca2 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping.h
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping.h
&lt;br&gt;@@ -62,14 +62,14 @@ OSYNC_EXPORT void osync_mapping_unref(OSyncMapping *mapping);
&lt;br&gt;&amp;nbsp; * @param mapping Pointer to a mapping object
&lt;br&gt;&amp;nbsp; * @returns the mapping ID
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT long long int osync_mapping_get_id(OSyncMapping *mapping);
&lt;br&gt;+OSYNC_EXPORT osync_mappingid osync_mapping_get_id(OSyncMapping *mapping);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Set the ID of a mapping object
&lt;br&gt;&amp;nbsp; * @param mapping Pointer to a mapping object
&lt;br&gt;&amp;nbsp; * @param id the mapping ID to set
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT void osync_mapping_set_id(OSyncMapping *mapping, long long int id);
&lt;br&gt;+OSYNC_EXPORT void osync_mapping_set_id(OSyncMapping *mapping, osync_mappingid id);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Returns a OSyncList that contains the OSyncMappingEntries of this mapping
&lt;br&gt;@@ -103,7 +103,7 @@ OSYNC_EXPORT void osync_mapping_remove_entry(OSyncMapping *mapping, OSyncMapping
&lt;br&gt;&amp;nbsp; * @param memberid The ID of the member
&lt;br&gt;&amp;nbsp; * @returns the entry with the specified member ID or NULL if not found
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT OSyncMappingEntry *osync_mapping_find_entry_by_member_id(OSyncMapping *mapping, long long int memberid);
&lt;br&gt;+OSYNC_EXPORT OSyncMappingEntry *osync_mapping_find_entry_by_member_id(OSyncMapping *mapping, osync_memberid memberid);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/*@}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping_entry.c b/opensync/mapping/opensync_mapping_entry.c
&lt;br&gt;index ede816f..34d3aaa 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping_entry.c
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping_entry.c
&lt;br&gt;@@ -124,25 +124,25 @@ const char *osync_mapping_entry_get_uid(OSyncMappingEntry *entry)
&lt;br&gt;&amp;nbsp;	return entry-&amp;gt;uid;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_mapping_entry_get_member_id(OSyncMappingEntry *entry)
&lt;br&gt;+osync_memberid osync_mapping_entry_get_member_id(OSyncMappingEntry *entry)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(entry);
&lt;br&gt;&amp;nbsp;	return entry-&amp;gt;member_id;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-void osync_mapping_entry_set_member_id(OSyncMappingEntry *entry, long long int id)
&lt;br&gt;+void osync_mapping_entry_set_member_id(OSyncMappingEntry *entry, osync_memberid id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(entry);
&lt;br&gt;&amp;nbsp;	entry-&amp;gt;member_id = id;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_mapping_entry_get_id(OSyncMappingEntry *entry)
&lt;br&gt;+osync_mappingid osync_mapping_entry_get_id(OSyncMappingEntry *entry)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(entry);
&lt;br&gt;&amp;nbsp;	return entry-&amp;gt;id;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-void osync_mapping_entry_set_id(OSyncMappingEntry *entry, long long int id)
&lt;br&gt;+void osync_mapping_entry_set_id(OSyncMappingEntry *entry, osync_mappingid id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	osync_assert(entry);
&lt;br&gt;&amp;nbsp;	entry-&amp;gt;id = id;
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping_entry.h b/opensync/mapping/opensync_mapping_entry.h
&lt;br&gt;index 52da95b..f30042f 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping_entry.h
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping_entry.h
&lt;br&gt;@@ -98,14 +98,14 @@ OSYNC_EXPORT const char *osync_mapping_entry_get_uid(OSyncMappingEntry *entry);
&lt;br&gt;&amp;nbsp; * @param entry Pointer to a mapping entry object
&lt;br&gt;&amp;nbsp; * @returns the entry's member ID
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT long long int osync_mapping_entry_get_member_id(OSyncMappingEntry *entry);
&lt;br&gt;+OSYNC_EXPORT osync_memberid osync_mapping_entry_get_member_id(OSyncMappingEntry *entry);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Set the member ID of the entry
&lt;br&gt;&amp;nbsp; * @param entry Pointer to a mapping entry object
&lt;br&gt;&amp;nbsp; * @param id the member ID to set
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT void osync_mapping_entry_set_member_id(OSyncMappingEntry *entry, long long int id);
&lt;br&gt;+OSYNC_EXPORT void osync_mapping_entry_set_member_id(OSyncMappingEntry *entry, osync_memberid id);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;@@ -113,14 +113,14 @@ OSYNC_EXPORT void osync_mapping_entry_set_member_id(OSyncMappingEntry *entry, lo
&lt;br&gt;&amp;nbsp; * @param entry Pointer to a mapping entry object
&lt;br&gt;&amp;nbsp; * @returns the entry's ID
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT long long int osync_mapping_entry_get_id(OSyncMappingEntry *entry);
&lt;br&gt;+OSYNC_EXPORT osync_mappingid osync_mapping_entry_get_id(OSyncMappingEntry *entry);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Set the ID of the entry
&lt;br&gt;&amp;nbsp; * @param entry Pointer to a mapping entry object
&lt;br&gt;&amp;nbsp; * @param id the ID to set
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-OSYNC_EXPORT void osync_mapping_entry_set_id(OSyncMappingEntry *entry, long long int id);
&lt;br&gt;+OSYNC_EXPORT void osync_mapping_entry_set_id(OSyncMappingEntry *entry, osync_mappingid id);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/*@}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping_entry_internals.h b/opensync/mapping/opensync_mapping_entry_internals.h
&lt;br&gt;index a8c1fc7..1bc21bb 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping_entry_internals.h
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping_entry_internals.h
&lt;br&gt;@@ -40,13 +40,13 @@ struct OSyncMappingEntry {
&lt;br&gt;&amp;nbsp;	char *uid;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	/** uniquely identifies the member */
&lt;br&gt;-	long long int member_id;
&lt;br&gt;+	osync_memberid member_id;
&lt;br&gt;&amp;nbsp;	/** uniquely identifies the mapping table entry */
&lt;br&gt;-	long long int id;
&lt;br&gt;+	osync_mappingid id;
&lt;br&gt;&amp;nbsp;};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/*@}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_mapping_entry_get_member_id(OSyncMappingEntry *entry);
&lt;br&gt;+osync_memberid osync_mapping_entry_get_member_id(OSyncMappingEntry *entry);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#endif /*OPENSYNC_MAPPING_ENTRY_INTERNALS_H_*/
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping_internals.h b/opensync/mapping/opensync_mapping_internals.h
&lt;br&gt;index 169498e..52759ff 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping_internals.h
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping_internals.h
&lt;br&gt;@@ -38,7 +38,7 @@ struct OSyncMapping {
&lt;br&gt;&amp;nbsp;	/** Reference Counter */
&lt;br&gt;&amp;nbsp;	int ref_count;
&lt;br&gt;&amp;nbsp;	/** ID of the mapping */
&lt;br&gt;-	long long int id;
&lt;br&gt;+	osync_mappingid id;
&lt;br&gt;&amp;nbsp;	/** list of entries */
&lt;br&gt;&amp;nbsp;	OSyncList *entries;
&lt;br&gt;&amp;nbsp;};
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping_table.c b/opensync/mapping/opensync_mapping_table.c
&lt;br&gt;index 4e15342..d4cd572 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping_table.c
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping_table.c
&lt;br&gt;@@ -88,10 +88,12 @@ osync_bool osync_mapping_table_load(OSyncMappingTable *table, OSyncArchive *arch
&lt;br&gt;&amp;nbsp;	i = memberids;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	for (u = uids; u; u = u-&amp;gt;next) {
&lt;br&gt;-		long long int id = (long long int)GPOINTER_TO_INT(d-&amp;gt;data);
&lt;br&gt;+		// FIXME - GPOINTER_TO_INT() only guarantees 32bits of data,
&lt;br&gt;+		// while long long int is 64bits.
&lt;br&gt;+		osync_archiveid id = GPOINTER_TO_INT(d-&amp;gt;data);
&lt;br&gt;&amp;nbsp;		char *uid = u-&amp;gt;data;
&lt;br&gt;-		long long int memberid = (long long int)GPOINTER_TO_INT(i-&amp;gt;data);
&lt;br&gt;-		long long int mappingid = (long long int)GPOINTER_TO_INT(m-&amp;gt;data);
&lt;br&gt;+		osync_memberid memberid = GPOINTER_TO_INT(i-&amp;gt;data);
&lt;br&gt;+		osync_mappingid mappingid = GPOINTER_TO_INT(m-&amp;gt;data);
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;		entry = osync_mapping_entry_new(error);
&lt;br&gt;&amp;nbsp;		if (!entry)
&lt;br&gt;@@ -171,7 +173,7 @@ void osync_mapping_table_close(OSyncMappingTable *table)
&lt;br&gt;&amp;nbsp;	osync_trace(TRACE_EXIT, &amp;quot;%s&amp;quot;, __func__);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-OSyncMapping *osync_mapping_table_find_mapping(OSyncMappingTable *table, long long int id)
&lt;br&gt;+OSyncMapping *osync_mapping_table_find_mapping(OSyncMappingTable *table, osync_mappingid id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	OSyncList *m;
&lt;br&gt;&amp;nbsp;	osync_assert(table);
&lt;br&gt;@@ -214,9 +216,9 @@ OSyncMapping *osync_mapping_table_nth_mapping(OSyncMappingTable *table, unsigned
&lt;br&gt;&amp;nbsp;	return osync_list_nth_data(table-&amp;gt;mappings, nth);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-long long int osync_mapping_table_get_next_id(OSyncMappingTable *table)
&lt;br&gt;+osync_mappingid osync_mapping_table_get_next_id(OSyncMappingTable *table)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;-	long long int new_id = 1;
&lt;br&gt;+	osync_mappingid new_id = 1;
&lt;br&gt;&amp;nbsp;	OSyncList *m;
&lt;br&gt;&amp;nbsp;	for (m = table-&amp;gt;mappings; m; m = m-&amp;gt;next) {
&lt;br&gt;&amp;nbsp;		OSyncMapping *mapping = m-&amp;gt;data;
&lt;br&gt;diff --git a/opensync/mapping/opensync_mapping_table.h b/opensync/mapping/opensync_mapping_table.h
&lt;br&gt;index 55a60a2..40e8f4a 100644
&lt;br&gt;--- a/opensync/mapping/opensync_mapping_table.h
&lt;br&gt;+++ b/opensync/mapping/opensync_mapping_table.h
&lt;br&gt;@@ -90,7 +90,7 @@ OSYNC_EXPORT void osync_mapping_table_close(OSyncMappingTable *table);
&lt;br&gt;&amp;nbsp; * @param id The mapping id to search for
&lt;br&gt;&amp;nbsp; * @return Returns Mapping object or NULL if no mapping matched the mapping id
&lt;br&gt;&amp;nbsp; */ 
&lt;br&gt;-OSYNC_EXPORT OSyncMapping *osync_mapping_table_find_mapping(OSyncMappingTable *table, long long int id);
&lt;br&gt;+OSYNC_EXPORT OSyncMapping *osync_mapping_table_find_mapping(OSyncMappingTable *table, osync_mappingid id);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Add a mapping to the mapping table 
&lt;br&gt;@@ -125,7 +125,7 @@ OSYNC_EXPORT OSyncList *osync_mapping_table_get_mappings(OSyncMappingTable *tabl
&lt;br&gt;&amp;nbsp; * @param table The mapping table object
&lt;br&gt;&amp;nbsp; * @return Next free mapping id of mapping table
&lt;br&gt;&amp;nbsp; */ 
&lt;br&gt;-OSYNC_EXPORT long long int osync_mapping_table_get_next_id(OSyncMappingTable *table);
&lt;br&gt;+OSYNC_EXPORT osync_mappingid osync_mapping_table_get_next_id(OSyncMappingTable *table);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/*@}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/opensync/opensync.h b/opensync/opensync.h
&lt;br&gt;index 2869486..8530135 100644
&lt;br&gt;--- a/opensync/opensync.h
&lt;br&gt;+++ b/opensync/opensync.h
&lt;br&gt;@@ -141,6 +141,11 @@ OPENSYNC_BEGIN_DECLS
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;} } while(0)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;typedef int osync_bool;
&lt;br&gt;+typedef int osync_memberid;
&lt;br&gt;+typedef int osync_mappingid;
&lt;br&gt;+typedef int osync_groupid;
&lt;br&gt;+typedef long long int osync_archiveid;
&lt;br&gt;+typedef long long int osync_messageid;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**************************************************************
&lt;br&gt;&amp;nbsp; * Enums
&lt;br&gt;diff --git a/opensync/plugin/opensync_plugin_info_private.h b/opensync/plugin/opensync_plugin_info_private.h
&lt;br&gt;index 5684704..e983f81 100644
&lt;br&gt;--- a/opensync/plugin/opensync_plugin_info_private.h
&lt;br&gt;+++ b/opensync/plugin/opensync_plugin_info_private.h
&lt;br&gt;@@ -49,7 +49,7 @@ struct OSyncPluginInfo {
&lt;br&gt;&amp;nbsp;	OSyncCapabilities *capabilities;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#ifdef OPENSYNC_UNITTESTS
&lt;br&gt;-	long long int memberid; // introduced only for testing purpose (mock-sync)
&lt;br&gt;+	osync_memberid memberid; // introduced only for testing purpose (mock-sync)
&lt;br&gt;&amp;nbsp;#endif	
&lt;br&gt;&amp;nbsp;};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/tests/archive-tests/check_archive.c b/tests/archive-tests/check_archive.c
&lt;br&gt;index 3c10f8e..0f37ddc 100644
&lt;br&gt;--- a/tests/archive-tests/check_archive.c
&lt;br&gt;+++ b/tests/archive-tests/check_archive.c
&lt;br&gt;@@ -58,7 +58,7 @@ START_TEST (archive_save_change)
&lt;br&gt;&amp;nbsp;	OSyncList *memberids;
&lt;br&gt;&amp;nbsp;	osync_archive_load_changes(archive, &amp;quot;contact&amp;quot;, &amp;ids, &amp;uids, &amp;mappingids, &amp;memberids, &amp;error);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	long long int id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;+	osync_archiveid id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;&amp;nbsp;	fail_unless(id != 0, NULL);
&lt;br&gt;&amp;nbsp;	fail_unless(error == NULL, NULL);
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;@@ -83,7 +83,7 @@ START_TEST (archive_save_data)
&lt;br&gt;&amp;nbsp;	OSyncList *memberids;
&lt;br&gt;&amp;nbsp;	osync_archive_load_changes(archive, &amp;quot;contact&amp;quot;, &amp;ids, &amp;uids, &amp;mappingids, &amp;memberids, &amp;error);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	long long int id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;+	osync_archiveid id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;&amp;nbsp;	fail_unless(id != 0, NULL);
&lt;br&gt;&amp;nbsp;	fail_unless(error == NULL, NULL);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -113,7 +113,7 @@ START_TEST (archive_load_data)
&lt;br&gt;&amp;nbsp;	OSyncList *memberids;
&lt;br&gt;&amp;nbsp;	osync_archive_load_changes(archive, &amp;quot;contact&amp;quot;, &amp;ids, &amp;uids, &amp;mappingids, &amp;memberids, &amp;error);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	long long int id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;+	osync_archiveid id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;&amp;nbsp;	fail_unless(id != 0, NULL);
&lt;br&gt;&amp;nbsp;	fail_unless(error == NULL, NULL);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -152,7 +152,7 @@ START_TEST (archive_load_data_with_closing_db)
&lt;br&gt;&amp;nbsp;	OSyncList *memberids;
&lt;br&gt;&amp;nbsp;	osync_archive_load_changes(archive, &amp;quot;contact&amp;quot;, &amp;ids, &amp;uids, &amp;mappingids, &amp;memberids, &amp;error);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	long long int id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;+	osync_archiveid id = osync_archive_save_change(archive, 0, &amp;quot;uid&amp;quot;, &amp;quot;contact&amp;quot;, 1, 1, &amp;quot;contact&amp;quot;, &amp;error);
&lt;br&gt;&amp;nbsp;	fail_unless(id != 0, NULL);
&lt;br&gt;&amp;nbsp;	fail_unless(error == NULL, NULL);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;diff --git a/tests/mock-plugin/mock_sync.c b/tests/mock-plugin/mock_sync.c
&lt;br&gt;index 01e54b9..98f1117 100644
&lt;br&gt;--- a/tests/mock-plugin/mock_sync.c
&lt;br&gt;+++ b/tests/mock-plugin/mock_sync.c
&lt;br&gt;@@ -23,7 +23,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#include &amp;quot;opensync/plugin/opensync_plugin_info_private.h&amp;quot;	/* FIXME: access direclty private header */
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-static osync_bool mock_get_error(long long int memberid, const char *domain)
&lt;br&gt;+static osync_bool mock_get_error(osync_memberid memberid, const char *domain)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	const char *env = g_getenv(domain);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/wrapper/opensync-group.i b/wrapper/opensync-group.i
&lt;br&gt;index 57ff246..a95fc96 100644
&lt;br&gt;--- a/wrapper/opensync-group.i
&lt;br&gt;+++ b/wrapper/opensync-group.i
&lt;br&gt;@@ -182,7 +182,7 @@ typedef struct {} Group;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	%apply ConflictResolution *OUTPUT { ConflictResolution *res, int *num };
&lt;br&gt;&amp;nbsp;	%apply int *OUTPUT { ConflictResolution *res, int *num };
&lt;br&gt;-	void get_conflict_resolution(ConflictResolution *res, long long int *winner) {
&lt;br&gt;+	void get_conflict_resolution(ConflictResolution *res, osync_memberid *winner) {
&lt;br&gt;&amp;nbsp;		osync_group_get_conflict_resolution(self, res, winner);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -314,7 +314,7 @@ typedef struct {} Member;
&lt;br&gt;&amp;nbsp;			wrapper_exception(&amp;quot;osync_member_delete failed but did not set error code&amp;quot;);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	long long int get_id() {
&lt;br&gt;+	osync_memberid get_id() {
&lt;br&gt;&amp;nbsp;		return osync_member_get_id(self);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-- 
&lt;br&gt;1.6.2.5
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26349342&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-RFC--PATCH--API-change--long-long-patch-tp26349342p26349342.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26343882</id>
	<title>Re: osync_archive_save_ignored_conflict()</title>
	<published>2009-11-13T13:33:12Z</published>
	<updated>2009-11-13T13:33:12Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">On Fri, Nov 13, 2009 at 05:16:49PM +0100, Daniel Gollub wrote:
&lt;br&gt;&amp;gt; On Thursday 12 November 2009 10:23:59 pm Chris Frey wrote:
&lt;br&gt;&amp;gt; &amp;gt; This patch makes it much clearer to follow the IDs through the system.
&lt;br&gt;&amp;gt; &amp;gt; Thanks!
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Ok, thanks for your feedback. Just committed the patch.
&lt;br&gt;&lt;br&gt;I noticed that your patch added a prototype for
&lt;br&gt;osync_mapping_entry_get_member_id() to the opensync_mapping_entry_internals.h
&lt;br&gt;header.
&lt;br&gt;&lt;br&gt;Yet that function already exists in opensync_mapping_entry.h
&lt;br&gt;&lt;br&gt;Was this intended?
&lt;br&gt;&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26343882&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26343882.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26343854</id>
	<title>Re: new printf format checks and compiler settings</title>
	<published>2009-11-13T13:30:03Z</published>
	<updated>2009-11-13T13:30:03Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">On Thu, Nov 12, 2009 at 04:36:40PM -0500, Chris Frey wrote:
&lt;br&gt;&amp;gt; I think the GCC_FORMAT_CHECK is worth it in the long run (there were lots
&lt;br&gt;&amp;gt; of printf style errors in the code), but the (void*) casts are unfortunate.
&lt;br&gt;&amp;gt; Anyone know of a cleaner workaround?
&lt;br&gt;&lt;br&gt;After a conversation on #gcc on irc.freenode.net (thanks to segher),
&lt;br&gt;I had the following enlightenment:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the C standard does not guarantee that all pointers are the same
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size on all platforms
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - for example, data pointers and function pointers can have differing
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; formats
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the C standard guarantees that you can cast all pointers to void*
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and back
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the %p format string identifier only takes a void*
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - vararg functions cannot provide implicit casts, since there is
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; no prototype for the variable data
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - so in general, to be standard-C correct, you need to cast all
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %p pointers to vararg functions
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - the -pedantic option makes all this show up explicitly, but in
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; most cases you don't need it, at least with gcc
&lt;br&gt;&lt;br&gt;Basically there's no way around it, except disabling -pedantic in your
&lt;br&gt;compiles, or adding (void*) casts to all %p pointers.
&lt;br&gt;&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26343854&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/new-printf-format-checks-and-compiler-settings-tp26326915p26343854.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26339173</id>
	<title>Re: osync_archive_save_ignored_conflict()</title>
	<published>2009-11-13T08:16:49Z</published>
	<updated>2009-11-13T08:16:49Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Thursday 12 November 2009 10:23:59 pm Chris Frey wrote:
&lt;br&gt;&amp;gt; This patch makes it much clearer to follow the IDs through the system.
&lt;br&gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Ok, thanks for your feedback. Just committed the patch.
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26339173&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26339173&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26339173/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26339173.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26326915</id>
	<title>new printf format checks and compiler settings</title>
	<published>2009-11-12T13:36:40Z</published>
	<updated>2009-11-12T13:36:40Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I noticed that scriptor made some changes to the ldap-sync module,
&lt;br&gt;based on the new warnings caused by my GCC_FORMAT_CHECK patch. (r5955)
&lt;br&gt;&lt;br&gt;I noticed that now there's a lot of (void*) casts for the osync_trace()
&lt;br&gt;calls, and that's likely due to using -pedantic when compiling.
&lt;br&gt;&lt;br&gt;I think the GCC_FORMAT_CHECK is worth it in the long run (there were lots
&lt;br&gt;of printf style errors in the code), but the (void*) casts are unfortunate.
&lt;br&gt;Anyone know of a cleaner workaround?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26326915&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/new-printf-format-checks-and-compiler-settings-tp26326915p26326915.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26326697</id>
	<title>Re: osync_archive_save_ignored_conflict()</title>
	<published>2009-11-12T13:23:59Z</published>
	<updated>2009-11-12T13:23:59Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">On Sun, Nov 08, 2009 at 06:16:46PM +0100, Daniel Gollub wrote:
&lt;br&gt;&amp;gt; Find attachtd a proof of concept patch which is implementing this ...
&lt;br&gt;&lt;br&gt;This patch makes it much clearer to follow the IDs through the system.
&lt;br&gt;Thanks!
&lt;br&gt;&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26326697&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26326697.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26326457</id>
	<title>Re: osync_archive_save_ignored_conflict()</title>
	<published>2009-11-12T13:08:13Z</published>
	<updated>2009-11-12T13:08:13Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">On Sun, Nov 08, 2009 at 05:14:23PM +0100, Daniel Gollub wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Saturday 07 November 2009 12:58:38 am Chris Frey wrote:
&lt;br&gt;&amp;gt; &amp;gt; Hi,
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; In the opensync_archive_internals.h header, _save_ignored_conflict()
&lt;br&gt;&amp;gt; &amp;gt; is documented as such:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; /**
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;* @brief Saves an entry in the ignored conflict list.
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;*
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;* @param archive The group archive
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;* @param objtype Reported object type of entry
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;* @param mappingid Mapping Entry ID of entry
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That's correct.
&lt;/div&gt;&lt;br&gt;[...]
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; Isn't the entryid field used for the archive id's themselves, and not the
&lt;br&gt;&amp;gt; &amp;gt; mapping ids?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Not quite sure which ID you mean for &amp;quot;archive id&amp;quot;.
&lt;br&gt;&lt;br&gt;By &amp;quot;archive id&amp;quot; I'm referring to the IDs returned by the function
&lt;br&gt;osync_archive_save_change(), which seems to be used in other functions
&lt;br&gt;to refer to a row number in the tbl_changes table.
&lt;br&gt;&lt;br&gt;By &amp;quot;mapping id&amp;quot;, I'm referring to IDs returned by the function
&lt;br&gt;osync_mapping_table_get_next_id().
&lt;br&gt;&lt;br&gt;According to your email above, the ID in osync_archive_save_ignored_conflict()
&lt;br&gt;is a mapping id. &amp;nbsp;This is what I was confused about.
&lt;br&gt;&lt;br&gt;It also seems like the id field in tbl_changelog is not used?
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; While looking into this i found a bug in OpenSync which broke the support
&lt;br&gt;&amp;gt; of &amp;quot;ignore conflicts&amp;quot;. Which is hopefully fixed now with r5950
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Here is a dump of the tbl_changes and tbl_changelog, which contains two
&lt;br&gt;&amp;gt; conflicts which got ignored. (I used for that a group with two file-sync members)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;[snip]
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; (changetypes: 3 == deleted, 4 == modified)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; And indeed this looks pretty strange - 4 tbl_changelog for 2 mappings ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The information is missing which member was sending which changetype ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I guess it should look like this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ----8&amp;lt;---
&lt;br&gt;&amp;gt; BEGIN TRANSACTION;
&lt;br&gt;&amp;gt; CREATE TABLE tbl_changelog (objtype VARCHAR(64) NOT NULL, memberid INTEGER NOT NULL, mappingid INTEGER NOT NULL, changetype INTEGER NOT NULL, PRIMARY KEY (objtype, memberid, 
&lt;br&gt;&amp;gt; mappingid) );
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',1,4,4);
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',2,4,4);
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',1,6,4);
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',2,6,3);
&lt;br&gt;&amp;gt; COMMIT;
&lt;br&gt;&amp;gt; ----&amp;gt;8---
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Does this sound sane?
&lt;br&gt;&amp;gt; Does this address your question?
&lt;/div&gt;&lt;br&gt;I'm sorry, but I don't fully understand the tables yet, so I can't
&lt;br&gt;comment on whether it is sane. &amp;nbsp;It does look better that there are no
&lt;br&gt;NULL values in the ID field.
&lt;br&gt;&lt;br&gt;My question was merely which ID belonged where, since I'm working on the
&lt;br&gt;long long patch.
&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26326457&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26326457.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26321097</id>
	<title>Re: Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-12T07:50:50Z</published>
	<updated>2009-11-12T07:50:50Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Daniel Gollub wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Thursday 12 November 2009 04:27:04 pm Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; I am aware that I can create several plugins; but I was thinking that 
&lt;br&gt;&amp;gt;&amp;gt; maybe there was a way to version plugins / plugin configurations.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Oh i see .. i missudnerstood your initial topic. I haven't thought about that 
&lt;br&gt;&amp;gt; yet. I guess thats not a problem we should concentrate on today .. .maybe we 
&lt;br&gt;&amp;gt; should first get something which actually makes syning work and then talk 
&lt;br&gt;&amp;gt; about handling different versions.
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;I have created ticket 1189 so we don't forget...
&lt;br&gt;&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26321097&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26321097.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26320830</id>
	<title>Re: Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-12T07:37:21Z</published>
	<updated>2009-11-12T07:37:21Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Juha Tuomala wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, 9 Nov 2009, Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt;&amp;gt; A member of a group has a configuration file.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Would it be possible to implement some mechanism, which would allow us
&lt;br&gt;&amp;gt;&amp;gt; to have more than one default configuration file per plugin?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This would make sense, if different versions of a plugin supports
&lt;br&gt;&amp;gt;&amp;gt; different AdvancedOptions, different Resources, etc.
&lt;br&gt;&amp;gt; Correct me if I'm wrong, if I say that:
&lt;br&gt;&amp;gt; - the file is in XML format
&lt;br&gt;&amp;gt; - X in XML stands for eXtensible
&lt;br&gt;&amp;gt; - tools reading the XML don't care about stuff they don't understand.
&lt;br&gt;&amp;gt; - thus the XML, the configuration file is always backwards compatible?
&lt;br&gt;&amp;gt; - thus the same file can be used regardless of versions?
&lt;/div&gt;The challenge is not so much the syntax. Even the schema is the same for 
&lt;br&gt;all plugin configuration files. And a Frontend would probably let the 
&lt;br&gt;OpenSync library do the parsing anyway.
&lt;br&gt;&lt;br&gt;The challenge I am thinking of is this: How can a Frontend present a 
&lt;br&gt;nice GUI to configure ANY OpenSync plugin?
&lt;br&gt;&lt;br&gt;Maybe I am wrong, but the way I do it in blueZync is to look at the 
&lt;br&gt;advanced options and creating GUI for those, and look at the resources 
&lt;br&gt;and create GUI for the resources defined in the default config file.
&lt;br&gt;&lt;br&gt;Obviously a Frontend may have specific knowledge of specific plugins and 
&lt;br&gt;create an even better GUI, but it would be nice if a Frontend could 
&lt;br&gt;automatically create a GUI for any OpenSync plugin automatically.
&lt;br&gt;&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26320830&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26320830.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26320804</id>
	<title>Re: Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-12T07:35:22Z</published>
	<updated>2009-11-12T07:35:22Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Thursday 12 November 2009 04:27:04 pm Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt; I am aware that I can create several plugins; but I was thinking that 
&lt;br&gt;&amp;gt; maybe there was a way to version plugins / plugin configurations.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Oh i see .. i missudnerstood your initial topic. I haven't thought about that 
&lt;br&gt;yet. I guess thats not a problem we should concentrate on today .. .maybe we 
&lt;br&gt;should first get something which actually makes syning work and then talk 
&lt;br&gt;about handling different versions.
&lt;br&gt;&lt;br&gt;But what we have &amp;nbsp;- what is maybe interesting for your &amp;quot;problem&amp;quot; ... we have 
&lt;br&gt;the OSyncUpdater which updates old configs to new configs, with the help of 
&lt;br&gt;XSLT conversion stylesheets.
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26320804&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26320804&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26320804/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26320804.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26320674</id>
	<title>Re: Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-12T07:27:04Z</published>
	<updated>2009-11-12T07:27:04Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Daniel Gollub wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; [...]
&lt;br&gt;&amp;gt; Close, try get_sync_info(). get_sync_info() get called when all the plugins 
&lt;br&gt;&amp;gt; get loaded:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; e.g. osynctool --listplugins
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Perfect example would be the SyncML plugin. It's registering 4 plugins in one 
&lt;br&gt;&amp;gt; get_version() call...
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; [...]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This is what i try suggested some weeks ago to &amp;nbsp;spawn several plugins for the 
&lt;br&gt;&amp;gt; mozilla-sync to avoid that user have to set the external_command by their own.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It's just about registering some OSyncPlugin* to OSyncPluginEnv ... even if 
&lt;br&gt;&amp;gt; those are the same shared-module or so.
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;Thank you very much for the explanation!
&lt;br&gt;&lt;br&gt;I am aware that I can create several plugins; but I was thinking that 
&lt;br&gt;maybe there was a way to version plugins / plugin configurations.
&lt;br&gt;&lt;br&gt;But from the answer I understand that this is not the case, so I will 
&lt;br&gt;just create two plugins (the new one probably named mozilla-sync-3).
&lt;br&gt;&lt;br&gt;(As mozilla-sync is now a pure external plugin it will be with two xml 
&lt;br&gt;files, not get_sync_info() ).
&lt;br&gt;&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26320674&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26320674.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26315976</id>
	<title>Re: Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-12T01:49:38Z</published>
	<updated>2009-11-12T01:49:38Z</updated>
	<author>
		<name>Juha Tuomala-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&lt;br&gt;On Mon, 9 Nov 2009, Henrik /KaarPoSoft wrote:
&lt;br&gt;&amp;gt; A member of a group has a configuration file.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Would it be possible to implement some mechanism, which would allow us
&lt;br&gt;&amp;gt; to have more than one default configuration file per plugin?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This would make sense, if different versions of a plugin supports
&lt;br&gt;&amp;gt; different AdvancedOptions, different Resources, etc.
&lt;br&gt;&lt;br&gt;Correct me if I'm wrong, if I say that:
&lt;br&gt;- the file is in XML format
&lt;br&gt;- X in XML stands for eXtensible
&lt;br&gt;- tools reading the XML don't care about stuff they don't understand.
&lt;br&gt;- thus the XML, the configuration file is always backwards compatible?
&lt;br&gt;- thus the same file can be used regardless of versions?
&lt;br&gt;&lt;br&gt;br,
&lt;br&gt;&lt;br&gt;Tuju
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Ajatteleva ihminen tarvitsee unta.
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26315976&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26315976.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26315678</id>
	<title>Re: Could we have several versions of a pluginconfiguration file?</title>
	<published>2009-11-12T01:21:33Z</published>
	<updated>2009-11-12T01:21:33Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Tuesday 10 November 2009 09:56:22 pm Jakub Marczynski wrote:
&lt;br&gt;&amp;gt; &amp;gt; I could of course create just one default configuration file with both
&lt;br&gt;&amp;gt; &amp;gt; Formats, but a GUI would not be able to figure out that this particular
&lt;br&gt;&amp;gt; &amp;gt; version of the external plugin will only support one of them.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Maybe, as a temporary solution, just make thin new version of a plugin
&lt;br&gt;&amp;gt; &amp;nbsp;exist &amp;nbsp;as a new plugin, with another configuration file. Then, there's no
&lt;br&gt;&amp;gt; &amp;nbsp;need to change the Opensync logic. Does it make any sense?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Right. The &amp;quot;thinest&amp;quot; way is to build a OSyncPlugin* and register it with 
&lt;br&gt;osync_plugin_env_register_plugin()!
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I have never figured out what the plugin's get_version is used for.
&lt;br&gt;&amp;gt; &amp;gt; Could it be used here?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This is a good point. I found a statement:
&lt;br&gt;&amp;gt; &amp;quot;The format/conversion and main plugin modules that are part of a plugin
&lt;br&gt;&amp;gt; &amp;nbsp;now &amp;nbsp;each have a function int get_version(void). At the moment this
&lt;br&gt;&amp;gt; &amp;nbsp;function must return 1. &amp;quot;
&lt;br&gt;&amp;gt; Is this &amp;quot;MUST&amp;quot; still so importart?
&lt;br&gt;&lt;br&gt;Yes, check:
&lt;br&gt;&lt;br&gt;---8&amp;lt;---
&lt;br&gt;osync_bool osync_module_check(OSyncModule *module, OSyncError **error)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int version = 0;
&lt;br&gt;[...]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; version = osync_module_get_version(module);
&lt;br&gt;[...]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (version != OPENSYNC_PLUGINVERSION) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_error_set(error, OSYNC_ERROR_GENERIC, &amp;quot;Plugin API 
&lt;br&gt;version mismatch. Is: %i. Should %i&amp;quot;, version, OPENSYNC_PLUGINVERSION);
&lt;br&gt;-----&amp;gt;8---
&lt;br&gt;&lt;br&gt;One day we might can use this to support several plugins which are 
&lt;br&gt;build/designed against different OpenSync plugins APIs.
&lt;br&gt;&lt;br&gt;Maybe we should introduce some #define instead of a confusing &amp;quot;return 0&amp;quot; ... 
&lt;br&gt;something like: return OSYNC_PLUGIN_SYNC_API_VERSION_1;
&lt;br&gt;&lt;br&gt;What do you think?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26315678&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26315678&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26315678/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26315678.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26315352</id>
	<title>Re: Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-12T00:50:12Z</published>
	<updated>2009-11-12T00:50:12Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Monday 09 November 2009 07:08:32 pm Henrik /KaarPoSoft wrote:
&lt;br&gt;[...]
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I have never figured out what the plugin's get_version is used for.
&lt;br&gt;&amp;gt; Could it be used here?
&lt;br&gt;&lt;br&gt;Close, try get_sync_info(). get_sync_info() get called when all the plugins 
&lt;br&gt;get loaded:
&lt;br&gt;&lt;br&gt;e.g. osynctool --listplugins
&lt;br&gt;&lt;br&gt;Perfect example would be the SyncML plugin. It's registering 4 plugins in one 
&lt;br&gt;get_version() call...
&lt;br&gt;&lt;br&gt;&lt;br&gt;You do this with osync_plugin_env_register_plugin() or so ...
&lt;br&gt;&lt;br&gt;&lt;br&gt;Just set different names for the plugins, then you can have several default-
&lt;br&gt;configuration, due to the different plugins names.
&lt;br&gt;&lt;br&gt;Example:
&lt;br&gt;&lt;br&gt;------8&amp;lt;-----
&lt;br&gt;osync_bool get_sync_info(OSyncPluginEnv *env, OSyncError **error)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OSyncPlugin *plugin;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; plugin = osync_plugin_new(error);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!plugin)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goto error;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_name(plugin, &amp;quot;syncml-http-server&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_longname(plugin, &amp;quot;SyncML over HTTP Server&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_description(plugin, &amp;quot;Plugin to synchronize with 
&lt;br&gt;SyncML over HTTP&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_initialize(plugin, syncml_http_server_init);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_finalize(plugin, finalize);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_discover(plugin, syncml_http_server_discover);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!osync_plugin_env_register_plugin(env, plugin, error))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goto error;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_unref(plugin);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; plugin = osync_plugin_new(error);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!plugin)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goto error;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_name(plugin, &amp;quot;syncml-http-client&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_longname(plugin, &amp;quot;SyncML over HTTP Client&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_description(plugin, &amp;quot;Plugin to synchronize with 
&lt;br&gt;SyncML over HTTP&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_initialize(plugin, syncml_http_client_init);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_finalize(plugin, finalize);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_set_discover(plugin, syncml_http_client_discover);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!osync_plugin_env_register_plugin(env, plugin, error))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goto error;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; osync_plugin_unref(plugin);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return TRUE;
&lt;br&gt;&lt;br&gt;error:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return FALSE;
&lt;br&gt;}
&lt;br&gt;----8&amp;lt;---
&lt;br&gt;&lt;br&gt;This is registering two plugins, which have two different dfeault-
&lt;br&gt;configuration: syncml-http-client and syncml-http-server.
&lt;br&gt;&lt;br&gt;In the case of the SyncML plugin those plugins just differ in the plugin init 
&lt;br&gt;function and discover function.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Any comments on this would be most appreciated.
&lt;br&gt;[...]
&lt;br&gt;&lt;br&gt;&lt;br&gt;This is what i try suggested some weeks ago to &amp;nbsp;spawn several plugins for the 
&lt;br&gt;mozilla-sync to avoid that user have to set the external_command by their own.
&lt;br&gt;&lt;br&gt;It's just about registering some OSyncPlugin* to OSyncPluginEnv ... even if 
&lt;br&gt;those are the same shared-module or so.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Hope this helps.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26315352&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26315352&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26315352/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26315352.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26291011</id>
	<title>Re: Could we have several versions of a pluginconfiguration file?</title>
	<published>2009-11-10T12:56:22Z</published>
	<updated>2009-11-10T12:56:22Z</updated>
	<author>
		<name>Jakub Marczynski</name>
	</author>
	<content type="html">Some comments from the &amp;quot;beginner's&amp;quot; point of view:
&lt;br&gt;&lt;br&gt;&amp;gt; Frontends may use the default configuration file to show a nice GUI.
&lt;br&gt;&amp;gt; This could include GUI for AdvancedOptions, and GUI for selecting
&lt;br&gt;&amp;gt; specific Resources.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Would it be possible to implement some mechanism, which would allow us
&lt;br&gt;&amp;gt; to have more than one default configuration file per plugin?
&lt;br&gt;&lt;br&gt;I guess there can be only one &amp;quot;default&amp;quot; file ;)
&lt;br&gt;Isn't it possible for the GUI to use only the necessary options from all 
&lt;br&gt;that are declared in the file?
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; As an example: Future versions of mozilla-sync may support only vformat,
&lt;br&gt;&amp;gt; whereas the current version supports xml-format.
&lt;br&gt;&amp;gt; It would be great if OpenSync could carry different configuration files
&lt;br&gt;&amp;gt; for this, and select the correct one depending on the actual blueZync it
&lt;br&gt;&amp;gt; is connecting to.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I could of course create just one default configuration file with both
&lt;br&gt;&amp;gt; Formats, but a GUI would not be able to figure out that this particular
&lt;br&gt;&amp;gt; version of the external plugin will only support one of them.
&lt;br&gt;&lt;br&gt;Maybe, as a temporary solution, just make thin new version of a plugin exist 
&lt;br&gt;as a new plugin, with another configuration file. Then, there's no need to 
&lt;br&gt;change the Opensync logic. Does it make any sense?
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; I have never figured out what the plugin's get_version is used for.
&lt;br&gt;&amp;gt; Could it be used here?
&lt;br&gt;&lt;br&gt;This is a good point. I found a statement:
&lt;br&gt;&amp;quot;The format/conversion and main plugin modules that are part of a plugin now 
&lt;br&gt;each have a function int get_version(void). At the moment this function must 
&lt;br&gt;return 1. &amp;quot;
&lt;br&gt;Is this &amp;quot;MUST&amp;quot; still so importart?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Bloosky
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26291011&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jaquba@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26291011&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26291011.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26276439</id>
	<title>mozilla-format FORMAT plugin?</title>
	<published>2009-11-09T16:46:46Z</published>
	<updated>2009-11-09T16:46:46Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Dear all,
&lt;br&gt;&lt;br&gt;During my work on upgrading mozilla-sync to Thunderbird 3, I am once 
&lt;br&gt;again thinking about creating a mozilla-format FORMAT plugin.
&lt;br&gt;&lt;br&gt;But, as always, I have a question...
&lt;br&gt;&lt;br&gt;The mozilla-format would be an non-string format - basically a C struct 
&lt;br&gt;with a couple of members, implementing a key/value array.
&lt;br&gt;The struct would be wrapped in functions like 
&lt;br&gt;mozilla_format_add_key_value_pair(key, value).
&lt;br&gt;&lt;br&gt;Now the question is: Where to put the definition of the C struct and the 
&lt;br&gt;wrapping functions?
&lt;br&gt;&lt;br&gt;Those definitions would have to be accessible both by the mozilla-format 
&lt;br&gt;FORMAT plugin and the mozilla-sync SYNC plugin (an external plugin, by 
&lt;br&gt;the way...)
&lt;br&gt;&lt;br&gt;Looking at xmlformat we have functions like osync_xmlformat_parse and 
&lt;br&gt;osync_xmlformat_assemble defined in the main OpenSync codebase 
&lt;br&gt;(opensync/xmlformat/opensync_xmlformat.c), not in the format plugin.
&lt;br&gt;But I guess we would not like to pollute the main OpenSync codebase with 
&lt;br&gt;mozilla-format stuff.
&lt;br&gt;&lt;br&gt;Looking at vformat, it seems that the internal format is a string, so 
&lt;br&gt;even if the vformat plugin has some internal woodo to convert to/from 
&lt;br&gt;xmlformat, a peer wishing to create a vformat would just create a string.
&lt;br&gt;But this would not work for mozilla-format, where we would need to 
&lt;br&gt;create the C struct.
&lt;br&gt;&lt;br&gt;Putting the definition of the C struct and the wrapping functions inside 
&lt;br&gt;the format plugin is no good, as they would not be published for the 
&lt;br&gt;mozilla-sync SYNC plugin to use.
&lt;br&gt;&lt;br&gt;So, I need some help here:
&lt;br&gt;Where to put the definition of the C struct and the wrapping functions?
&lt;br&gt;&lt;br&gt;Bonus question:
&lt;br&gt;If I want to create a converter between mozilla-format and vformat, I 
&lt;br&gt;would need access to the vformat functions. Currently those are internal 
&lt;br&gt;function in the vformat plugin. How can I get access to them?
&lt;br&gt;&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26276439&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/mozilla-format-FORMAT-plugin--tp26276439p26276439.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26271193</id>
	<title>Capabilities and ticket 1183.</title>
	<published>2009-11-09T10:19:37Z</published>
	<updated>2009-11-09T10:19:37Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Dear all,
&lt;br&gt;&lt;br&gt;As far as I can see, ticket 1183 is a real showstopper for 0.40 in 
&lt;br&gt;general and mozilla-sync in particular.
&lt;br&gt;&lt;br&gt;Are anybody working on this?
&lt;br&gt;&lt;br&gt;If not, I may try to have a go at it, although it may take some time...
&lt;br&gt;&lt;br&gt;However, I have a question:
&lt;br&gt;&lt;br&gt;Assume we have a group with two members M1 and M2.
&lt;br&gt;Member M1 supports ObjFormat F1 with capabilities CAP1, and member M2 
&lt;br&gt;supports ObjFormat F2 with capabilities CAP2.
&lt;br&gt;&lt;br&gt;The function _osync_obj_engine_mapping_find will try to compare two 
&lt;br&gt;changes CHANGE1 and CHANGE2 from the two members.
&lt;br&gt;This is done by: _osync_obj_engine_clone_and_demerge_change(CAPS2, 
&lt;br&gt;CHANGE1) and _osync_obj_engine_clone_and_demerge_change(CAPS1, CHANGE2).
&lt;br&gt;&lt;br&gt;This means, that an ObjFormat F1, which supplies a (de)merger with 
&lt;br&gt;capabilties CAP1, needs to be able to demerge changes of ObjFormat F2, 
&lt;br&gt;which it does not know.
&lt;br&gt;&lt;br&gt;Some guidance on how the is supposed to work would be most appreciated.
&lt;br&gt;&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26271193&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Capabilities-and-ticket-1183.-tp26271193p26271193.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26271027</id>
	<title>Could we have several versions of a plugin configuration file?</title>
	<published>2009-11-09T10:08:32Z</published>
	<updated>2009-11-09T10:08:32Z</updated>
	<author>
		<name>Henrik /KaarPoSoft-2</name>
	</author>
	<content type="html">Dear all,
&lt;br&gt;&lt;br&gt;A member of a group has a configuration file.
&lt;br&gt;The default configuration file comes from the plugin.
&lt;br&gt;E.g. &lt;a href=&quot;http://opensync.org/browser/plugins/mozilla-sync/trunk/src/mozilla-sync&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/browser/plugins/mozilla-sync/trunk/src/mozilla-sync&lt;/a&gt;&lt;br&gt;&lt;br&gt;Frontends may use the default configuration file to show a nice GUI.
&lt;br&gt;This could include GUI for AdvancedOptions, and GUI for selecting 
&lt;br&gt;specific Resources.
&lt;br&gt;&lt;br&gt;Would it be possible to implement some mechanism, which would allow us 
&lt;br&gt;to have more than one default configuration file per plugin?
&lt;br&gt;&lt;br&gt;This would make sense, if different versions of a plugin supports 
&lt;br&gt;different AdvancedOptions, different Resources, etc.
&lt;br&gt;In particular, it would make a lot of sense for external plugins, where 
&lt;br&gt;the OpenSync SVN only contains configuration files, but the actual code 
&lt;br&gt;is hosted, build and distributed somewhere else.
&lt;br&gt;Several different default configuration files could be included in 
&lt;br&gt;OpenSync, and OpenSync could select the appropriate configuration file 
&lt;br&gt;depending on the actual external plugin version.
&lt;br&gt;&lt;br&gt;As an example: Future versions of mozilla-sync may support only vformat, 
&lt;br&gt;whereas the current version supports xml-format.
&lt;br&gt;It would be great if OpenSync could carry different configuration files 
&lt;br&gt;for this, and select the correct one depending on the actual blueZync it 
&lt;br&gt;is connecting to.
&lt;br&gt;&lt;br&gt;I could of course create just one default configuration file with both 
&lt;br&gt;Formats, but a GUI would not be able to figure out that this particular 
&lt;br&gt;version of the external plugin will only support one of them.
&lt;br&gt;&lt;br&gt;Daniel has already described how this is done for capabilities.
&lt;br&gt;See &lt;a href=&quot;http://old.nabble.com/xml-file-with-capabilities-td25978588.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/xml-file-with-capabilities-td25978588.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;I was wondering if we could do something similar for the default 
&lt;br&gt;configuration file.
&lt;br&gt;&lt;br&gt;As far as I can see, the challenge is, that the capabilities file is 
&lt;br&gt;read AFTER discover, and it is discover which sets the version 
&lt;br&gt;information used to select the appropriate capabilities.
&lt;br&gt;On the other hand, the default capabilities file would be needed BEFORE 
&lt;br&gt;discover.
&lt;br&gt;&lt;br&gt;I have never figured out what the plugin's get_version is used for. 
&lt;br&gt;Could it be used here?
&lt;br&gt;&lt;br&gt;Any comments on this would be most appreciated.
&lt;br&gt;&lt;br&gt;/Henrik
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26271027&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Could-we-have-several-versions-of-a-plugin-configuration-file--tp26271027p26271027.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26269081</id>
	<title>Re: wrong tagging</title>
	<published>2009-11-09T08:15:27Z</published>
	<updated>2009-11-09T08:15:27Z</updated>
	<author>
		<name>Michael Bell</name>
	</author>
	<content type="html">Daniel Gollub wrote:
&lt;br&gt;&amp;gt; On Friday 06 November 2009 05:00:01 pm Michael Bell wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Michael, i already asked this on an OpenSync ticket, do you want to have the 
&lt;br&gt;&amp;gt; same post-commit hook installed in libsyncml and libwbxml2 Subversion?
&lt;br&gt;&amp;gt; The hook gets active as soon you copy a direcotry into */tags/$ ... the commit 
&lt;br&gt;&amp;gt; takes a bit longer since on the subvesrion hosts an entire checkout of the tag 
&lt;br&gt;&amp;gt; needs to be done to modify all externals properties ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Check: &lt;a href=&quot;http://people.b1-systems.de/~gollub/pin-external-on-tag.sh&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.b1-systems.de/~gollub/pin-external-on-tag.sh&lt;/a&gt;&lt;br&gt;&lt;br&gt;I use another tagging &amp;quot;technology&amp;quot;. I just use tar and not svn cp. So
&lt;br&gt;sorry for my ignorance and no, actually I don't want this hook.
&lt;br&gt;&lt;br&gt;Best regards
&lt;br&gt;&lt;br&gt;Michael
&lt;br&gt;-- 
&lt;br&gt;___________________________________________________________________
&lt;br&gt;&lt;br&gt;Michael Bell &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Humboldt-Universitaet zu Berlin
&lt;br&gt;&lt;br&gt;Tel.: +49 (0)30-2093 2482 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ZE Computer- und Medienservice
&lt;br&gt;Fax: &amp;nbsp;+49 (0)30-2093 2704 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unter den Linden 6
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26269081&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.bell@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; D-10099 Berlin
&lt;br&gt;___________________________________________________________________
&lt;br&gt;&lt;br&gt;PGP Fingerprint: 09E4 3D29 4156 2774 0F2C &amp;nbsp;C643 D8BD 1918 2030 5AAB
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26269081&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/wrong-tagging-tp26234345p26269081.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26255721</id>
	<title>Re: osync_archive_save_ignored_conflict()</title>
	<published>2009-11-08T09:16:46Z</published>
	<updated>2009-11-08T09:16:46Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Sunday 08 November 2009 05:14:23 pm Daniel Gollub wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I guess it should look like this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ----8&amp;lt;---
&lt;br&gt;&amp;gt; BEGIN TRANSACTION;
&lt;br&gt;&amp;gt; CREATE TABLE tbl_changelog (objtype VARCHAR(64) NOT NULL, memberid INTEGER
&lt;br&gt;&amp;gt; &amp;nbsp;NOT NULL, mappingid INTEGER NOT NULL, changetype INTEGER NOT NULL, PRIMARY
&lt;br&gt;&amp;gt; &amp;nbsp;KEY (objtype, memberid, &amp;nbsp;mappingid) );
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',1,4,4);
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',2,4,4);
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',1,6,4);
&lt;br&gt;&amp;gt; INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',2,6,3);
&lt;br&gt;&amp;gt; COMMIT;
&lt;br&gt;&amp;gt; ----&amp;gt;8---
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;/div&gt;Find attachtd a proof of concept patch which is implementing this ...
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;&lt;br&gt;&amp;nbsp;archive/opensync_archive.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; 31 +++++++++++++++--------------
&lt;br&gt;&amp;nbsp;archive/opensync_archive_internals.h &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;8 ++++---
&lt;br&gt;&amp;nbsp;engine/opensync_mapping_engine.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; 16 ++++++++++++++
&lt;br&gt;&amp;nbsp;engine/opensync_mapping_engine_internals.h | &amp;nbsp; &amp;nbsp;1 
&lt;br&gt;&amp;nbsp;engine/opensync_obj_engine.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; 12 +++++++----
&lt;br&gt;&amp;nbsp;mapping/opensync_mapping_entry_internals.h | &amp;nbsp; &amp;nbsp;2 +
&lt;br&gt;&amp;nbsp;6 files changed, 48 insertions(+), 22 deletions(-)
&lt;br&gt;&lt;br&gt;---
&lt;br&gt;&lt;br&gt;&lt;br&gt;Index: opensync/mapping/opensync_mapping_entry_internals.h
&lt;br&gt;===================================================================
&lt;br&gt;--- opensync/mapping/opensync_mapping_entry_internals.h	(revision 5920)
&lt;br&gt;+++ opensync/mapping/opensync_mapping_entry_internals.h	(working copy)
&lt;br&gt;@@ -47,4 +47,6 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/*@}*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+long long int osync_mapping_entry_get_member_id(OSyncMappingEntry *entry);
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;#endif /*OPENSYNC_MAPPING_ENTRY_INTERNALS_H_*/
&lt;br&gt;Index: opensync/archive/opensync_archive.c
&lt;br&gt;===================================================================
&lt;br&gt;--- opensync/archive/opensync_archive.c	(revision 5926)
&lt;br&gt;+++ opensync/archive/opensync_archive.c	(working copy)
&lt;br&gt;@@ -94,7 +94,7 @@
&lt;br&gt;&amp;nbsp;		return TRUE;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	query = &amp;quot;CREATE TABLE tbl_changelog (objtype VARCHAR(64), id INTEGER, entryid INTEGER, changetype INTEGER, PRIMARY KEY (objtype, id) )&amp;quot;;
&lt;br&gt;+	query = &amp;quot;CREATE TABLE tbl_changelog (objtype VARCHAR(64) NOT NULL, memberid INTEGER NOT NULL, mappingid INTEGER NOT NULL, changetype INTEGER NOT NULL, PRIMARY KEY 
&lt;br&gt;(objtype, memberid, mappingid) )&amp;quot;;
&lt;br&gt;&amp;nbsp;	if (!osync_db_query(db, query, error)) {
&lt;br&gt;&amp;nbsp;		goto error;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;@@ -478,26 +478,27 @@
&lt;br&gt;&amp;nbsp;	return FALSE;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const char *objtype, OSyncList **ids, OSyncList **changetypes, OSyncError **error)
&lt;br&gt;+osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const char *objtype, OSyncList **memberids, OSyncList **mappingids, OSyncList **changetypes, 
&lt;br&gt;OSyncError **error)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	OSyncList *result = NULL, *row = NULL, *column = NULL;
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;-	long long int id = 0;
&lt;br&gt;+	long long int mappingid = 0, memberid = 0;
&lt;br&gt;&amp;nbsp;	int changetype = 0;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %s, %p, %p)&amp;quot;, __func__, archive, objtype, ids, error);
&lt;br&gt;+	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %s, %p, %p)&amp;quot;, __func__, archive, objtype, mappingids, error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_assert(archive);
&lt;br&gt;&amp;nbsp;	osync_assert(objtype);
&lt;br&gt;-	osync_assert(ids);
&lt;br&gt;+	osync_assert(memberids);
&lt;br&gt;+	osync_assert(mappingids);
&lt;br&gt;&amp;nbsp;	osync_assert(changetypes);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	if (!osync_archive_create_changelog(archive-&amp;gt;db, objtype, error))
&lt;br&gt;&amp;nbsp;		goto error;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	escaped_objtype = osync_db_sql_escape(objtype);
&lt;br&gt;-	query = osync_strdup_printf(&amp;quot;SELECT entryid, changetype FROM tbl_changelog WHERE objtype='%s' ORDER BY id&amp;quot;, escaped_objtype);
&lt;br&gt;+	query = osync_strdup_printf(&amp;quot;SELECT memberid, mappingid, changetype FROM tbl_changelog WHERE objtype='%s' ORDER BY mappingid&amp;quot;, escaped_objtype);
&lt;br&gt;&amp;nbsp;	osync_free(escaped_objtype);
&lt;br&gt;&amp;nbsp;	escaped_objtype = NULL;
&lt;br&gt;&amp;nbsp;	result = osync_db_query_table(archive-&amp;gt;db, query, error);
&lt;br&gt;@@ -511,13 +512,15 @@
&lt;br&gt;&amp;nbsp;	for (row = result; row; row = row-&amp;gt;next) { 
&lt;br&gt;&amp;nbsp;		column = row-&amp;gt;data;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		id = g_ascii_strtoull(osync_list_nth_data(column, 0), NULL, 0);
&lt;br&gt;-		changetype = atoi(osync_list_nth_data(column, 1));
&lt;br&gt;+		memberid = g_ascii_strtoull(osync_list_nth_data(column, 0), NULL, 0);
&lt;br&gt;+		mappingid = atoi(osync_list_nth_data(column, 1));
&lt;br&gt;+		changetype = atoi(osync_list_nth_data(column, 2));
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;-		*ids = osync_list_append((*ids), GINT_TO_POINTER((int)id));
&lt;br&gt;+		*memberids = osync_list_append((*memberids), GINT_TO_POINTER((int)memberid));
&lt;br&gt;+		*mappingids = osync_list_append((*mappingids), GINT_TO_POINTER((int)mappingid));
&lt;br&gt;&amp;nbsp;		*changetypes = osync_list_append((*changetypes), GINT_TO_POINTER((int)changetype));
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;-		osync_trace(TRACE_INTERNAL, &amp;quot;Loaded ignored mapping with entryid %lli&amp;quot;, id);
&lt;br&gt;+		osync_trace(TRACE_INTERNAL, &amp;quot;Loaded ignored mapping with mappingid %lli&amp;quot;, mappingid);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_db_free_list(result);	
&lt;br&gt;@@ -529,11 +532,11 @@
&lt;br&gt;&amp;nbsp;	return FALSE;	
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int id, OSyncChangeType changetype, OSyncError **error)
&lt;br&gt;+osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int memberid, long long int mappingid, OSyncChangeType changetype, 
&lt;br&gt;OSyncError **error)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	char *query = NULL;
&lt;br&gt;&amp;nbsp;	char *escaped_objtype = NULL;
&lt;br&gt;-	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %s, %lli, %p)&amp;quot;, __func__, archive, objtype, id, error);
&lt;br&gt;+	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p, %s, %lli, %lli, %p)&amp;quot;, __func__, archive, objtype, memberid, mappingid, error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_assert(archive);
&lt;br&gt;&amp;nbsp;	osync_assert(objtype);
&lt;br&gt;@@ -542,7 +545,7 @@
&lt;br&gt;&amp;nbsp;		goto error;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	escaped_objtype = osync_db_sql_escape(objtype);
&lt;br&gt;-	query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changelog (objtype, entryid, changetype) VALUES('%s', '%lli', '%i')&amp;quot;, escaped_objtype, id, changetype);
&lt;br&gt;+	query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changelog (objtype, memberid, mappingid, changetype) VALUES('%s', '%lli', '%lli', '%i')&amp;quot;, escaped_objtype, memberid, 
&lt;br&gt;mappingid, changetype);
&lt;br&gt;&amp;nbsp;	osync_free(escaped_objtype);
&lt;br&gt;&amp;nbsp;	escaped_objtype = NULL;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -553,7 +556,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_free(query);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	osync_trace(TRACE_EXIT, &amp;quot;%s: %lli&amp;quot;, __func__, id);
&lt;br&gt;+	osync_trace(TRACE_EXIT, &amp;quot;%s: %lli&amp;quot;, __func__, mappingid);
&lt;br&gt;&amp;nbsp;	return TRUE;
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp; error:
&lt;br&gt;Index: opensync/archive/opensync_archive_internals.h
&lt;br&gt;===================================================================
&lt;br&gt;--- opensync/archive/opensync_archive_internals.h	(revision 5926)
&lt;br&gt;+++ opensync/archive/opensync_archive_internals.h	(working copy)
&lt;br&gt;@@ -136,24 +136,26 @@
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; * @param archive The group archive
&lt;br&gt;&amp;nbsp; * @param objtype Requested object type 
&lt;br&gt;- * @param mappingsids List to store the archive (database) ids of each entry
&lt;br&gt;+ * @param memberids List to store the member ids of each entry
&lt;br&gt;+ * @param mappingsids List to store the mapping ids of each entry
&lt;br&gt;&amp;nbsp; * @param changetypes List to store the changetypes for each entry
&lt;br&gt;&amp;nbsp; * @param error Pointer to an error struct
&lt;br&gt;&amp;nbsp; * @return TRUE on when all changes successfully loaded otherwise FALSE
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const char *objtype, OSyncList **mappingsids, OSyncList **changetypes, OSyncError **error);
&lt;br&gt;+osync_bool osync_archive_load_ignored_conflicts(OSyncArchive *archive, const char *objtype, OSyncList **memberids, OSyncList **mappingsids, OSyncList **changetypes, 
&lt;br&gt;OSyncError **error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Saves an entry in the ignored conflict list.
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; * @param archive The group archive
&lt;br&gt;&amp;nbsp; * @param objtype Reported object type of entry
&lt;br&gt;+ * @param memberid Member ID of entry 
&lt;br&gt;&amp;nbsp; * @param mappingid Mapping Entry ID of entry 
&lt;br&gt;&amp;nbsp; * @param changetype Changetype of entry 
&lt;br&gt;&amp;nbsp; * @param error Pointer to an error struct
&lt;br&gt;&amp;nbsp; * @return Returns TRUE on success, FALSE otherwise 
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int mappingid, OSyncChangeType changetype, OSyncError **error);
&lt;br&gt;+osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int memberid, long long int mappingid, OSyncChangeType changetype, 
&lt;br&gt;OSyncError **error);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * @brief Deletes all ignored conflict entries of the changelog with the objtype.
&lt;br&gt;Index: opensync/engine/opensync_mapping_engine.c
&lt;br&gt;===================================================================
&lt;br&gt;--- opensync/engine/opensync_mapping_engine.c	(revision 5920)
&lt;br&gt;+++ opensync/engine/opensync_mapping_engine.c	(working copy)
&lt;br&gt;@@ -126,6 +126,20 @@
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+OSyncMappingEntryEngine *osync_mapping_engine_find_entry_by_memberid(OSyncMappingEngine *engine, long long int memberid)
&lt;br&gt;+{
&lt;br&gt;+	OSyncList *e;
&lt;br&gt;+	for (e = engine-&amp;gt;entries; e; e = e-&amp;gt;next) {
&lt;br&gt;+		OSyncMappingEntryEngine *entry = e-&amp;gt;data;
&lt;br&gt;+
&lt;br&gt;+		if (osync_mapping_entry_get_member_id(entry-&amp;gt;entry) == memberid)
&lt;br&gt;+			return entry;
&lt;br&gt;+	}
&lt;br&gt;+	
&lt;br&gt;+	return NULL;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;static OSyncMappingEntryEngine *_osync_mapping_engine_find_entry(OSyncMappingEngine *engine, OSyncChange *change)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	OSyncList *e;
&lt;br&gt;@@ -620,7 +634,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	for (c = engine-&amp;gt;entries; c; c = c-&amp;gt;next) {
&lt;br&gt;&amp;nbsp;		OSyncMappingEntryEngine *entry = c-&amp;gt;data;
&lt;br&gt;-		osync_archive_save_ignored_conflict(archive, objtype, id, osync_change_get_changetype(entry-&amp;gt;change), error);
&lt;br&gt;+		osync_archive_save_ignored_conflict(archive, objtype, osync_mapping_entry_get_member_id(entry-&amp;gt;entry), id, osync_change_get_changetype(entry-&amp;gt;change), error);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_status_update_mapping(engine-&amp;gt;parent-&amp;gt;parent, engine, OSYNC_ENGINE_MAPPING_EVENT_SOLVED, NULL);
&lt;br&gt;Index: opensync/engine/opensync_obj_engine.c
&lt;br&gt;===================================================================
&lt;br&gt;--- opensync/engine/opensync_obj_engine.c	(revision 5938)
&lt;br&gt;+++ opensync/engine/opensync_obj_engine.c	(working copy)
&lt;br&gt;@@ -767,8 +767,8 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;static osync_bool _inject_changelog_entries(OSyncObjEngine *engine, OSyncError **error) {
&lt;br&gt;&amp;nbsp;	OSyncList *ids = NULL;
&lt;br&gt;-	OSyncList *changetypes = NULL;
&lt;br&gt;-	OSyncList *j = NULL, *t = NULL;
&lt;br&gt;+	OSyncList *changetypes = NULL, *memberids = NULL;
&lt;br&gt;+	OSyncList *j = NULL, *t = NULL, *mid = NULL;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_trace(TRACE_ENTRY, &amp;quot;%s(%p)&amp;quot;, __func__, engine);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -776,12 +776,13 @@
&lt;br&gt;&amp;nbsp;	osync_assert(engine-&amp;gt;archive);
&lt;br&gt;&amp;nbsp;	osync_assert(engine-&amp;gt;objtype);
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	if (!osync_archive_load_ignored_conflicts(engine-&amp;gt;archive, engine-&amp;gt;objtype, &amp;ids, &amp;changetypes, error)) {
&lt;br&gt;+	if (!osync_archive_load_ignored_conflicts(engine-&amp;gt;archive, engine-&amp;gt;objtype, &amp;memberids, &amp;ids, &amp;changetypes, error)) {
&lt;br&gt;&amp;nbsp;		osync_trace(TRACE_EXIT_ERROR, &amp;quot;%s: %s&amp;quot;, __func__, osync_error_print(error));
&lt;br&gt;&amp;nbsp;		return FALSE;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	t = changetypes;
&lt;br&gt;+	mid = memberids;
&lt;br&gt;&amp;nbsp;	for (j = ids; j; j = j-&amp;gt;next) {
&lt;br&gt;&amp;nbsp;		long long int id = (long long int)GPOINTER_TO_INT(j-&amp;gt;data);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -793,8 +794,10 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;			if (mapping_engine-&amp;gt;mapping == ignored_mapping) {
&lt;br&gt;&amp;nbsp;				OSyncList *m;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;				for (m = mapping_engine-&amp;gt;entries; m; m = m-&amp;gt;next) {
&lt;br&gt;-					OSyncMappingEntryEngine *entry = m-&amp;gt;data;
&lt;br&gt;+					long long int memberid = (long long int)GPOINTER_TO_INT(mid-&amp;gt;data);
&lt;br&gt;+					OSyncMappingEntryEngine *entry = osync_mapping_engine_find_entry_by_memberid(mapping_engine, memberid);
&lt;br&gt;&amp;nbsp;					OSyncChangeType changetype = (OSyncChangeType) t-&amp;gt;data;
&lt;br&gt;&amp;nbsp;					OSyncChange *ignored_change = osync_change_new(error);
&lt;br&gt;&amp;nbsp;					OSyncObjFormat *dummyformat = NULL;
&lt;br&gt;@@ -817,6 +820,7 @@
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		t = t-&amp;gt;next;
&lt;br&gt;+		mid = mid-&amp;gt;next;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	osync_list_free(ids);
&lt;br&gt;Index: opensync/engine/opensync_mapping_engine_internals.h
&lt;br&gt;===================================================================
&lt;br&gt;--- opensync/engine/opensync_mapping_engine_internals.h	(revision 5920)
&lt;br&gt;+++ opensync/engine/opensync_mapping_engine_internals.h	(working copy)
&lt;br&gt;@@ -65,6 +65,7 @@
&lt;br&gt;&amp;nbsp;osync_bool osync_mapping_engine_check_conflict(OSyncMappingEngine *engine);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;OSyncMappingEntryEngine *osync_mapping_engine_get_entry(OSyncMappingEngine *engine, OSyncSinkEngine *sinkengine);
&lt;br&gt;+OSyncMappingEntryEngine *osync_mapping_engine_find_entry_by_memberid(OSyncMappingEngine *engine, long long int memberid);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;OSYNC_TEST_EXPORT unsigned int osync_mapping_engine_num_changes(OSyncMappingEngine *engine);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26255721&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26255721&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26255721/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26255721.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26255142</id>
	<title>Re: osync_archive_save_ignored_conflict()</title>
	<published>2009-11-08T08:14:23Z</published>
	<updated>2009-11-08T08:14:23Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Saturday 07 November 2009 12:58:38 am Chris Frey wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In the opensync_archive_internals.h header, _save_ignored_conflict()
&lt;br&gt;&amp;gt; is documented as such:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; /**
&lt;br&gt;&amp;gt; &amp;nbsp;* @brief Saves an entry in the ignored conflict list.
&lt;br&gt;&amp;gt; &amp;nbsp;*
&lt;br&gt;&amp;gt; &amp;nbsp;* @param archive The group archive
&lt;br&gt;&amp;gt; &amp;nbsp;* @param objtype Reported object type of entry
&lt;br&gt;&amp;gt; &amp;nbsp;* @param mappingid Mapping Entry ID of entry
&lt;/div&gt;&lt;/div&gt;That's correct.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp;* @param changetype Changetype of entry
&lt;br&gt;&amp;gt; &amp;nbsp;* @param error Pointer to an error struct
&lt;br&gt;&amp;gt; &amp;nbsp;* @return Returns TRUE on success, FALSE otherwise
&lt;br&gt;&amp;gt; &amp;nbsp;*/
&lt;br&gt;&amp;gt; osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const
&lt;br&gt;&amp;gt; &amp;nbsp;char *objtype, long long int mappingid, OSyncChangeType changetype,
&lt;br&gt;&amp;gt; &amp;nbsp;OSyncError **error);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In opensync_archive.c, it is implemented like this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const
&lt;br&gt;&amp;gt; &amp;nbsp;char *objtype, long long int id, OSyncChangeType changetype, OSyncError
&lt;br&gt;&amp;gt; &amp;nbsp;**error) {
&lt;br&gt;&amp;gt; [...]
&lt;/div&gt;&lt;/div&gt;maybe we should sync this up with the other declaration and call it &amp;quot;mappingid&amp;quot;.
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changelog (objtype,
&lt;br&gt;&amp;gt; &amp;nbsp;entryid, changetype) VALUES('%s', '%lli', '%i')&amp;quot;, escaped_objtype, id,
&lt;br&gt;&amp;gt; &amp;nbsp;changetype);
&lt;br&gt;&lt;br&gt;The tbl_changelog is indeed very confusing. There is one column left-over we
&lt;br&gt;doesn't us at all: &amp;quot;id&amp;quot;
&lt;br&gt;&lt;br&gt;And the &amp;quot;entryid&amp;quot; is also very confusing.
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Isn't the entryid field used for the archive id's themselves, and not the
&lt;br&gt;&amp;gt; mapping ids?
&lt;br&gt;&lt;br&gt;Not quite sure which ID you mean for &amp;quot;archive id&amp;quot;.
&lt;br&gt;&lt;br&gt;FYI, the tbl_changelog is only used for handling &amp;quot;ignored&amp;quot; conflicts ...
&lt;br&gt;tbl_changes is used to store the &amp;quot;mappings&amp;quot;.
&lt;br&gt;tbl_archive stores only the entire entries of a change when merger/demerge
&lt;br&gt;gets used.
&lt;br&gt;&lt;br&gt;&lt;br&gt;While looking into this i found a bug in OpenSync which broke the support
&lt;br&gt;of &amp;quot;ignore conflicts&amp;quot;. Which is hopefully fixed now with r5950
&lt;br&gt;&lt;br&gt;&lt;br&gt;Here is a dump of the tbl_changes and tbl_changelog, which contains two
&lt;br&gt;conflicts which got ignored. (I used for that a group with two file-sync members)
&lt;br&gt;&lt;br&gt;----8&amp;lt;----
&lt;br&gt;BEGIN TRANSACTION;
&lt;br&gt;CREATE TABLE tbl_changes (objtype VARCHAR(64) NOT NULL, id INTEGER PRIMARY KEY AUTOINCREMENT, uid VARCHAR NOT NULL, memberid INTEGER NOT NULL, mappingid INTEGER NOT NULL, 
&lt;br&gt;objengine VARCHAR(64) NOT NULL );
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',67,'foo0',2,1,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',68,'foo3',2,2,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',69,'foo1',2,3,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',70,'test1.vcard',2,4,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',71,'foo5',2,5,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',72,'foo8',2,6,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',73,'foo4',2,7,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',74,'foo2',2,8,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',75,'foo6',2,9,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',76,'foo7',2,10,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',77,'foo9',2,11,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',78,'foo0',1,1,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',79,'foo3',1,2,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',80,'foo1',1,3,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',81,'test1.vcard',1,4,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',82,'foo5',1,5,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',84,'foo4',1,7,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',85,'foo2',1,8,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',86,'foo6',1,9,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',87,'foo7',1,10,'contact');
&lt;br&gt;INSERT INTO &amp;quot;tbl_changes&amp;quot; VALUES('contact',88,'foo9',1,11,'contact');
&lt;br&gt;COMMIT;
&lt;br&gt;dgollub@marvin:~&amp;gt; sqlite3 .config/opensync/0.40/group1/archive.db &amp;quot;.dump tbl_changelog&amp;quot; 
&lt;br&gt;BEGIN TRANSACTION;
&lt;br&gt;CREATE TABLE tbl_changelog (objtype VARCHAR(64), id INTEGER, entryid INTEGER, changetype INTEGER, PRIMARY KEY (objtype, id) );
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',NULL,4,4);
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',NULL,4,4);
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',NULL,6,4);
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',NULL,6,3);
&lt;br&gt;COMMIT;
&lt;br&gt;----&amp;gt;8---
&lt;br&gt;&lt;br&gt;&lt;br&gt;(changetypes: 3 == deleted, 4 == modified)
&lt;br&gt;&lt;br&gt;And indeed this looks pretty strange - 4 tbl_changelog for 2 mappings ...
&lt;br&gt;&lt;br&gt;The information is missing which member was sending which changetype ...
&lt;br&gt;&lt;br&gt;I guess it should look like this:
&lt;br&gt;&lt;br&gt;&lt;br&gt;----8&amp;lt;---
&lt;br&gt;BEGIN TRANSACTION;
&lt;br&gt;CREATE TABLE tbl_changelog (objtype VARCHAR(64) NOT NULL, memberid INTEGER NOT NULL, mappingid INTEGER NOT NULL, changetype INTEGER NOT NULL, PRIMARY KEY (objtype, memberid, 
&lt;br&gt;mappingid) );
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',1,4,4);
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',2,4,4);
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',1,6,4);
&lt;br&gt;INSERT INTO &amp;quot;tbl_changelog&amp;quot; VALUES('contact',2,6,3);
&lt;br&gt;COMMIT;
&lt;br&gt;----&amp;gt;8---
&lt;br&gt;&lt;br&gt;&lt;br&gt;Does this sound sane?
&lt;br&gt;Does this address your question?
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26255142&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26255142&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26255142/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26255142.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26240527</id>
	<title>osync_archive_save_ignored_conflict()</title>
	<published>2009-11-06T15:58:38Z</published>
	<updated>2009-11-06T15:58:38Z</updated>
	<author>
		<name>Chris Frey-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;In the opensync_archive_internals.h header, _save_ignored_conflict()
&lt;br&gt;is documented as such:
&lt;br&gt;&lt;br&gt;/**
&lt;br&gt;&amp;nbsp;* @brief Saves an entry in the ignored conflict list.
&lt;br&gt;&amp;nbsp;*
&lt;br&gt;&amp;nbsp;* @param archive The group archive
&lt;br&gt;&amp;nbsp;* @param objtype Reported object type of entry
&lt;br&gt;&amp;nbsp;* @param mappingid Mapping Entry ID of entry 
&lt;br&gt;&amp;nbsp;* @param changetype Changetype of entry 
&lt;br&gt;&amp;nbsp;* @param error Pointer to an error struct
&lt;br&gt;&amp;nbsp;* @return Returns TRUE on success, FALSE otherwise 
&lt;br&gt;&amp;nbsp;*/
&lt;br&gt;osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int mappingid, OSyncChangeType changetype, OSyncError **error);
&lt;br&gt;&lt;br&gt;&lt;br&gt;In opensync_archive.c, it is implemented like this:
&lt;br&gt;&lt;br&gt;osync_bool osync_archive_save_ignored_conflict(OSyncArchive *archive, const char *objtype, long long int id, OSyncChangeType changetype, OSyncError **error)
&lt;br&gt;{
&lt;br&gt;[...]
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; query = osync_strdup_printf(&amp;quot;INSERT INTO tbl_changelog (objtype, entryid, changetype) VALUES('%s', '%lli', '%i')&amp;quot;, escaped_objtype, id, changetype);
&lt;br&gt;&lt;br&gt;...
&lt;br&gt;&lt;br&gt;&lt;br&gt;Isn't the entryid field used for the archive id's themselves, and not the
&lt;br&gt;mapping ids?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;- Chris
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26240527&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/osync_archive_save_ignored_conflict%28%29-tp26240527p26240527.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26234511</id>
	<title>Re: wrong tagging</title>
	<published>2009-11-06T08:10:23Z</published>
	<updated>2009-11-06T08:10:23Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Friday 06 November 2009 05:00:01 pm Michael Bell wrote:
&lt;br&gt;&amp;gt; I discovered during svn update that the cmake directory of released
&lt;br&gt;&amp;gt; versions in osynctool/tags is a external link. This is a bug. If you
&lt;br&gt;&amp;gt; release a source then all content of the release must be static.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I fixed this for libsyncml a while ago. It is just a question of a
&lt;br&gt;&amp;gt; better documentation. I don't checked this for libopensync. I just
&lt;br&gt;&amp;gt; discovered the issue two minutes ago.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;This is fixed for all newly created tags. A post-commit hook will pin 
&lt;br&gt;externals to the revision when it got tagged.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Just did a test-tag to demonstrate the post-commit hook:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://opensync.org/changeset/5947&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/changeset/5947&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://opensync.org/changeset/5948&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/changeset/5948&lt;/a&gt;&amp;nbsp;(commit by the hook to pin the 
&lt;br&gt;svn:Externals property)
&lt;br&gt;&lt;br&gt;Michael, i already asked this on an OpenSync ticket, do you want to have the 
&lt;br&gt;same post-commit hook installed in libsyncml and libwbxml2 Subversion?
&lt;br&gt;The hook gets active as soon you copy a direcotry into */tags/$ ... the commit 
&lt;br&gt;takes a bit longer since on the subvesrion hosts an entire checkout of the tag 
&lt;br&gt;needs to be done to modify all externals properties ...
&lt;br&gt;&lt;br&gt;Check: &lt;a href=&quot;http://people.b1-systems.de/~gollub/pin-external-on-tag.sh&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.b1-systems.de/~gollub/pin-external-on-tag.sh&lt;/a&gt;&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26234511&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26234511&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26234511/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/wrong-tagging-tp26234345p26234511.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26234345</id>
	<title>wrong tagging</title>
	<published>2009-11-06T08:00:01Z</published>
	<updated>2009-11-06T08:00:01Z</updated>
	<author>
		<name>Michael Bell</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;I discovered during svn update that the cmake directory of released
&lt;br&gt;versions in osynctool/tags is a external link. This is a bug. If you
&lt;br&gt;release a source then all content of the release must be static.
&lt;br&gt;&lt;br&gt;I fixed this for libsyncml a while ago. It is just a question of a
&lt;br&gt;better documentation. I don't checked this for libopensync. I just
&lt;br&gt;discovered the issue two minutes ago.
&lt;br&gt;&lt;br&gt;Best regards
&lt;br&gt;&lt;br&gt;Michael
&lt;br&gt;- --
&lt;br&gt;___________________________________________________________________
&lt;br&gt;&lt;br&gt;Michael Bell &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Humboldt-Universitaet zu Berlin
&lt;br&gt;&lt;br&gt;Tel.: +49 (0)30-2093 2482 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ZE Computer- und Medienservice
&lt;br&gt;Fax: &amp;nbsp;+49 (0)30-2093 2704 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unter den Linden 6
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26234345&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.bell@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; D-10099 Berlin
&lt;br&gt;___________________________________________________________________
&lt;br&gt;&lt;br&gt;PGP Fingerprint: 09E4 3D29 4156 2774 0F2C &amp;nbsp;C643 D8BD 1918 2030 5AAB
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.10 (GNU/Linux)
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAkr0R/0ACgkQ2L0ZGCAwWqutLACgvem58cxp2OAvWVvyExZ30M8N
&lt;br&gt;5rsAnioLjKYLiHVTAaanxWfjR25fICti
&lt;br&gt;=Cs3Y
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26234345&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/wrong-tagging-tp26234345p26234345.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26230728</id>
	<title>Re: Fixed SyncML plugin commit limitation and reenabled pending limit in OpenSync</title>
	<published>2009-11-06T03:49:56Z</published>
	<updated>2009-11-06T03:49:56Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">On Friday 06 November 2009 12:46:09 pm Michael Bell wrote:
&lt;br&gt;&amp;gt; Does OpenSync trunk works?
&lt;br&gt;&lt;br&gt;Yes.
&lt;br&gt;&lt;br&gt;Only the merging and capabilities stuff is not completed.
&lt;br&gt;And the XMLFormat and vformat plugin still lacking some fields ...
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If yes, then I would migrate the SyncML plugin to libsyncml trunk on the
&lt;br&gt;&amp;gt; weekend. Additionally I would like to branch the actual code to have a
&lt;br&gt;&amp;gt; maintainable libsyncml 0.5.x port. My problem is that I don't know where
&lt;br&gt;&amp;gt; to place such a branch.
&lt;br&gt;&lt;br&gt;I'll take care about that...
&lt;br&gt;We already planned to have a trunk/branches/tags direcotry hierachy for 
&lt;br&gt;plugins. Will do that for SyncML plugin now.
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230728&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230728&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26230728/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-trunk--Introduced-osync_context_report_uid_update%28%29-in-sync_done%28%29-phase-tp26218124p26230728.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26230665</id>
	<title>Re: Fixed SyncML plugin commit limitation and reenabled pending limit in OpenSync</title>
	<published>2009-11-06T03:46:09Z</published>
	<updated>2009-11-06T03:46:09Z</updated>
	<author>
		<name>Michael Bell</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;Hi Daniel,
&lt;br&gt;&lt;br&gt;Daniel Gollub wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; The SyncML plugin is now able to write more then 4 entries without exceeding 
&lt;br&gt;&amp;gt; the pending limit and without deadlocking. Just committed approx. 50 entries 
&lt;br&gt;&amp;gt; at once to my test mobile (SyncML Data-Sync server implementation only 
&lt;br&gt;&amp;gt; tested):
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://opensync.org/changeset/5941&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/changeset/5941&lt;/a&gt;&lt;br&gt;&lt;br&gt;Does OpenSync trunk works?
&lt;br&gt;&lt;br&gt;If yes, then I would migrate the SyncML plugin to libsyncml trunk on the
&lt;br&gt;weekend. Additionally I would like to branch the actual code to have a
&lt;br&gt;maintainable libsyncml 0.5.x port. My problem is that I don't know where
&lt;br&gt;to place such a branch.
&lt;br&gt;&lt;br&gt;Best regards
&lt;br&gt;&lt;br&gt;Michael
&lt;br&gt;- --
&lt;br&gt;___________________________________________________________________
&lt;br&gt;&lt;br&gt;Michael Bell &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Humboldt-Universitaet zu Berlin
&lt;br&gt;&lt;br&gt;Tel.: +49 (0)30-2093 2482 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ZE Computer- und Medienservice
&lt;br&gt;Fax: &amp;nbsp;+49 (0)30-2093 2704 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unter den Linden 6
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230665&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.bell@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; D-10099 Berlin
&lt;br&gt;___________________________________________________________________
&lt;br&gt;&lt;br&gt;PGP Fingerprint: 09E4 3D29 4156 2774 0F2C &amp;nbsp;C643 D8BD 1918 2030 5AAB
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.10 (GNU/Linux)
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEUEARECAAYFAkr0DH4ACgkQ2L0ZGCAwWqtcHACdHsfzXH0vV7CP6qSu+HrlS3tb
&lt;br&gt;GLUAmOcG43lotXQI4ofFTE4EmwlHg5o=
&lt;br&gt;=8Z+w
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230665&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-trunk--Introduced-osync_context_report_uid_update%28%29-in-sync_done%28%29-phase-tp26218124p26230665.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26221803</id>
	<title>Fixed SyncML plugin commit limitation and reenabled pending limit in OpenSync (was: Re: [trunk] Introduced osync_context_report_uid_update() in sync_done() phase)</title>
	<published>2009-11-05T12:34:43Z</published>
	<updated>2009-11-05T12:34:43Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;On Thursday 05 November 2009 05:40:29 pm Daniel Gollub wrote:
&lt;br&gt;[...]
&lt;br&gt;&amp;gt; This issue solves a well known problem of the SyncML plugin and the
&lt;br&gt;&amp;gt; &amp;nbsp;OpenSync IPC by deadlocking after 4 entries in a row get written to the
&lt;br&gt;&amp;gt; &amp;nbsp;SyncML-peer. This is not yet implemented in the SyncML plugin.
&lt;br&gt;[...]
&lt;br&gt;&lt;br&gt;just reenabled the pending limit in OpenSync:
&lt;br&gt;&lt;a href=&quot;http://opensync.org/changeset/5942&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/changeset/5942&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://opensync.org/changeset/5858&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/changeset/5858&lt;/a&gt;&amp;nbsp;was there a ticket for this change?
&lt;br&gt;&lt;br&gt;The SyncML plugin is now able to write more then 4 entries without exceeding 
&lt;br&gt;the pending limit and without deadlocking. Just committed approx. 50 entries 
&lt;br&gt;at once to my test mobile (SyncML Data-Sync server implementation only 
&lt;br&gt;tested):
&lt;br&gt;&lt;a href=&quot;http://opensync.org/changeset/5941&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/changeset/5941&lt;/a&gt;&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26221803&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26221803&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26221803/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-trunk--Introduced-osync_context_report_uid_update%28%29-in-sync_done%28%29-phase-tp26218124p26221803.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26218124</id>
	<title>[trunk] Introduced osync_context_report_uid_update() in sync_done() phase</title>
	<published>2009-11-05T08:40:29Z</published>
	<updated>2009-11-05T08:40:29Z</updated>
	<author>
		<name>Daniel Gollub-3</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;just implemented the osync_context_report_uid_update() function for sync-
&lt;br&gt;plugins.
&lt;br&gt;&lt;br&gt;This functions allows to support protocols or synchronization-interfaces which 
&lt;br&gt;replace the initial UID after the change got comitted/written, and report them 
&lt;br&gt;after all changes got written.
&lt;br&gt;&lt;br&gt;There are already lots of plugins which overwrite the UID of an OSyncChange 
&lt;br&gt;during the commit() function. But this works only for protocols/interfaces 
&lt;br&gt;which provide the new UID immediately after the single write of a change.
&lt;br&gt;&lt;br&gt;Protocols like SyncML for example, maybe there are others as well, which 
&lt;br&gt;provide the information about a &amp;quot;mapping update&amp;quot; (or changed UIDs of just 
&lt;br&gt;written entries) after all changes got written.
&lt;br&gt;&lt;br&gt;Now we can handle this flawless with the introduction of 
&lt;br&gt;osync_context_report_uid_update().
&lt;br&gt;&lt;br&gt;Plugins can now call this function in the sync_done() function and report all 
&lt;br&gt;updated UIDs, by just providing the old-UID and the new-UID. OpenSync will 
&lt;br&gt;take care the mapping of the right entries doesn't get lost. OpenSync also 
&lt;br&gt;updates this information inside the hashtable - if used.
&lt;br&gt;&lt;br&gt;The interface looks like this:
&lt;br&gt;&lt;br&gt;void osync_context_report_uid_update(OSyncContext *ctx,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;const char *olduid, const char *newuid);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;This issue solves a well known problem of the SyncML plugin and the OpenSync 
&lt;br&gt;IPC by deadlocking after 4 entries in a row get written to the SyncML-peer.
&lt;br&gt;This is not yet implemented in the SyncML plugin.
&lt;br&gt;&lt;br&gt;For more information see &lt;a href=&quot;http://opensync.org/ticket/1161&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://opensync.org/ticket/1161&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Daniel Gollub &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Geschaeftsfuehrer: Ralph Dehner
&lt;br&gt;FOSS Developer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Unternehmenssitz: &amp;nbsp;Vohburg
&lt;br&gt;B1 Systems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Amtsgericht: &amp;nbsp; &amp;nbsp; &amp;nbsp; Ingolstadt
&lt;br&gt;Mobil: +49-(0)-160 47 73 970 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Handelsregister: &amp;nbsp; HRB 3537
&lt;br&gt;EMail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26218124&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gollub@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.b1-systems.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.b1-systems.de&lt;/a&gt;&lt;br&gt;&lt;br&gt;Adresse: B1 Systems GmbH, Osterfeldstraße 7, 85088 Vohburg
&lt;br&gt;&lt;a href=&quot;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pgpkeys.pca.dfn.de/pks/lookup?op=get&amp;search=0xED14B95C2F8CA78D&lt;/a&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Opensync-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26218124&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Opensync-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/opensync-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/opensync-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26218124/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-trunk--Introduced-osync_context_report_uid_update%28%29-in-sync_done%28%29-phase-tp26218124p26218124.html" />
</entry>

</feed>
