Imported Upstream version 1.1.0.99.1 upstream/1.1.0.99.1
authorPatrick Ohly <patrick.ohly@intel.com>
Fri, 28 Jun 2013 11:42:02 +0000 (11:42 +0000)
committerPatrick Ohly <patrick.ohly@intel.com>
Fri, 28 Jun 2013 11:42:02 +0000 (11:42 +0000)
56 files changed:
ChangeLog
NEWS
README
README.html
README.rst
configure
configure-pre.in
configure.in
src/backends/evolution/EvolutionCalendarSource.cpp
src/backends/kcalextended/KCalExtendedSource.cpp
src/backends/qtcontacts/QtContactsSource.cpp
src/client-test-app.cpp
src/dbus/interfaces/syncevo-server-full.xml
src/dbus/interfaces/syncevo-session-full.xml
src/dbus/syncevo-server.c
src/dbus/syncevo-server.h
src/dbus/syncevo-session.c
src/dbus/syncevo-session.h
src/gtk-ui/sync-config-widget.c
src/gtk-ui/sync-ui.c
src/syncevo-dbus-server.cpp
src/syncevo/Cmdline.cpp
src/syncevo/SyncConfig.cpp
src/syncevo/SyncContext.cpp
src/syncevo/SyncSource.cpp
src/syncevo/configs/datatypes/10calendar-fieldlist.xml
src/syncevo/configs/remoterules/00_syncevolution.xml
src/syncevo/configs/remoterules/server/00_sony_ericsson.xml [new file with mode: 0644]
src/syncevo/configs/scripting/11calendar.xml
src/syncevo/util.cpp
src/syncevolution.cpp
src/synthesis/ChangeLog
src/synthesis/Makefile.in
src/synthesis/configure
src/synthesis/configure.in
src/synthesis/src/DB_interfaces/api_db/pluginapids.cpp
src/synthesis/src/Makefile.am
src/synthesis/src/Makefile.am.in
src/synthesis/src/Makefile.in
src/synthesis/src/Targets/ReleasedProducts/SDK/target_options.h
src/synthesis/src/platform_adapters/linux/platform_timezones.cpp
src/synthesis/src/syncml_tk/src/sml/mgr/all/mgrinstancemgr.c
src/synthesis/src/sysync/localengineds.cpp
src/synthesis/src/sysync/mimedirprofile.cpp
src/synthesis/src/sysync/multifielditemtype.cpp
src/synthesis/src/sysync/syncitem.cpp
src/synthesis/src/sysync/syncitem.h
src/synthesis/src/sysync/syncsession.cpp
src/synthesis/src/sysync/timezones.h
src/synthesis/src/sysync/vtimezone.cpp
src/synthesis/src/sysync/vtimezone.h
src/templates/servers/ScheduleWorld.ini
test/ClientTest.cpp
test/README.mobical
test/client-test-main.cpp
test/synccompare.pl

index 4972c10..d6b4041 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,198 @@
 # Generated by configure.  Do no edit.
 
+2010-12-20  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * configure-pre.in:
+
+       bumped version to 1.1.0.99.1
+
+2010-12-20  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * NEWS:
+
+       NEWS: updated for 1.1.0.99.1
+
+2010-12-15  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/dbus/interfaces/syncevo-server-full.xml:
+       * src/dbus/interfaces/syncevo-session-full.xml:
+       * src/dbus/syncevo-server.c:
+       * src/gtk-ui/sync-config-widget.c:
+       * src/gtk-ui/sync-ui.c:
+
+       gtk-ui: Use "no-sync" flag on non syncing StartSession
+
+2010-12-15  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/dbus/syncevo-session.c:
+       * src/dbus/syncevo-session.h:
+
+       dbus client wrapper: add GetConfigName
+
+2010-11-11  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/dbus/syncevo-server.c:
+       * src/dbus/syncevo-server.h:
+       * src/gtk-ui/sync-ui.c:
+
+       gtk-ui: Update GetPresence handlers to match current API
+
+2010-11-11  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/gtk-ui/sync-ui.c:
+
+       gtk-ui: match config names insensitively
+
+2010-11-11  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/gtk-ui/sync-ui.c:
+
+       gtk-ui: Use hyphen instead of underscore in signal names
+
+2010-12-15  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/evolution/EvolutionCalendarSource.cpp:
+
+       Evolution Calendar: work around delayed update in EDS CalDAV
+       backend (BMC #10265)
+
+2010-12-14  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * README.rst:
+       * src/syncevo/Cmdline.cpp:
+       * src/syncevo/SyncConfig.cpp:
+       * src/templates/servers/ScheduleWorld.ini:
+
+       ScheduleWorld: disabled configuration, replaced in examples
+
+2010-12-13  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/configs/remoterules/server/00_sony_ericsson.xml:
+
+       Sony Ericsson: enable conversion to absolute alarm times (BMC
+       #10092)
+
+2010-12-13  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/configs/scripting/11calendar.xml:
+       * test/testcases/ical20-alarms-2010-12-31.ics:
+
+       vCalendar 1.0: convert absolute alarm back to relative (BMC
+       #11233)
+
+2010-12-07  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/README.mobical:
+
+       Mobical.net: nightly tests do not complete when preventSlowSync
+       is active
+
+2010-12-06  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/client-test-app.cpp:
+
+       client-test: avoid potential test failure in testTwoWaySync due
+       to preventSlowSync
+
+2010-11-28  David Bremner  <bremner@debian.org>
+
+       * src/syncevo/util.cpp:
+
+       util.cpp/relToAbs(): Have realpath allocate its own buffer.
+
+2010-12-06  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo-dbus-server.cpp:
+
+       syncevo-dbus-server: deal with libnotify 0.7.0 API change (BMC
+       #10453)
+
+2010-12-01  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/synccompare.pl:
+
+       synccompare: work around Perl bug
+
+2010-11-30  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/client-test-main.cpp:
+
+       client-test: SYNCEVOLUTION_DEBUG disables creation of .log files
+
+2010-11-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/synccompare.pl:
+
+       synccompare: normalize directory
+
+2010-11-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/qtcontacts/QtContactsSource.cpp:
+
+       QtContacts: fixed error message
+
+2010-11-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+
+       KCalExtended: evolutionsource=<notebook name> was broken
+
+2010-11-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/configs/remoterules/00_syncevolution.xml:
+
+       slow sync strategy: allow client and server updates for
+       SyncEvolution clients
+
+2010-11-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/SyncSource.cpp:
+
+       slow sync strategy: try harder to avoid duplicates
+
+2010-11-15  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/configs/datatypes/10calendar-fieldlist.xml:
+
+       calendar profile: choose better merge strategy for URL property
+
+2010-10-29  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/SyncContext.cpp:
+
+       SYNCEVOLUTION_DEBUG: print DEBUG messages during sync if set
+
+2010-10-08  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/synccompare.pl:
+
+       synccompare: relax TZID simplification
+
+2010-10-08  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/client-test-main.cpp:
+
+       client-test: increase log level when SYNCEVOLUTION_DEBUG is set
+
+2010-10-07  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/ClientTest.cpp:
+
+       Revert "testing: avoid DTSTAMP issue in KCalExtended"
+
+2010-08-01  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/SyncContext.cpp:
+
+       SyncContext: avoid crash in sort() with LogDir as binary
+       predicate
+
+2010-10-05  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevolution.cpp:
+
+       command line: increase log level when SYNCEVOLUTION_DEBUG is set
+
 2010-11-01  Patrick Ohly  <patrick.ohly@intel.com>
 
        * src/syncevo/FileConfigTree.cpp:
diff --git a/NEWS b/NEWS
index 1356778..49236bb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,84 @@
+SyncEvolution 1.1 -> 1.1.1, xxxxxxxxxx
+======================================
+
+Maintenance release, in particular improving syncing with phones.
+There was a bug that could cause all kinds of weird behavior after
+a failed sync with a phone, so updating is highly recommended.
+
+* Synthesis engine: fixed a corruption issue in internal meta data which
+  caused duplicates and other problems in a pretty indeterminstic way;
+  apparently caused by failed syncs (BMC #10358, #11044).
+
+* Synthesis engine: recurrence rules with end date now sent correctly to phones (BMC #11241).
+
+  The RRULE property was not encoded correctly previously during the
+  iCalendar 2.0 -> vCalendar 1.0 conversion. Events with recurrence count
+  were okay. Probably also affected SyncML servers without iCalendar 2.0
+  support.
+
+* Synthesis engine: fixed broken time zone information when sending to phone;
+  previously that broke sending calendar updates to Nokia phones (BMC #9600).
+
+  iCalendar 2.0 time zone definitions imported from libical were not
+  encoded correctly in vCalendar 1.0 items as sent to phones. Nokia
+  phones accepted such data when part of a new event, but rejected
+  updates of it.
+
+* ScheduleWorld: disable configuration template because service has shut down.
+
+  The template is only hidden from the GTK sync-ui, but remains in SyncEvolution
+  for the time being because it is referenced in several places.
+
+* GTK sync-ui: workaround for "Sync Now" button not reacting to online
+  status changed (BMC #9949).
+
+* Changed slow sync handling. Some users have complained about getting
+  duplicated contacts (BMC #10081). The exact reason is not known (no
+  useful logs provided yet), but it might be due to using "duplicate"
+  as resolution strategy during slow syncs.
+
+  This caused slightly different contacts to be duplicated instead of
+  merging the two copies, reasoning that "no data loss" is better than
+  "duplicates". This release switches to a mode where the engine
+  tries harder to avoid duplicates by merging data if modification
+  time stamps are available for contacts (usually they are). When fields
+  differ, the more recent data is kept.
+
+* convert absolute alarm back to relative (BMC #11233)
+
+  Experiments show that at least Nokia phones (and thus perhaps also
+  Mobical.com) interpret a fixed alarm as "repeat alarm with the same
+  relative offset as on first occurrence". The same transformation to
+  relative alarm times is applied whenever the transformation to
+  absolute alarm is enabled for a peer.
+
+* Sony Ericsson: enable conversion to absolute alarm times (BMC #10092)
+    
+  Like Nokia and Mobical.net, Sony Ericsson phones also seem to be unable
+  to deal with relative alarm times - verified with t700.
+
+* Sony Ericsson C510: workaround for SyncML violation
+
+  The phone does not sent identifiers for the target database;
+  using the source identifier as fallback allows a sync to
+  run.
+
+* Fixed a regression affecting users who had created a config
+  with SyncEvolution < 1.0. Using the config worked once, then
+  failed with "No configuration for ... found". Users must
+  manually remove the empty "peers" directory inside their
+  affected configuration, the fix only makes configs without that
+  directory usable again (BMC #9381).
+
+* Removed obsolete workaround for older mKCal calendar storage.
+* Fixed error message in QtContacts backend.
+* Same SYNCEVOLUTION_DEBUG code as in master branch.
+* Some updates to synccompare, including a workaround for a Perl
+  bug seen on Debian Testing with Perl 5.10.1-16 (Perl panic).
+* Fix compilation of syncevo-dbus-server with libnotify 0.7.0 (BMC #10453).
+* Fixed compilation on Debian GNU/Hurd (no MAX_PATH, Mac OS X confusion).
+
+
 SyncEvolution 1.0.1 -> 1.1, 26.10.2010
 ======================================
 
diff --git a/README b/README
index 63d025c..8928db2 100644 (file)
--- a/README
+++ b/README
@@ -7,8 +7,8 @@ synchronize personal information management data
 ------------------------------------------------
 
 :Manual section: 1
-:Version: 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4
-:Date: 2010-11-01
+:Version: 1.1.0.99.1
+:Date: 2010-12-21
 
 SYNOPSIS
 ========
@@ -87,7 +87,7 @@ peer. Depending on which parameters are given, different operations
 are executed.
 
 Starting with SyncEvolution 1.0, <config> strings can have different
-meanings. Typically, a simple string like `scheduleworld` refers to
+meanings. Typically, a simple string like `memotoo` refers to
 the configuration for that peer, as it did in previous releases. A
 peer is either a SyncML server (the traditional usage of
 SyncEvolution) or a client (the new feature in 1.0).
@@ -107,7 +107,7 @@ the context name.
 When different peers are meant to synchronize different local
 databases, then different contexts have to be used when setting up the
 peers by appending a context name after the `at` sign, as in
-`scheduleworld2@other-context`. Later on, if `scheduleworld2` is
+`memotoo2@other-context`. Later on, if `memotoo2` is
 unique, the `@other-context` suffix becomes optional.
 
 Sometimes it is also useful to change configuration options of a
@@ -305,8 +305,8 @@ a list of valid values.
   of the template configurations (see --template option). When
   creating a new configuration and listing sources explicitly on the
   command line, only those sources will be set to active in the new
-  configuration, i.e. `syncevolution -c scheduleworld addressbook`
-  followed by `syncevolution scheduleworld` will only synchronize the
+  configuration, i.e. `syncevolution -c memotoo addressbook`
+  followed by `syncevolution memotoo` will only synchronize the
   address book. The other sources are created in a disabled state.
   When modifying an existing configuration and sources are specified,
   then the source properties of only those sources are modified.
@@ -412,7 +412,7 @@ a list of valid values.
   for known SyncML peers. Defaults to the <config> name, so --template
   only has to be specified when creating multiple different configurations
   for the same peer, or when using a template that is named differently
-  than the peer. `default` is an alias for `scheduleworld` and can be
+  than the peer. `default` is an alias for `memotoo` and can be
   used as the starting point for servers which do not have a built-in
   template.
 
@@ -475,12 +475,12 @@ List the known configuration templates::
 
    syncevolution --template ?
 
-Create a new configuration, using the existing ScheduleWorld template::
+Create a new configuration, using the existing Memotoo template::
 
   syncevolution --configure \
                 --sync-property "username=123456" \
                 --sync-property "password=!@#ABcd1234" \
-                scheduleworld
+                memotoo
 
 Note that putting passwords into the command line, even for
 short-lived processes as the one above, is a security risk in shared
@@ -493,29 +493,29 @@ This command shows the directory containing the file::
 
 Review configuration::
 
-   syncevolution --print-config scheduleworld
+   syncevolution --print-config memotoo
 
 Synchronize all sources::
 
-  syncevolution scheduleworld
+  syncevolution memotoo
 
 Deactivate all sources::
 
   syncevolution --configure \
                 --source-property sync=none \
-                scheduleworld
+                memotoo
 
 Activate address book synchronization again, using the --sync shortcut::
 
   syncevolution --configure \
                 --sync two-way \
-                scheduleworld addressbook
+                memotoo addressbook
 
 Change the password for a configuration::
 
   syncevolution --configure \
                 --sync-property password=foo \
-                scheduleworld
+                memotoo
 
 Set up another configuration for under a different account, using
 the same default databases as above::
@@ -523,8 +523,8 @@ the same default databases as above::
   syncevolution --configure \
                 --sync-property username=joe \
                 --sync-property password=foo \
-                --template scheduleworld \
-                scheduleworld_joe
+                --template memotoo \
+                memotoo_joe
 
 Set up another configuration using the same account, but different
 local databases (can be used to simulate synchronizing between two
@@ -534,7 +534,7 @@ clients, see `Exchanging Data`_::
                 --sync-property "username=123456" \
                 --sync-property "password=!@#ABcd1234" \
                 --source-property sync=none \
-                 scheduleworld@other
+                 memotoo@other
   
   syncevolution --configure \
                 --source-property evolutionsource=<name of other address book> \
@@ -542,16 +542,16 @@ clients, see `Exchanging Data`_::
 
   syncevolution --configure \
                 --source-property sync=two-way \
-                scheduleworld@other addressbook
+                memotoo@other addressbook
 
-  syncevolution scheduleworld 
-  syncevolution scheduleworld@other
+  syncevolution memotoo 
+  syncevolution memotoo@other
 
 Migrate a configuration from the <= 0.7 format to the current one
 and/or updates the configuration so that it looks like configurations
 created anew with the current syncevolution::
 
-  syncevolution --migrate scheduleworld
+  syncevolution --migrate memotoo
 
 
 NOTES
@@ -571,16 +571,9 @@ possible because it cannot represent all data that Evolution stores.
    the same applies to other data sources.
 
 How the server stores the items depends on its implementation and
-configuration. In the default Funambol server installation, contacts
-and calendar items are converted into an internal format, but at
-least for contacts it preserves most of the properties used by
-Evolution whereas iCalendar 2.0 items are not preserved properly 
-up to and including Funambol 8.0. ScheduleWorld uses the same format
-as Evolution for calendars and tasks and thus requires no conversion.
-
-To check which data is preserved, one can use this procedure
-(described for contacts, but works the same way for calendars and
-tasks):
+configuration. To check which data is preserved, one can use this
+procedure (described for contacts, but works the same way for
+calendars and tasks):
 
 1. synchronize the address book with the server
 2. create a new address book in Evolution and view it in Evolution
index e53d455..cae2585 100644 (file)
@@ -5,7 +5,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
 <title>SyncEvolution</title>
-<meta name="date" content="2010-11-01" />
+<meta name="date" content="2010-12-21" />
 <style type="text/css">
 
 /*
@@ -315,9 +315,9 @@ ul.auto-toc {
 <tr class="field"><th class="docinfo-name">Manual section:</th><td class="field-body">1</td>
 </tr>
 <tr><th class="docinfo-name">Version:</th>
-<td>1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4</td></tr>
+<td>1.1.0.99.1</td></tr>
 <tr><th class="docinfo-name">Date:</th>
-<td>2010-11-01</td></tr>
+<td>2010-12-21</td></tr>
 </tbody>
 </table>
 <div class="section" id="synopsis">
@@ -380,7 +380,7 @@ task list or set of memos and the corresponding database on the
 peer. Depending on which parameters are given, different operations
 are executed.</p>
 <p>Starting with SyncEvolution 1.0, &lt;config&gt; strings can have different
-meanings. Typically, a simple string like <cite>scheduleworld</cite> refers to
+meanings. Typically, a simple string like <cite>memotoo</cite> refers to
 the configuration for that peer, as it did in previous releases. A
 peer is either a SyncML server (the traditional usage of
 SyncEvolution) or a client (the new feature in 1.0).</p>
@@ -397,7 +397,7 @@ the context name.</p>
 <p>When different peers are meant to synchronize different local
 databases, then different contexts have to be used when setting up the
 peers by appending a context name after the <cite>at</cite> sign, as in
-<cite>scheduleworld2&#64;other-context</cite>. Later on, if <cite>scheduleworld2</cite> is
+<cite>memotoo2&#64;other-context</cite>. Later on, if <cite>memotoo2</cite> is
 unique, the <cite>&#64;other-context</cite> suffix becomes optional.</p>
 <p>Sometimes it is also useful to change configuration options of a
 context, without modifying a specific peer. This can be done by using
@@ -581,8 +581,8 @@ If no such configuration exists, then a new one is created using one
 of the template configurations (see --template option). When
 creating a new configuration and listing sources explicitly on the
 command line, only those sources will be set to active in the new
-configuration, i.e. <cite>syncevolution -c scheduleworld addressbook</cite>
-followed by <cite>syncevolution scheduleworld</cite> will only synchronize the
+configuration, i.e. <cite>syncevolution -c memotoo addressbook</cite>
+followed by <cite>syncevolution memotoo</cite> will only synchronize the
 address book. The other sources are created in a disabled state.
 When modifying an existing configuration and sources are specified,
 then the source properties of only those sources are modified.</dd>
@@ -675,7 +675,7 @@ in particular the selection of which local data to synchronize.</p>
 for known SyncML peers. Defaults to the &lt;config&gt; name, so --template
 only has to be specified when creating multiple different configurations
 for the same peer, or when using a template that is named differently
-than the peer. <cite>default</cite> is an alias for <cite>scheduleworld</cite> and can be
+than the peer. <cite>default</cite> is an alias for <cite>memotoo</cite> and can be
 used as the starting point for servers which do not have a built-in
 template.</p>
 <p>A pseudo-random device ID is generated automatically. Therefore setting
@@ -732,12 +732,12 @@ without the daemon (--daemon=no).</dd>
 <pre class="literal-block">
 syncevolution --template ?
 </pre>
-<p>Create a new configuration, using the existing ScheduleWorld template:</p>
+<p>Create a new configuration, using the existing Memotoo template:</p>
 <pre class="literal-block">
 syncevolution --configure \
               --sync-property &quot;username=123456&quot; \
               --sync-property &quot;password=!&#64;#ABcd1234&quot; \
-              scheduleworld
+              memotoo
 </pre>
 <p>Note that putting passwords into the command line, even for
 short-lived processes as the one above, is a security risk in shared
@@ -750,29 +750,29 @@ syncevolution --print-configs
 </pre>
 <p>Review configuration:</p>
 <pre class="literal-block">
-syncevolution --print-config scheduleworld
+syncevolution --print-config memotoo
 </pre>
 <p>Synchronize all sources:</p>
 <pre class="literal-block">
-syncevolution scheduleworld
+syncevolution memotoo
 </pre>
 <p>Deactivate all sources:</p>
 <pre class="literal-block">
 syncevolution --configure \
               --source-property sync=none \
-              scheduleworld
+              memotoo
 </pre>
 <p>Activate address book synchronization again, using the --sync shortcut:</p>
 <pre class="literal-block">
 syncevolution --configure \
               --sync two-way \
-              scheduleworld addressbook
+              memotoo addressbook
 </pre>
 <p>Change the password for a configuration:</p>
 <pre class="literal-block">
 syncevolution --configure \
               --sync-property password=foo \
-              scheduleworld
+              memotoo
 </pre>
 <p>Set up another configuration for under a different account, using
 the same default databases as above:</p>
@@ -780,8 +780,8 @@ the same default databases as above:</p>
 syncevolution --configure \
               --sync-property username=joe \
               --sync-property password=foo \
-              --template scheduleworld \
-              scheduleworld_joe
+              --template memotoo \
+              memotoo_joe
 </pre>
 <p>Set up another configuration using the same account, but different
 local databases (can be used to simulate synchronizing between two
@@ -791,7 +791,7 @@ syncevolution --configure \
               --sync-property &quot;username=123456&quot; \
               --sync-property &quot;password=!&#64;#ABcd1234&quot; \
               --source-property sync=none \
-               scheduleworld&#64;other
+               memotoo&#64;other
 
 syncevolution --configure \
               --source-property evolutionsource=&lt;name of other address book&gt; \
@@ -799,16 +799,16 @@ syncevolution --configure \
 
 syncevolution --configure \
               --source-property sync=two-way \
-              scheduleworld&#64;other addressbook
+              memotoo&#64;other addressbook
 
-syncevolution scheduleworld
-syncevolution scheduleworld&#64;other
+syncevolution memotoo
+syncevolution memotoo&#64;other
 </pre>
 <p>Migrate a configuration from the &lt;= 0.7 format to the current one
 and/or updates the configuration so that it looks like configurations
 created anew with the current syncevolution:</p>
 <pre class="literal-block">
-syncevolution --migrate scheduleworld
+syncevolution --migrate memotoo
 </pre>
 </div>
 <div class="section" id="notes">
@@ -827,15 +827,9 @@ possible because it cannot represent all data that Evolution stores.</p>
 the same applies to other data sources.</p>
 </div>
 <p>How the server stores the items depends on its implementation and
-configuration. In the default Funambol server installation, contacts
-and calendar items are converted into an internal format, but at
-least for contacts it preserves most of the properties used by
-Evolution whereas iCalendar 2.0 items are not preserved properly
-up to and including Funambol 8.0. ScheduleWorld uses the same format
-as Evolution for calendars and tasks and thus requires no conversion.</p>
-<p>To check which data is preserved, one can use this procedure
-(described for contacts, but works the same way for calendars and
-tasks):</p>
+configuration. To check which data is preserved, one can use this
+procedure (described for contacts, but works the same way for
+calendars and tasks):</p>
 <ol class="arabic simple">
 <li>synchronize the address book with the server</li>
 <li>create a new address book in Evolution and view it in Evolution
index 8105e90..3646200 100644 (file)
@@ -87,7 +87,7 @@ peer. Depending on which parameters are given, different operations
 are executed.
 
 Starting with SyncEvolution 1.0, <config> strings can have different
-meanings. Typically, a simple string like `scheduleworld` refers to
+meanings. Typically, a simple string like `memotoo` refers to
 the configuration for that peer, as it did in previous releases. A
 peer is either a SyncML server (the traditional usage of
 SyncEvolution) or a client (the new feature in 1.0).
@@ -107,7 +107,7 @@ the context name.
 When different peers are meant to synchronize different local
 databases, then different contexts have to be used when setting up the
 peers by appending a context name after the `at` sign, as in
-`scheduleworld2@other-context`. Later on, if `scheduleworld2` is
+`memotoo2@other-context`. Later on, if `memotoo2` is
 unique, the `@other-context` suffix becomes optional.
 
 Sometimes it is also useful to change configuration options of a
@@ -305,8 +305,8 @@ a list of valid values.
   of the template configurations (see --template option). When
   creating a new configuration and listing sources explicitly on the
   command line, only those sources will be set to active in the new
-  configuration, i.e. `syncevolution -c scheduleworld addressbook`
-  followed by `syncevolution scheduleworld` will only synchronize the
+  configuration, i.e. `syncevolution -c memotoo addressbook`
+  followed by `syncevolution memotoo` will only synchronize the
   address book. The other sources are created in a disabled state.
   When modifying an existing configuration and sources are specified,
   then the source properties of only those sources are modified.
@@ -412,7 +412,7 @@ a list of valid values.
   for known SyncML peers. Defaults to the <config> name, so --template
   only has to be specified when creating multiple different configurations
   for the same peer, or when using a template that is named differently
-  than the peer. `default` is an alias for `scheduleworld` and can be
+  than the peer. `default` is an alias for `memotoo` and can be
   used as the starting point for servers which do not have a built-in
   template.
 
@@ -475,12 +475,12 @@ List the known configuration templates::
 
    syncevolution --template ?
 
-Create a new configuration, using the existing ScheduleWorld template::
+Create a new configuration, using the existing Memotoo template::
 
   syncevolution --configure \
                 --sync-property "username=123456" \
                 --sync-property "password=!@#ABcd1234" \
-                scheduleworld
+                memotoo
 
 Note that putting passwords into the command line, even for
 short-lived processes as the one above, is a security risk in shared
@@ -493,29 +493,29 @@ This command shows the directory containing the file::
 
 Review configuration::
 
-   syncevolution --print-config scheduleworld
+   syncevolution --print-config memotoo
 
 Synchronize all sources::
 
-  syncevolution scheduleworld
+  syncevolution memotoo
 
 Deactivate all sources::
 
   syncevolution --configure \
                 --source-property sync=none \
-                scheduleworld
+                memotoo
 
 Activate address book synchronization again, using the --sync shortcut::
 
   syncevolution --configure \
                 --sync two-way \
-                scheduleworld addressbook
+                memotoo addressbook
 
 Change the password for a configuration::
 
   syncevolution --configure \
                 --sync-property password=foo \
-                scheduleworld
+                memotoo
 
 Set up another configuration for under a different account, using
 the same default databases as above::
@@ -523,8 +523,8 @@ the same default databases as above::
   syncevolution --configure \
                 --sync-property username=joe \
                 --sync-property password=foo \
-                --template scheduleworld \
-                scheduleworld_joe
+                --template memotoo \
+                memotoo_joe
 
 Set up another configuration using the same account, but different
 local databases (can be used to simulate synchronizing between two
@@ -534,7 +534,7 @@ clients, see `Exchanging Data`_::
                 --sync-property "username=123456" \
                 --sync-property "password=!@#ABcd1234" \
                 --source-property sync=none \
-                 scheduleworld@other
+                 memotoo@other
   
   syncevolution --configure \
                 --source-property evolutionsource=<name of other address book> \
@@ -542,16 +542,16 @@ clients, see `Exchanging Data`_::
 
   syncevolution --configure \
                 --source-property sync=two-way \
-                scheduleworld@other addressbook
+                memotoo@other addressbook
 
-  syncevolution scheduleworld 
-  syncevolution scheduleworld@other
+  syncevolution memotoo 
+  syncevolution memotoo@other
 
 Migrate a configuration from the <= 0.7 format to the current one
 and/or updates the configuration so that it looks like configurations
 created anew with the current syncevolution::
 
-  syncevolution --migrate scheduleworld
+  syncevolution --migrate memotoo
 
 
 NOTES
@@ -571,16 +571,9 @@ possible because it cannot represent all data that Evolution stores.
    the same applies to other data sources.
 
 How the server stores the items depends on its implementation and
-configuration. In the default Funambol server installation, contacts
-and calendar items are converted into an internal format, but at
-least for contacts it preserves most of the properties used by
-Evolution whereas iCalendar 2.0 items are not preserved properly 
-up to and including Funambol 8.0. ScheduleWorld uses the same format
-as Evolution for calendars and tasks and thus requires no conversion.
-
-To check which data is preserved, one can use this procedure
-(described for contacts, but works the same way for calendars and
-tasks):
+configuration. To check which data is preserved, one can use this
+procedure (described for contacts, but works the same way for
+calendars and tasks):
 
 1. synchronize the address book with the server
 2. create a new address book in Evolution and view it in Evolution
index fb3ca15..496918a 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for syncevolution 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4.
+# Generated by GNU Autoconf 2.61 for syncevolution 1.1.0.99.1.
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -726,8 +726,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='syncevolution'
 PACKAGE_TARNAME='syncevolution'
-PACKAGE_VERSION='1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4'
-PACKAGE_STRING='syncevolution 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4'
+PACKAGE_VERSION='1.1.0.99.1'
+PACKAGE_STRING='syncevolution 1.1.0.99.1'
 PACKAGE_BUGREPORT=''
 
 # Factoring default headers for most tests.
@@ -1628,7 +1628,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures syncevolution 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4 to adapt to many kinds of systems.
+\`configure' configures syncevolution 1.1.0.99.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1698,7 +1698,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of syncevolution 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4:";;
+     short | recursive ) echo "Configuration of syncevolution 1.1.0.99.1:";;
    esac
   cat <<\_ACEOF
 
@@ -2016,7 +2016,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-syncevolution configure 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4
+syncevolution configure 1.1.0.99.1
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -2030,7 +2030,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by syncevolution $as_me 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4, which was
+It was created by syncevolution $as_me 1.1.0.99.1, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2723,7 +2723,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='syncevolution'
- VERSION='1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4'
+ VERSION='1.1.0.99.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -29497,7 +29497,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by syncevolution $as_me 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4, which was
+This file was extended by syncevolution $as_me 1.1.0.99.1, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -29550,7 +29550,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-syncevolution config.status 1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4
+syncevolution config.status 1.1.0.99.1
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
index 777fb9c..406f52f 100644 (file)
@@ -8,7 +8,7 @@ dnl Invoke autogen.sh to produce a configure script.
 #
 # Starting with the 1.1 release cycle, the rpm-style
 # .99 pseudo-version number is used to mark a pre-release.
-AC_INIT([syncevolution], [1.1])
+AC_INIT([syncevolution], [1.1.0.99.1])
 # STABLE_VERSION=1.0.1+
 AC_SUBST(STABLE_VERSION)
 
index 87fe032..7ea6343 100644 (file)
@@ -8,7 +8,7 @@ dnl Invoke autogen.sh to produce a configure script.
 #
 # Starting with the 1.1 release cycle, the rpm-style
 # .99 pseudo-version number is used to mark a pre-release.
-AC_INIT([syncevolution], [1.1+20101101+SE+8e5f8df+SYSYNC+2a247a4])
+AC_INIT([syncevolution], [1.1.0.99.1])
 # STABLE_VERSION=1.0.1+
 AC_SUBST(STABLE_VERSION)
 
index fcc2539..3903ac5 100644 (file)
@@ -178,34 +178,45 @@ void EvolutionCalendarSource::open()
     ESource *source = findSource(sources, id);
     bool onlyIfExists = true;
     bool created = false;
-    if (!source) {
-        // might have been special "<<system>>" or "<<default>>", try that and
-        // creating address book from file:// URI before giving up
-        if ((id.empty() || id == "<<system>>") && m_newSystem) {
-            m_calendar.set(m_newSystem(), (string("system ") + m_typeName).c_str());
-        } else if (!id.compare(0, 7, "file://")) {
-            m_calendar.set(e_cal_new_from_uri(id.c_str(), m_type), (string("creating ") + m_typeName).c_str());
+
+    // Open twice. This solves an issue where Evolution's CalDAV
+    // backend only updates its local cache *after* a sync (= while
+    // closing the calendar?), instead of doing it *before* a sync (in
+    // e_cal_open()).
+    //
+    // This workaround is applied to *all* backends because there might
+    // be others with similar problems and for local storage it is
+    // a reasonably cheap operation (so no harm there).
+    for (int retries = 0; retries < 2; retries++) {
+        if (!source) {
+            // might have been special "<<system>>" or "<<default>>", try that and
+            // creating address book from file:// URI before giving up
+            if ((id.empty() || id == "<<system>>") && m_newSystem) {
+                m_calendar.set(m_newSystem(), (string("system ") + m_typeName).c_str());
+            } else if (!id.compare(0, 7, "file://")) {
+                m_calendar.set(e_cal_new_from_uri(id.c_str(), m_type), (string("creating ") + m_typeName).c_str());
+            } else {
+                throwError(string("not found: '") + id + "'");
+            }
+            created = true;
+            onlyIfExists = false;
         } else {
-            throwError(string("not found: '") + id + "'");
+            m_calendar.set(e_cal_new(source, m_type), m_typeName.c_str());
         }
-        created = true;
-        onlyIfExists = false;
-    } else {
-        m_calendar.set(e_cal_new(source, m_type), m_typeName.c_str());
-    }
 
-    e_cal_set_auth_func(m_calendar, eCalAuthFunc, this);
+        e_cal_set_auth_func(m_calendar, eCalAuthFunc, this);
     
-    if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
-        if (created) {
-            // opening newly created address books often failed, perhaps that also applies to calendars - try again
-            g_clear_error(&gerror);
-            sleep(5);
-            if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
+        if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
+            if (created) {
+                // opening newly created address books often failed, perhaps that also applies to calendars - try again
+                g_clear_error(&gerror);
+                sleep(5);
+                if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
+                    throwError(string("opening ") + m_typeName, gerror );
+                }
+            } else {
                 throwError(string("opening ") + m_typeName, gerror );
             }
-        } else {
-            throwError(string("opening ") + m_typeName, gerror );
         }
     }
 
index d26f64a..6d3d586 100644 (file)
@@ -218,9 +218,6 @@ void KCalExtendedSource::open()
         if (!m_data->m_storage->open()) {
             throwError("failed to open storage");
         }
-        if (!m_data->m_storage->load()) {
-            throwError("failed to load calendar");
-        }
         mKCal::Notebook::Ptr defaultNotebook = m_data->m_storage->defaultNotebook();
         if (!defaultNotebook) {
             throwError("no default Notebook");
@@ -260,6 +257,13 @@ void KCalExtendedSource::open()
         }
         m_data->m_notebookUID = notebook->uid();
     }
+
+    // we are not currently using partial loading because there were
+    // issues with it (BMC #6061); the load() calls elsewhere in this
+    // file are commented out
+    if (!m_data->m_storage->load()) {
+        throwError("failed to load calendar");
+    }
 }
 
 bool KCalExtendedSource::isEmpty()
index 10d83b7..803e7d6 100644 (file)
@@ -112,7 +112,7 @@ public:
             checkError(op, req);
         } else {
             list<string> res;
-            foreach (int index, errors) {
+            foreach (int index, errors.keys()) {
                 res.push_back(StringPrintf("entry #%d failed with error %d", index, errors[index]));
             }
             m_parent->throwError(StringPrintf("%s: failed with error %d, ", op, req.error()) +
index bdc34f7..19b9cdc 100644 (file)
@@ -347,6 +347,18 @@ public:
                 setWBXML(m_options.m_isWBXML, true);
                 setRetryDuration(m_options.m_retryDuration, true);
                 setRetryInterval(m_options.m_retryInterval, true);
+                if (m_options.m_syncMode == SYNC_TWO_WAY &&
+                    m_options.m_checkReport.syncMode == SYNC_NONE) {
+                    // For this test, any kind of final sync mode is
+                    // acceptable. Disable slow sync prevention
+                    // temporarily. The check for the requested sync
+                    // mode is perhaps too conservative, but in
+                    // practice the only test where slow sync
+                    // prevention caused a test failure was
+                    // Client::Sync::vcard30::testTwoWaySync after
+                    // some other failed test, so let's be conservative...
+                    setPreventSlowSync(false);
+                }
                 SyncContext::prepare();
             }
 
index 82ba84d..aa781e4 100644 (file)
@@ -450,7 +450,7 @@ sometimes also a beta or alpha suffix),
       <arg type="s" name="config" direction="in">
         <doc:doc><doc:summary>name of configuration to be created or used in session</doc:summary></doc:doc>
       </arg>
-      <arg type="a(s)" name="flags" direction="in">
+      <arg type="as" name="flags" direction="in">
         <doc:doc><doc:summary>optional flags</doc:summary></doc:doc>
       </arg>
       <arg type="o" name="session" direction="out">
index fb77ecb..be6a64e 100644 (file)
@@ -22,7 +22,7 @@
           Get the session flags set with Server.StartSessionWithFlags().
         </doc:description>
       </doc:doc>
-      <arg type="a(s)" name="flags" direction="out">
+      <arg type="as" name="flags" direction="out">
         <doc:doc><doc:summary>session flags</doc:summary></doc:doc>
       </arg>
     </method>
index c3171a0..045c10d 100644 (file)
@@ -644,6 +644,35 @@ syncevo_server_start_session (SyncevoServer *syncevo,
              data);
 }
 
+void
+syncevo_server_start_no_sync_session (SyncevoServer *syncevo,
+                                      const char *config_name,
+                                      SyncevoServerStartSessionCb callback,
+                                      gpointer userdata)
+{
+    ServerAsyncData *data;
+    SyncevoServerPrivate *priv;
+    char *flags[2] = {"no-sync", NULL};
+
+    priv = GET_PRIVATE (syncevo);
+
+    data = server_async_data_new (syncevo, G_CALLBACK (callback), userdata);
+
+    if (!priv->proxy && !syncevo_server_get_new_proxy (syncevo)) {
+        if (callback) {
+            g_idle_add ((GSourceFunc)start_session_error, data);
+        }
+        return;
+    }
+
+    org_syncevolution_Server_start_session_with_flags_async
+            (priv->proxy,
+             config_name,
+             flags,
+             (org_syncevolution_Server_start_session_reply) start_session_callback,
+             data);
+}
+
 static void
 get_sessions_callback (SyncevoServer *syncevo,
                        SyncevoSessions *sessions,
@@ -705,14 +734,14 @@ syncevo_server_get_sessions (SyncevoServer *syncevo,
 static void
 check_presence_callback (SyncevoServer *syncevo,
                          char *status,
-                         char *transport,
+                         char **transports,
                          GError *error,
                          ServerAsyncData *data)
 {
     if (data->callback) {
         (*(SyncevoServerGetPresenceCb)data->callback) (data->server,
                                                        status,
-                                                       transport,
+                                                       transports,
                                                        error,
                                                        data->userdata);
     }
index 520e0f1..0990cf0 100644 (file)
@@ -127,7 +127,7 @@ void syncevo_server_get_sessions (SyncevoServer *syncevo,
 
 typedef void (*SyncevoServerGetPresenceCb) (SyncevoServer *syncevo,
                                             char *status,
-                                            char *transport,
+                                            char **transports,
                                             GError *error,
                                             gpointer userdata);
 void syncevo_server_get_presence (SyncevoServer *syncevo,
index 47cfb8b..7c2f54e 100644 (file)
@@ -293,6 +293,46 @@ generic_error (SessionAsyncData *data)
 }
 
 static void
+get_config_name_callback (DBusGProxy *proxy,
+                          char *name,
+                          GError *error,
+                          SessionAsyncData *data)
+{
+    if (data->callback) {
+        (*(SyncevoSessionGetConfigNameCb)data->callback) (data->session,
+                                                          name,
+                                                          error,
+                                                          data->userdata);
+    }
+    session_async_data_free (data);
+}
+
+void
+syncevo_session_get_config_name (SyncevoSession *session,
+                                 SyncevoSessionGetConfigNameCb callback,
+                                 gpointer userdata)
+{
+    SessionAsyncData *data;
+    SyncevoSessionPrivate *priv;
+
+    priv = GET_PRIVATE (session);
+
+    data = session_async_data_new (session, G_CALLBACK (callback), userdata);
+
+    if (!priv->proxy) {
+        if (callback) {
+            g_idle_add ((GSourceFunc)generic_error, data);
+        }
+        return;
+    }
+
+    org_syncevolution_Session_get_config_name_async
+            (priv->proxy,
+             (org_syncevolution_Session_get_config_name_reply) get_config_name_callback,
+             data);
+}
+
+static void
 get_config_callback (DBusGProxy *proxy,
                      SyncevoConfig *configuration,
                      GError *error,
index 909d631..ac6f60b 100644 (file)
@@ -60,6 +60,14 @@ typedef void (*SyncevoSessionGenericCb) (SyncevoSession *session,
                                          GError *error,
                                          gpointer userdata);
 
+typedef void (*SyncevoSessionGetConfigNameCb) (SyncevoSession *session,
+                                               char *name,
+                                               GError *error,
+                                               gpointer userdata);
+void syncevo_session_get_config_name (SyncevoSession *session,
+                                      SyncevoSessionGetConfigNameCb callback,
+                                      gpointer userdata);
+
 typedef void (*SyncevoSessionGetConfigCb) (SyncevoSession *session,
                                            SyncevoConfig *config,
                                            GError *error,
index f3eb960..3857f61 100644 (file)
@@ -244,7 +244,7 @@ get_config_for_overwrite_prevention_cb (SyncevoSession *session,
     sync_config_widget_set_name (data->widget, name);
     g_free (name);
 
-    syncevo_server_start_session (data->widget->server,
+    syncevo_server_start_no_sync_session (data->widget->server,
                                   data->widget->config_name,
                                   (SyncevoServerStartSessionCb)start_session_for_config_write_cb,
                                   data);
@@ -359,7 +359,7 @@ stop_clicked_cb (GtkButton *btn, SyncConfigWidget *self)
     data->widget = self;
     data->delete = FALSE;
     data->temporary = FALSE;
-    syncevo_server_start_session (self->server,
+    syncevo_server_start_no_sync_session (self->server,
                                   self->config_name,
                                   (SyncevoServerStartSessionCb)start_session_for_config_write_cb,
                                   data);
@@ -462,7 +462,7 @@ use_clicked_cb (GtkButton *btn, SyncConfigWidget *self)
     data->delete = FALSE;
     data->temporary = FALSE;
     data->basename = g_strdup (self->config_name);
-    syncevo_server_start_session (self->server,
+    syncevo_server_start_no_sync_session (self->server,
                                   self->config_name,
                                   (SyncevoServerStartSessionCb)start_session_for_config_write_cb,
                                   data);
@@ -519,7 +519,7 @@ reset_delete_clicked_cb (GtkButton *btn, SyncConfigWidget *self)
     data->delete = TRUE;
     data->temporary = FALSE;
 
-    syncevo_server_start_session (self->server,
+    syncevo_server_start_no_sync_session (self->server,
                                   self->config_name,
                                   (SyncevoServerStartSessionCb)start_session_for_config_write_cb,
                                   data);
@@ -777,7 +777,7 @@ init_source (char *name,
     data->temporary = TRUE;
     data->widgets = source_widgets_ref (widgets);
 
-    syncevo_server_start_session (self->server,
+    syncevo_server_start_no_sync_session (self->server,
                                   self->config_name,
                                   (SyncevoServerStartSessionCb)start_session_for_config_write_cb,
                                   data);
index 09ca119..d9aa5d9 100644 (file)
@@ -185,7 +185,7 @@ static void update_services_list (app_data *data);
 static void update_service_ui (app_data *data);
 static void setup_new_service_clicked (GtkButton *btn, app_data *data);
 static gboolean source_config_update_widget (source_config *source);
-static void get_presence_cb (SyncevoServer *server, char *status, char *transport,
+static void get_presence_cb (SyncevoServer *server, char *status, char **transport,
                              GError *error, app_data *data);
 static void get_reports_cb (SyncevoServer *server, SyncevoReports *reports, 
                             GError *error, app_data *data);
@@ -1210,7 +1210,7 @@ autosync_toggle_cb (GtkWidget *widget, gpointer x, app_data *data)
             op_data->data = data;
             op_data->operation = OP_SAVE;
             op_data->started = FALSE;
-            syncevo_server_start_session (data->server,
+            syncevo_server_start_no_sync_session (data->server,
                                           data->current_service->name,
                                           (SyncevoServerStartSessionCb)start_session_cb,
                                           op_data);
@@ -3328,7 +3328,7 @@ set_online_status (app_data *data, gboolean online)
 static void
 get_presence_cb (SyncevoServer *server,
                  char *status,
-                 char *transport,
+                 char **transports,
                  GError *error,
                  app_data *data)
 {
@@ -3343,7 +3343,7 @@ get_presence_cb (SyncevoServer *server,
         set_online_status (data, strcmp (status, "") == 0);
     }
     g_free (status);
-    g_free (transport);
+    g_strfreev (transports);
 }
 
 static void
@@ -3456,7 +3456,7 @@ server_presence_changed_cb (SyncevoServer *server,
 {
     if (data->current_service &&
         config_name && status &&
-        strcmp (data->current_service->name, config_name) == 0) {
+        g_strcasecmp (data->current_service->name, config_name) == 0) {
 
         set_online_status (data, strcmp (status, "") == 0);
     }
@@ -3549,9 +3549,9 @@ sync_ui_create ()
                       G_CALLBACK (server_shutdown_cb), data);
     g_signal_connect (data->server, "session-changed",
                       G_CALLBACK (server_session_changed_cb), data);
-    g_signal_connect (data->server, "presence_changed",
+    g_signal_connect (data->server, "presence-changed",
                       G_CALLBACK (server_presence_changed_cb), data);
-    g_signal_connect (data->server, "templates_changed",
+    g_signal_connect (data->server, "templates-changed",
                       G_CALLBACK (server_templates_changed_cb), data);
     g_signal_connect (data->server, "info-request",
                       G_CALLBACK (info_request_cb), data);
index 7ecb9f0..d32a2d3 100644 (file)
@@ -6108,7 +6108,11 @@ void AutoSyncManager::Notification::send(const char *summary,
         notify_notification_clear_actions(m_notification);
         notify_notification_close(m_notification, NULL);
     }
+#if !defined(NOTIFY_CHECK_VERSION)
     m_notification = notify_notification_new(summary, body, NULL, NULL);
+#else // NOTIFY_CHECK_VERSION(0,7,0) is redundant, because 0.7.0 introduced NOTIFY_CHECK_VERSION
+    m_notification = notify_notification_new(summary, body, NULL);
+#endif
     //if actions are not supported, don't add actions
     //An example is Ubuntu Notify OSD. It uses an alert box
     //instead of a bubble when a notification is appended with actions.
index babef30..934653e 100644 (file)
@@ -1831,7 +1831,7 @@ public:
                               "peers/scheduleworld/config.ini:# SSLVerifyHost = 1\n"
                               "peers/scheduleworld/config.ini:WebURL = http://www.scheduleworld.com\n"
                               "peers/scheduleworld/config.ini:# IconURI = \n"
-                              "peers/scheduleworld/config.ini:ConsumerReady = 1\n"
+                              "peers/scheduleworld/config.ini:# ConsumerReady = 0\n"
 
                               "peers/scheduleworld/sources/addressbook/.internal.ini:# adminData = \n"
                               "peers/scheduleworld/sources/addressbook/.internal.ini:# synthesisID = 0\n"
@@ -3085,7 +3085,7 @@ private:
             "spds/syncml/config.txt:# SSLVerifyHost = 1\n"
             "spds/syncml/config.txt:WebURL = http://www.scheduleworld.com\n"
             "spds/syncml/config.txt:# IconURI = \n"
-            "spds/syncml/config.txt:ConsumerReady = 1\n"
+            "spds/syncml/config.txt:# ConsumerReady = 0\n"
             "spds/sources/addressbook/config.txt:sync = two-way\n"
             "spds/sources/addressbook/config.txt:type = addressbook:text/vcard\n"
             "spds/sources/addressbook/config.txt:# evolutionsource = \n"
@@ -3126,6 +3126,10 @@ private:
                              "WebURL = http://my.funambol.com");
 
         boost::replace_first(config,
+                             "# ConsumerReady = 0",
+                             "ConsumerReady = 1");
+
+        boost::replace_first(config,
                              "# enableWBXML = 1",
                              "enableWBXML = 0");
 
@@ -3170,10 +3174,6 @@ private:
                              "WebURL = http://www.synthesis.ch");        
 
         boost::replace_first(config,
-                             "ConsumerReady = 1",
-                             "# ConsumerReady = 0");
-
-        boost::replace_first(config,
                              "addressbook/config.ini:uri = card3",
                              "addressbook/config.ini:uri = contacts");
         boost::replace_all(config,
index 00b07c6..6ff1cd5 100644 (file)
@@ -602,7 +602,11 @@ boost::shared_ptr<SyncConfig> SyncConfig::createPeerTemplate(const string &serve
         boost::iequals(server, "default")) {
         config->setSyncURL("http://sync.scheduleworld.com/funambol/ds");
         config->setWebURL("http://www.scheduleworld.com");
-        config->setConsumerReady(true);
+        // ScheduleWorld was shut down end of November 2010.
+        // Completely removing all traces of it from SyncEvolution
+        // source code is too intrusive for the time being, so
+        // just disable it in the UI.
+        // config->setConsumerReady(false);
         source = config->getSyncSourceConfig("addressbook");
         source->setURI("card3");
         source->setSourceType("addressbook:text/vcard");
index 9522869..0204458 100644 (file)
@@ -53,6 +53,7 @@ using namespace std;
 #include <boost/foreach.hpp>
 #include <boost/algorithm/string/split.hpp>
 #include <boost/bind.hpp>
+#include <boost/utility.hpp>
 
 #include <sys/stat.h>
 #include <sys/wait.h>
@@ -167,11 +168,140 @@ SyncContext::~SyncContext()
 {
 }
 
+/**
+ * Utility code for parsing and comparing
+ * log dir names. Also a binary predicate for
+ * sorting them.
+ */
+class LogDirNames {
+public:
+    // internal prefix for backup directory name: "SyncEvolution-"
+    static const char* const DIR_PREFIX;
+
+    /**
+     * Compare two directory by its creation time encoded
+     * in the directory name sort them in ascending order
+     */
+    bool operator() (const string &str1, const string &str2) {
+        string iDirPath1, iStr1;
+        string iDirPath2, iStr2;
+        parseLogDir(str1, iDirPath1, iStr1);
+        parseLogDir(str2, iDirPath2, iStr2);
+        string dirPrefix1, peerName1, dateTime1;
+        parseDirName(iStr1, dirPrefix1, peerName1, dateTime1);
+        string dirPrefix2, peerName2, dateTime2;
+        parseDirName(iStr2, dirPrefix2, peerName2, dateTime2);
+        return dateTime1 < dateTime2;
+    }
+
+    /**
+     * extract backup directory name from a full backup path
+     * for example, a full path "/home/xxx/.cache/syncevolution/default/funambol-2009-12-08-14-05"
+     * is parsed as "/home/xxx/.cache/syncevolution/default" and "funambol-2009-12-08-14-05"
+     */
+    static void parseLogDir(const string &fullpath, string &dirPath, string &dirName) {
+        string iFullpath = boost::trim_right_copy_if(fullpath, boost::is_any_of("/"));
+        size_t off = iFullpath.find_last_of('/');
+        if(off != iFullpath.npos) {
+            dirPath = iFullpath.substr(0, off);
+            dirName = iFullpath.substr(off+1);
+        } else {
+            dirPath = "";
+            dirName = iFullpath;
+        }
+    }
+
+    // escape '-' and '_' for peer name 
+    static string escapePeer(const string &prefix) {
+        string escaped = prefix;
+        boost::replace_all(escaped, "_", "__");
+        boost::replace_all(escaped, "-", "_+");
+        return escaped;
+    }
+
+    // un-escape '_+' and '__' for peer name 
+    static string unescapePeer(const string &escaped) {
+        string prefix = escaped;
+        boost::replace_all(prefix, "_+", "-");
+        boost::replace_all(prefix, "__", "_");
+        return prefix;
+    }
+
+    /**
+     * parse a directory name into dirPrefix(empty or DIR_PREFIX), peerName, dateTime.
+     * peerName must be unescaped by the caller to get the real string.
+     * If directory name is in the format of '[DIR_PREFIX]-peer[@context]-year-month-day-hour-min'
+     * then parsing is sucessful and these 3 strings are correctly set and true is returned. 
+     * Otherwise, false is returned. 
+     * Here we don't check whether the dir name is matching peer name
+     */
+    static bool parseDirName(const string &dir, string &dirPrefix, string &config, string &dateTime) {
+        string iDir = dir;
+        if (!boost::starts_with(iDir, DIR_PREFIX)) {
+            dirPrefix = "";
+        } else {
+            dirPrefix = DIR_PREFIX;
+            boost::erase_first(iDir, DIR_PREFIX);
+        }
+        size_t off = iDir.find('-');
+        if (off != iDir.npos) {
+            config = iDir.substr(0, off);
+            dateTime = iDir.substr(off);
+            // m_prefix doesn't contain peer name or it equals with dirPrefix plus peerName
+            return checkDirName(dateTime);
+        }
+        return false;
+    }
+
+    // check the dir name is conforming to what format we write
+    static bool checkDirName(const string& value) {
+        const char* str = value.c_str();
+        /** need check whether string after prefix is a valid date-time we wrote, format
+         * should be -YYYY-MM-DD-HH-MM and optional sequence number */
+        static char table[] = {'-','9','9','9','9', //year
+                               '-','1','9', //month
+                               '-','3','9', //date
+                               '-','2','9', //hour
+                               '-','5','9'  //minute
+        };
+        for(size_t i = 0; i < sizeof(table)/sizeof(table[0]) && *str; i++,str++) {
+            switch(table[i]) {
+                case '-':
+                    if(*str != '-')
+                        return false;
+                    break;
+                case '1':
+                    if(*str < '0' || *str > '1')
+                        return false;
+                    break;
+                case '2':
+                    if(*str < '0' || *str > '2')
+                        return false;
+                    break;
+                case '3':
+                    if(*str < '0' || *str > '3')
+                        return false;
+                    break;
+                case '5':
+                    if(*str < '0' || *str > '5')
+                        return false;
+                    break;
+                case '9':
+                    if(*str < '0' || *str > '9')
+                        return false;
+                    break;
+                default:
+                    return false;
+            };
+        }
+        return true;
+    }
+};
 
 // this class owns the logging directory and is responsible
 // for redirecting output at the start and end of sync (even
 // in case of exceptions thrown!)
-class LogDir : public LoggerBase {
+class LogDir : public LoggerBase, private boost::noncopyable, private LogDirNames {
     SyncContext &m_client;
     Logger &m_parentLogger;  /**< the logger which was active before we started to intercept messages */
     string m_logdir;         /**< configured backup root dir */
@@ -190,9 +320,6 @@ class LogDir : public LoggerBase {
     bool m_readonly;         /**< m_info is not to be written to */
     SyncReport *m_report;    /**< record start/end times here */
 
-    // internal prefix for backup directory name: "SyncEvolution-"
-    static const char* const DIR_PREFIX;
-
 public:
     LogDir(SyncContext &client) : m_client(client), m_parentLogger(LoggerBase::instance()), m_info(NULL), m_readonly(false), m_report(NULL)
     {
@@ -424,8 +551,9 @@ public:
             level = INFO;
             break;
         default:
-            if (m_logfile.empty()) {
-                // no log file: print all information to the console
+            if (m_logfile.empty() || getenv("SYNCEVOLUTION_DEBUG")) {
+                // no log file or user wants to see everything:
+                // print all information to the console
                 level = DEBUG;
             } else {
                 // have log file: avoid excessive output to the console,
@@ -655,22 +783,6 @@ public:
     }
 
     /**
-     * Compare two directory by its creation time encoded in the directory name
-     * sort them in ascending order
-     */
-    bool operator()(const string &str1, const string &str2) {
-        string iDirPath1, iStr1;
-        string iDirPath2, iStr2;
-        parseLogDir(str1, iDirPath1, iStr1);
-        parseLogDir(str2, iDirPath2, iStr2);
-        string dirPrefix1, peerName1, dateTime1;
-        parseDirName(iStr1, dirPrefix1, peerName1, dateTime1);
-        string dirPrefix2, peerName2, dateTime2;
-        parseDirName(iStr2, dirPrefix2, peerName2, dateTime2);
-        return dateTime1 < dateTime2;
-    }
-
-    /**
      * Compare two database dumps just based on their inodes.
      * @return true    if inodes differ
      */
@@ -738,65 +850,6 @@ private:
         {}
     };
 
-    /**
-     * extract backup directory name from a full backup path
-     * for example, a full path "/home/xxx/.cache/syncevolution/default/funambol-2009-12-08-14-05"
-     * is parsed as "/home/xxx/.cache/syncevolution/default" and "funambol-2009-12-08-14-05"
-     */
-    static void parseLogDir(const string &fullpath, string &dirPath, string &dirName) {
-        string iFullpath = boost::trim_right_copy_if(fullpath, boost::is_any_of("/"));
-        size_t off = iFullpath.find_last_of('/');
-        if(off != iFullpath.npos) {
-            dirPath = iFullpath.substr(0, off);
-            dirName = iFullpath.substr(off+1);
-        } else {
-            dirPath = "";
-            dirName = iFullpath;
-        }
-    }
-
-    // escape '-' and '_' for peer name 
-    static string escapePeer(const string &prefix) {
-        string escaped = prefix;
-        boost::replace_all(escaped, "_", "__");
-        boost::replace_all(escaped, "-", "_+");
-        return escaped;
-    }
-
-    // un-escape '_+' and '__' for peer name 
-    static string unescapePeer(const string &escaped) {
-        string prefix = escaped;
-        boost::replace_all(prefix, "_+", "-");
-        boost::replace_all(prefix, "__", "_");
-        return prefix;
-    }
-
-    /**
-     * parse a directory name into dirPrefix(empty or DIR_PREFIX), peerName, dateTime.
-     * peerName must be unescaped by the caller to get the real string.
-     * If directory name is in the format of '[DIR_PREFIX]-peer[@context]-year-month-day-hour-min'
-     * then parsing is sucessful and these 3 strings are correctly set and true is returned. 
-     * Otherwise, false is returned. 
-     * Here we don't check whether the dir name is matching peer name
-     */
-    static bool parseDirName(const string &dir, string &dirPrefix, string &config, string &dateTime) {
-        string iDir = dir;
-        if (!boost::starts_with(iDir, DIR_PREFIX)) {
-            dirPrefix = "";
-        } else {
-            dirPrefix = DIR_PREFIX;
-            boost::erase_first(iDir, DIR_PREFIX);
-        }
-        size_t off = iDir.find('-');
-        if (off != iDir.npos) {
-            config = iDir.substr(0, off);
-            dateTime = iDir.substr(off);
-            // m_prefix doesn't contain peer name or it equals with dirPrefix plus peerName
-            return checkDirName(dateTime);
-        }
-        return false;
-    }
-
     /** 
      * Find all entries in a given directory, return as sorted array of full paths in ascending order.
      * If m_prefix doesn't contain peer name information, then all log dirs for different peers in the
@@ -831,56 +884,12 @@ private:
         // sort vector in ascending order
         // if no peer name
         if(peerName.empty()){
-            sort(dirs.begin(), dirs.end(), *this);
+            sort(dirs.begin(), dirs.end(), LogDirNames());
         } else {
             sort(dirs.begin(), dirs.end());
         }
     }
 
-    // check the dir name is conforming to what format we write
-    static bool checkDirName(const string& value) {
-        const char* str = value.c_str();
-        /** need check whether string after prefix is a valid date-time we wrote, format
-         * should be -YYYY-MM-DD-HH-MM and optional sequence number */
-        static char table[] = {'-','9','9','9','9', //year
-                               '-','1','9', //month
-                               '-','3','9', //date
-                               '-','2','9', //hour
-                               '-','5','9'  //minute
-        };
-        for(size_t i = 0; i < sizeof(table)/sizeof(table[0]) && *str; i++,str++) {
-            switch(table[i]) {
-                case '-':
-                    if(*str != '-')
-                        return false;
-                    break;
-                case '1':
-                    if(*str < '0' || *str > '1')
-                        return false;
-                    break;
-                case '2':
-                    if(*str < '0' || *str > '2')
-                        return false;
-                    break;
-                case '3':
-                    if(*str < '0' || *str > '3')
-                        return false;
-                    break;
-                case '5':
-                    if(*str < '0' || *str > '5')
-                        return false;
-                    break;
-                case '9':
-                    if(*str < '0' || *str > '9')
-                        return false;
-                    break;
-                default:
-                    return false;
-            };
-        }
-        return true;
-    }
-
     // store time stamp in session info
     void writeTimestamp(const string &key, time_t val, bool flush = true) {
         if (m_info) {
@@ -896,7 +905,7 @@ private:
     }
 };
 
-const char* const LogDir::DIR_PREFIX = "SyncEvolution-";
+const char* const LogDirNames::DIR_PREFIX = "SyncEvolution-";
 
 /**
  * This class owns the sync sources. For historic reasons (required
index 5c48a9a..9cfed9f 100644 (file)
@@ -109,11 +109,11 @@ void SyncSourceBase::getDatastoreXML(string &xml, XMLConfigFragments &fragments)
         "      -->\n"
         "      <conflictstrategy>newer-wins</conflictstrategy>\n"
         "\n"
-        "      <!-- on slowsync: duplicate items that are not fully equal\n"
-        "           You can set this to 'newer-wins' as well to avoid\n"
-        "           duplicates as much as possible\n"
+        "      <!-- on slowsync: do not duplicate items even if not fully equal\n"
+        "           You can set this to 'duplicate' to avoid possible data loss\n"
+        "           resulting from merging\n"
         "      -->\n"
-        "      <slowsyncstrategy>duplicate</slowsyncstrategy>\n"
+        "      <slowsyncstrategy>newer-wins</slowsyncstrategy>\n"
         "\n"
         "      <!-- text db plugin is designed for UTF-8, make sure data is passed as UTF-8 (and not the ISO-8859-1 default) -->\n"
         "      <datacharset>UTF-8</datacharset>\n"
index 8b1f82a..e957377 100644 (file)
@@ -17,7 +17,7 @@
       <field name="SUMMARY" type="multiline" compare="always"/>
       <field name="DESCRIPTION" type="multiline" compare="slowsync" merge="lines"/>
       <field name="LOCATION" type="multiline" compare="slowsync" merge="lines"/>
-      <field name="URL" type="url" compare="conflict"/>
+      <field name="URL" type="url" compare="conflict" merge="fillempty"/>
 
       <!-- recurrence rule block, fields must be in that order, including
            DTSTART as last field !! -->
index 114fc27..bf02d7e 100644 (file)
@@ -3,5 +3,15 @@
       <model>SyncEvolution</model>
 
       <include rule="HAVE-EVOLUTION-UI-SLOT"/>
+      <!-- Merging between SyncEvolution instances is expected to work
+           well, so allow the engine to update items on both
+           sides also in the "non-first" slow sync case.
+
+           This is turned off by default for other clients
+           because small changes would propagate to other
+           clients of the server. Hopefully with SyncEvolution as
+           client we'll have not much such changes. -->
+      <updateclientinslowsync>yes</updateclientinslowsync>
+      <updateserverinslowsync>yes</updateserverinslowsync>
     </remoterule>
 
diff --git a/src/syncevo/configs/remoterules/server/00_sony_ericsson.xml b/src/syncevo/configs/remoterules/server/00_sony_ericsson.xml
new file mode 100644 (file)
index 0000000..028fb32
--- /dev/null
@@ -0,0 +1,13 @@
+    <remoterule name="SonyEricsson">
+      <!-- defaults for *all* Sony Ericsson phones; can be overridden for
+specific models later on -->
+      <manufacturer>SonyEricsson</manufacturer>
+      <finalrule>no</finalrule>
+
+      <!-- At least the Sony Ericsson T700 is only able to deal with alarm
+times in UTC,
+           but rejects relative times. BMC #10091 -->
+      <rulescript><![CDATA[
+        alarmTimeToUTC = TRUE;
+      ]]></rulescript>      
+    </remoterule>
index d1d4a5c..4ff05a7 100644 (file)
           }  
         }
 
+        // Transform absolute alarm time back to relative time (mirrors the code in
+        // VCALENDAR_OUTGOING_SCRIPT, see also BMC #11233). This applies to all
+        // events, recurring or not, if the "alarmTimeToUTC" workaround is applied.
+        // With a peer which cannot distinguish between absolute and relative
+        // alarms we better treat all alarms as relative, because that is presented
+        // more nicely to the user on the local side.
+        if (ITEMDATATYPE()=="vCalendar10" &&
+            ALARM_TIME!=EMPTY &&
+            !ISDURATION(ALARM_TIME) &&
+            SESSIONVAR("alarmTimeToUTC")) { 
+            ALARM_TIME = ALARM_TIME - DTSTART;
+        }
+
         // - shape attendees (and make sure ATTENDEES[] is assigned even for empty email addresses)
         i=0;
         while(i<SIZE(ATTENDEES) || i<SIZE(ATTENDEE_CNS)) {
       }
 
       // for 'ALARM_TIME', convert duration time to UTC time
-      // This workaround is for Mobical.net can't understand duration time
+      // This workaround is for Mobical.net which can't understand duration time.
+      // Also used with phones. The interpretation at least by Nokia
+      // is that the absolute alarm time repeats together with the
+      // event (BMC #11233). VCALENDAR_INCOMING_SCRIPT has the
+      // corresponding transformation back (important for recurring events).
       if (SESSIONVAR("alarmTimeToUTC") && ITEMDATATYPE()=="vCalendar10"
             && ALARM_TIME!=EMPTY && ISDURATION(ALARM_TIME)) {
         TIMESTAMP ts;
index b4dfd18..174c382 100644 (file)
@@ -117,9 +117,10 @@ void splitPath(const string &path, string &dir, string &file)
 
 bool relToAbs(string &path)
 {
-    char buffer[PATH_MAX+1];
-    if (realpath(path.c_str(), buffer)) {
+    char *buffer;
+    if ((buffer = realpath(path.c_str(), NULL)) != NULL) {
         path = buffer;
+       free(buffer);
         return true;
     } else {
         return false; 
index 14c1108..791587c 100644 (file)
@@ -486,6 +486,10 @@ int main( int argc, char **argv )
     free(exe);
 
     try {
+        if (getenv("SYNCEVOLUTION_DEBUG")) {
+            LoggerBase::instance().setLevel(Logger::DEBUG);
+        }
+
         /*
          * don't log errors to cerr: LogRedirect cannot distinguish
          * between our valid error messages and noise from other
index c5bd829..b4485cd 100644 (file)
@@ -1,6 +1,107 @@
 # Generated by configure.  Do no edit.
-# git revision 2a247a4a9752d939eb68d2d629ddb8d988fccc89
-# git tag libsynthesis_3.4.0.6+syncevolution-1-1
+# git revision 31f90cff28d24a5f31579039597ccfc5a534288a
+# git tag libsynthesis_3.4.0.6+syncevolution-1-1-0-99-1
+
+2010-12-16  Lukas Zeller  <luz@plan44.ch>
+
+       * src/sysync/localengineds.cpp:
+
+       engine: server case: fixed bad bug that could mess up tempGUIDs.
+       These must be cleared when first <Sync> is received.
+
+2010-12-19  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/localengineds.cpp:
+
+       temporary ID mapping: flag unexpected state as real errors
+
+2010-12-15  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/platform_adapters/linux/platform_timezones.cpp:
+
+       Linux time zones: use TZID=<location> instead of
+       TZID=/softwarestudio.org/Tzfile/<location>
+
+2010-12-14  Lukas Zeller  <luz@synthesis.ch>
+
+       * src/sysync/mimedirprofile.cpp:
+
+       engine: prevent generating invalid recurrence end specifications
+       in vCalendar 1.0 RRULE (date-only not allowed, must be date+time)
+
+2010-12-14  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/mimedirprofile.cpp:
+
+       Revert "vCalendar 1.0: avoid RRULE end date without time"
+
+2010-12-14  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * configure.in:
+       * src/Makefile.am.in:
+
+       autotools: fix compilation with old libtool 1.5.22 on CentOS 5.5
+
+2010-12-13  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/mimedirprofile.cpp:
+
+       vCalendar 1.0: avoid RRULE end date without time
+
+2010-12-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/vtimezone.cpp:
+
+       vtimezone: retain original TZID in imported definitions
+
+2010-12-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/platform_adapters/linux/platform_timezones.cpp:
+       * src/sysync/timezones.h:
+       * src/sysync/vtimezone.cpp:
+       * src/sysync/vtimezone.h:
+
+       vtimezones: explicitly store std and dst TZNAME
+
+2010-12-10  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/localengineds.cpp:
+
+       maximum UID size: avoid redundant tempUID->localUID mappings
+
+2010-12-08  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/DB_interfaces/api_db/pluginapids.cpp:
+       * src/sysync/localengineds.cpp:
+
+       temporary IDs: avoid reusing existing ID
+
+2010-12-06  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncml_tk/src/sml/mgr/all/mgrinstancemgr.c:
+
+       SyncML Toolkit: fixed memory leak in case of error
+
+2010-12-06  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/syncsession.cpp:
+
+       sync session: handle empty Target URI
+
+2010-11-28  David Bremner  <bremner@unb.ca>
+
+       * src/Targets/ReleasedProducts/SDK/target_options.h:
+
+       improve detection of MacOS X, to avoid confusion on other Mach
+       systems
+
+2010-08-24  Lukas Zeller  <luz@synthesis.ch>
+
+       * src/sysync/multifielditemtype.cpp:
+       * src/sysync/syncitem.cpp:
+       * src/sysync/syncitem.h:
+
+       engine: added new compare mode for fields: "scripted"
 
 2010-10-19  Patrick Ohly  <patrick.ohly@intel.com>
 
index 001cc5f..d2b3cc7 100644 (file)
@@ -143,6 +143,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PCRE_CFLAGS = @PCRE_CFLAGS@
 PCRE_LIBS = @PCRE_LIBS@
+PIC_CXXFLAGS = @PIC_CXXFLAGS@
 PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
index f57b49a..3bc4b1b 100755 (executable)
@@ -871,6 +871,7 @@ F77
 FFLAGS
 ac_ct_F77
 LIBTOOL
+PIC_CXXFLAGS
 COND_DOXYGEN_TRUE
 COND_DOXYGEN_FALSE
 PKG_CONFIG
@@ -4853,7 +4854,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4856 "configure"' > conftest.$ac_ext
+  echo '#line 4857 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7433,11 +7434,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7436: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7437: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7440: \$? = $ac_status" >&5
+   echo "$as_me:7441: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7723,11 +7724,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7726: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7727: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7730: \$? = $ac_status" >&5
+   echo "$as_me:7731: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7827,11 +7828,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7830: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7831: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7834: \$? = $ac_status" >&5
+   echo "$as_me:7835: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10204,7 +10205,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10207 "configure"
+#line 10208 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10304,7 +10305,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10307 "configure"
+#line 10308 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12705,11 +12706,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12708: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12709: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:12712: \$? = $ac_status" >&5
+   echo "$as_me:12713: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -12809,11 +12810,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12812: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12813: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:12816: \$? = $ac_status" >&5
+   echo "$as_me:12817: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14407,11 +14408,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14410: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14411: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14414: \$? = $ac_status" >&5
+   echo "$as_me:14415: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14511,11 +14512,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14514: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14515: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14518: \$? = $ac_status" >&5
+   echo "$as_me:14519: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -16731,11 +16732,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16734: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16735: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16738: \$? = $ac_status" >&5
+   echo "$as_me:16739: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17021,11 +17022,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17024: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17025: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17028: \$? = $ac_status" >&5
+   echo "$as_me:17029: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17125,11 +17126,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17128: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17129: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:17132: \$? = $ac_status" >&5
+   echo "$as_me:17133: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -19972,6 +19973,9 @@ fi
 
 
 
+PIC_CXXFLAGS="$lt_prog_compiler_pic_CXX"
+
+
 # Check whether --enable-debug-logs was given.
 if test "${enable_debug_logs+set}" = set; then
   enableval=$enable_debug_logs; enable_debug_logs="$enableval"
@@ -22135,6 +22139,7 @@ F77!$F77$ac_delim
 FFLAGS!$FFLAGS$ac_delim
 ac_ct_F77!$ac_ct_F77$ac_delim
 LIBTOOL!$LIBTOOL$ac_delim
+PIC_CXXFLAGS!$PIC_CXXFLAGS$ac_delim
 COND_DOXYGEN_TRUE!$COND_DOXYGEN_TRUE$ac_delim
 COND_DOXYGEN_FALSE!$COND_DOXYGEN_FALSE$ac_delim
 PKG_CONFIG!$PKG_CONFIG$ac_delim
@@ -22158,7 +22163,7 @@ LIBOBJS!$LIBOBJS$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 28; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 29; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
index b0ee64a..e2a0c14 100644 (file)
@@ -12,6 +12,13 @@ AC_PROG_LIBTOOL
 AC_PROG_MAKE_SET
 AM_PROG_CC_C_O
 
+dnl Extract PIC flags from libtool configure for libsynthesissdk.a
+dnl (makes assumptions about libtool var naming!). Some versions
+dnl of libtool use PIC mode automatically for static libraries,
+dnl others don't (?!). See "[os-libsynthesis] libsynthesissdk.a built without -fPIC".
+PIC_CXXFLAGS="$lt_prog_compiler_pic_CXX"
+AC_SUBST(PIC_CXXFLAGS)
+
 AC_ARG_ENABLE(debug-logs,
               AS_HELP_STRING([--debug-logs],
                              [For developers: add links to call location to HTML log files. Depends on Doxygen (for HTML version of source) and g++ (for __PRETTY_FUNCTION__).]),
index 17c49f8..b1f8210 100755 (executable)
@@ -2288,8 +2288,15 @@ localstatus TPluginApiDS::apiLoadAdminData(
     switch (mapEntry.entrytype) {
       #ifdef SYSYNC_SERVER
       case mapentry_tempidmap:
-       if (IS_SERVER)
-               fTempGUIDMap[mapEntry.remoteid]=mapEntry.localid; // tempGUIDs are accessed by remoteID=tempID
+       if (IS_SERVER) {
+          PDEBUGPRINTFX(DBG_DATA,(
+            "fTempGUIDMap: restore mapping from %s to %s",
+            mapEntry.remoteid.c_str(),
+            mapEntry.localid.c_str()
+          ));
+          
+          fTempGUIDMap[mapEntry.remoteid]=mapEntry.localid; // tempGUIDs are accessed by remoteID=tempID
+        }
         break;
       #endif
       #ifdef SYSYNC_CLIENT
index 1f504a4..69b2767 100644 (file)
@@ -108,6 +108,8 @@ XMLPARSE_CFLAGS_BUILTIN = -I$(srcdir)/Targets/ReleasedProducts/clientEngine_auto
 endif
 
 libsynthesissdk_la_LDFLAGS = -static
+libsynthesissdk_la_CFLAGS = $(PIC_CXXFLAGS)
+libsynthesissdk_la_CXXFLAGS = $(PIC_CXXFLAGS)
 libsynthesissdk_la_SOURCES = synthesis/SDK_support.h synthesis/SDK_util.h synthesis/UI_util.h synthesis/admindata.h synthesis/blobs.h synthesis/dataconversion.h synthesis/dbitem.h synthesis/engine_defs.h synthesis/enginemodulebase.h synthesis/enginemodulebridge.h synthesis/generic_types.h synthesis/lineartime.h synthesis/prefix_file.h synthesis/san.h synthesis/stringutil.h synthesis/syerror.h synthesis/sync_dbapi.h synthesis/sync_dbapidef.h synthesis/sync_declarations.h synthesis/sync_include.h synthesis/sync_uiapi.h synthesis/syncexception.h synthesis/sysync_b64.h synthesis/sysync_md5.h synthesis/sysync_utils.h synthesis/timeutil.h
 if COND_STATIC
 libsynthesissdk_la_SOURCES += sysync_SDK/Sources/UI_util.cpp sysync_SDK/Sources/enginemodulebridge.cpp sysync_SDK/Sources/san.cpp sysync_SDK/Sources/timeutil.cpp
@@ -128,6 +130,8 @@ libsynthesissdk_la_CPPFLAGS = \
        -I$(srcdir)/syncml_tk/src/sml/mgr/inc/ 
 
 libsynthesisstubs_la_LDFLAGS = -static
+libsynthesisstubs_la_CFLAGS = $(libsynthesissdk_la_CXXFLAGS)
+libsynthesisstubs_la_CXXFLAGS = $(libsynthesissdk_la_CXXFLAGS)
 libsynthesisstubs_la_SOURCES = sysync_SDK/Sources/enginestubs.c
 libsynthesisstubs_la_CPPFLAGS = $(libsynthesissdk_la_CPPFLAGS)
 
index e412171..9e0f9bb 100644 (file)
@@ -108,6 +108,8 @@ XMLPARSE_CFLAGS_BUILTIN = -I$(srcdir)/Targets/ReleasedProducts/clientEngine_auto
 endif
 
 libsynthesissdk_la_LDFLAGS = -static
+libsynthesissdk_la_CFLAGS = $(PIC_CXXFLAGS)
+libsynthesissdk_la_CXXFLAGS = $(PIC_CXXFLAGS)
 libsynthesissdk_la_SOURCES = @LIBSYNTHESISSDK_HEADERS@
 if COND_STATIC
 libsynthesissdk_la_SOURCES += @LIBSYNTHESISSDK_SOURCES_SDK_ONLY@
@@ -128,6 +130,8 @@ libsynthesissdk_la_CPPFLAGS = \
        -I$(srcdir)/syncml_tk/src/sml/mgr/inc/ 
 
 libsynthesisstubs_la_LDFLAGS = -static
+libsynthesisstubs_la_CFLAGS = $(libsynthesissdk_la_CXXFLAGS)
+libsynthesisstubs_la_CXXFLAGS = $(libsynthesissdk_la_CXXFLAGS)
 libsynthesisstubs_la_SOURCES = sysync_SDK/Sources/enginestubs.c
 libsynthesisstubs_la_CPPFLAGS = $(libsynthesissdk_la_CPPFLAGS)
 
index 166abd6..fc43938 100644 (file)
@@ -327,13 +327,15 @@ am__libsynthesissdk_la_SOURCES_DIST = synthesis/SDK_support.h \
 am_libsynthesissdk_la_OBJECTS = $(am__objects_2) $(am__objects_3)
 libsynthesissdk_la_OBJECTS = $(am_libsynthesissdk_la_OBJECTS)
 libsynthesissdk_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-       $(CXXFLAGS) $(libsynthesissdk_la_LDFLAGS) $(LDFLAGS) -o $@
+       $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+       $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) \
+       $(libsynthesissdk_la_LDFLAGS) $(LDFLAGS) -o $@
 libsynthesisstubs_la_LIBADD =
 am_libsynthesisstubs_la_OBJECTS = libsynthesisstubs_la-enginestubs.lo
 libsynthesisstubs_la_OBJECTS = $(am_libsynthesisstubs_la_OBJECTS)
 libsynthesisstubs_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+       $(libsynthesisstubs_la_CFLAGS) $(CFLAGS) \
        $(libsynthesisstubs_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/../../depcomp
@@ -426,6 +428,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PCRE_CFLAGS = @PCRE_CFLAGS@
 PCRE_LIBS = @PCRE_LIBS@
+PIC_CXXFLAGS = @PIC_CXXFLAGS@
 PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
@@ -581,6 +584,8 @@ libsynthesis_la_DEPENDENCIES = $(srcdir)/synthesis-linker.map libsmltk.la
 @COND_XMLPARSE_TRUE@   expat/xmltok/xmltok_impl.h
 
 libsynthesissdk_la_LDFLAGS = -static
+libsynthesissdk_la_CFLAGS = $(PIC_CXXFLAGS)
+libsynthesissdk_la_CXXFLAGS = $(PIC_CXXFLAGS)
 libsynthesissdk_la_SOURCES = synthesis/SDK_support.h \
        synthesis/SDK_util.h synthesis/UI_util.h synthesis/admindata.h \
        synthesis/blobs.h synthesis/dataconversion.h \
@@ -608,6 +613,8 @@ libsynthesissdk_la_CPPFLAGS = \
        -I$(srcdir)/syncml_tk/src/sml/mgr/inc/ 
 
 libsynthesisstubs_la_LDFLAGS = -static
+libsynthesisstubs_la_CFLAGS = $(libsynthesissdk_la_CXXFLAGS)
+libsynthesisstubs_la_CXXFLAGS = $(libsynthesissdk_la_CXXFLAGS)
 libsynthesisstubs_la_SOURCES = sysync_SDK/Sources/enginestubs.c
 libsynthesisstubs_la_CPPFLAGS = $(libsynthesissdk_la_CPPFLAGS)
 
@@ -1079,18 +1086,18 @@ libsynthesis_la-xmltok.lo: expat/xmltok/xmltok.c
 @am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesis_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesis_la_CFLAGS) $(CFLAGS) -c -o libsynthesis_la-xmltok.lo `test -f 'expat/xmltok/xmltok.c' || echo '$(srcdir)/'`expat/xmltok/xmltok.c
 
 libsynthesissdk_la-SDK_util.lo: sysync_SDK/Sources/SDK_util.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsynthesissdk_la-SDK_util.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-SDK_util.Tpo -c -o libsynthesissdk_la-SDK_util.lo `test -f 'sysync_SDK/Sources/SDK_util.c' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_util.c
+@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CFLAGS) $(CFLAGS) -MT libsynthesissdk_la-SDK_util.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-SDK_util.Tpo -c -o libsynthesissdk_la-SDK_util.lo `test -f 'sysync_SDK/Sources/SDK_util.c' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_util.c
 @am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libsynthesissdk_la-SDK_util.Tpo $(DEPDIR)/libsynthesissdk_la-SDK_util.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sysync_SDK/Sources/SDK_util.c' object='libsynthesissdk_la-SDK_util.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsynthesissdk_la-SDK_util.lo `test -f 'sysync_SDK/Sources/SDK_util.c' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_util.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CFLAGS) $(CFLAGS) -c -o libsynthesissdk_la-SDK_util.lo `test -f 'sysync_SDK/Sources/SDK_util.c' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_util.c
 
 libsynthesisstubs_la-enginestubs.lo: sysync_SDK/Sources/enginestubs.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesisstubs_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsynthesisstubs_la-enginestubs.lo -MD -MP -MF $(DEPDIR)/libsynthesisstubs_la-enginestubs.Tpo -c -o libsynthesisstubs_la-enginestubs.lo `test -f 'sysync_SDK/Sources/enginestubs.c' || echo '$(srcdir)/'`sysync_SDK/Sources/enginestubs.c
+@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesisstubs_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesisstubs_la_CFLAGS) $(CFLAGS) -MT libsynthesisstubs_la-enginestubs.lo -MD -MP -MF $(DEPDIR)/libsynthesisstubs_la-enginestubs.Tpo -c -o libsynthesisstubs_la-enginestubs.lo `test -f 'sysync_SDK/Sources/enginestubs.c' || echo '$(srcdir)/'`sysync_SDK/Sources/enginestubs.c
 @am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libsynthesisstubs_la-enginestubs.Tpo $(DEPDIR)/libsynthesisstubs_la-enginestubs.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sysync_SDK/Sources/enginestubs.c' object='libsynthesisstubs_la-enginestubs.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesisstubs_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsynthesisstubs_la-enginestubs.lo `test -f 'sysync_SDK/Sources/enginestubs.c' || echo '$(srcdir)/'`sysync_SDK/Sources/enginestubs.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesisstubs_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesisstubs_la_CFLAGS) $(CFLAGS) -c -o libsynthesisstubs_la-enginestubs.lo `test -f 'sysync_SDK/Sources/enginestubs.c' || echo '$(srcdir)/'`sysync_SDK/Sources/enginestubs.c
 
 .cpp.o:
 @am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1639,95 +1646,95 @@ libsynthesis_la-sysync_utils.lo: sysync_SDK/Sources/sysync_utils.cpp
 @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesis_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesis_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesis_la-sysync_utils.lo `test -f 'sysync_SDK/Sources/sysync_utils.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_utils.cpp
 
 libsynthesissdk_la-UI_util.lo: sysync_SDK/Sources/UI_util.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-UI_util.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-UI_util.Tpo -c -o libsynthesissdk_la-UI_util.lo `test -f 'sysync_SDK/Sources/UI_util.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/UI_util.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-UI_util.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-UI_util.Tpo -c -o libsynthesissdk_la-UI_util.lo `test -f 'sysync_SDK/Sources/UI_util.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/UI_util.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-UI_util.Tpo $(DEPDIR)/libsynthesissdk_la-UI_util.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/UI_util.cpp' object='libsynthesissdk_la-UI_util.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-UI_util.lo `test -f 'sysync_SDK/Sources/UI_util.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/UI_util.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-UI_util.lo `test -f 'sysync_SDK/Sources/UI_util.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/UI_util.cpp
 
 libsynthesissdk_la-enginemodulebridge.lo: sysync_SDK/Sources/enginemodulebridge.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-enginemodulebridge.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-enginemodulebridge.Tpo -c -o libsynthesissdk_la-enginemodulebridge.lo `test -f 'sysync_SDK/Sources/enginemodulebridge.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebridge.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-enginemodulebridge.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-enginemodulebridge.Tpo -c -o libsynthesissdk_la-enginemodulebridge.lo `test -f 'sysync_SDK/Sources/enginemodulebridge.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebridge.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-enginemodulebridge.Tpo $(DEPDIR)/libsynthesissdk_la-enginemodulebridge.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/enginemodulebridge.cpp' object='libsynthesissdk_la-enginemodulebridge.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-enginemodulebridge.lo `test -f 'sysync_SDK/Sources/enginemodulebridge.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebridge.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-enginemodulebridge.lo `test -f 'sysync_SDK/Sources/enginemodulebridge.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebridge.cpp
 
 libsynthesissdk_la-san.lo: sysync_SDK/Sources/san.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-san.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-san.Tpo -c -o libsynthesissdk_la-san.lo `test -f 'sysync_SDK/Sources/san.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/san.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-san.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-san.Tpo -c -o libsynthesissdk_la-san.lo `test -f 'sysync_SDK/Sources/san.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/san.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-san.Tpo $(DEPDIR)/libsynthesissdk_la-san.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/san.cpp' object='libsynthesissdk_la-san.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-san.lo `test -f 'sysync_SDK/Sources/san.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/san.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-san.lo `test -f 'sysync_SDK/Sources/san.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/san.cpp
 
 libsynthesissdk_la-timeutil.lo: sysync_SDK/Sources/timeutil.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-timeutil.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-timeutil.Tpo -c -o libsynthesissdk_la-timeutil.lo `test -f 'sysync_SDK/Sources/timeutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/timeutil.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-timeutil.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-timeutil.Tpo -c -o libsynthesissdk_la-timeutil.lo `test -f 'sysync_SDK/Sources/timeutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/timeutil.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-timeutil.Tpo $(DEPDIR)/libsynthesissdk_la-timeutil.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/timeutil.cpp' object='libsynthesissdk_la-timeutil.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-timeutil.lo `test -f 'sysync_SDK/Sources/timeutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/timeutil.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-timeutil.lo `test -f 'sysync_SDK/Sources/timeutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/timeutil.cpp
 
 libsynthesissdk_la-SDK_support.lo: sysync_SDK/Sources/SDK_support.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-SDK_support.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-SDK_support.Tpo -c -o libsynthesissdk_la-SDK_support.lo `test -f 'sysync_SDK/Sources/SDK_support.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_support.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-SDK_support.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-SDK_support.Tpo -c -o libsynthesissdk_la-SDK_support.lo `test -f 'sysync_SDK/Sources/SDK_support.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_support.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-SDK_support.Tpo $(DEPDIR)/libsynthesissdk_la-SDK_support.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/SDK_support.cpp' object='libsynthesissdk_la-SDK_support.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-SDK_support.lo `test -f 'sysync_SDK/Sources/SDK_support.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_support.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-SDK_support.lo `test -f 'sysync_SDK/Sources/SDK_support.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/SDK_support.cpp
 
 libsynthesissdk_la-blobs.lo: sysync_SDK/Sources/blobs.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-blobs.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-blobs.Tpo -c -o libsynthesissdk_la-blobs.lo `test -f 'sysync_SDK/Sources/blobs.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/blobs.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-blobs.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-blobs.Tpo -c -o libsynthesissdk_la-blobs.lo `test -f 'sysync_SDK/Sources/blobs.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/blobs.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-blobs.Tpo $(DEPDIR)/libsynthesissdk_la-blobs.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/blobs.cpp' object='libsynthesissdk_la-blobs.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-blobs.lo `test -f 'sysync_SDK/Sources/blobs.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/blobs.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-blobs.lo `test -f 'sysync_SDK/Sources/blobs.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/blobs.cpp
 
 libsynthesissdk_la-enginemodulebase.lo: sysync_SDK/Sources/enginemodulebase.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-enginemodulebase.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-enginemodulebase.Tpo -c -o libsynthesissdk_la-enginemodulebase.lo `test -f 'sysync_SDK/Sources/enginemodulebase.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebase.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-enginemodulebase.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-enginemodulebase.Tpo -c -o libsynthesissdk_la-enginemodulebase.lo `test -f 'sysync_SDK/Sources/enginemodulebase.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebase.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-enginemodulebase.Tpo $(DEPDIR)/libsynthesissdk_la-enginemodulebase.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/enginemodulebase.cpp' object='libsynthesissdk_la-enginemodulebase.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-enginemodulebase.lo `test -f 'sysync_SDK/Sources/enginemodulebase.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebase.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-enginemodulebase.lo `test -f 'sysync_SDK/Sources/enginemodulebase.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/enginemodulebase.cpp
 
 libsynthesissdk_la-lineartime.lo: sysync_SDK/Sources/lineartime.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-lineartime.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-lineartime.Tpo -c -o libsynthesissdk_la-lineartime.lo `test -f 'sysync_SDK/Sources/lineartime.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/lineartime.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-lineartime.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-lineartime.Tpo -c -o libsynthesissdk_la-lineartime.lo `test -f 'sysync_SDK/Sources/lineartime.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/lineartime.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-lineartime.Tpo $(DEPDIR)/libsynthesissdk_la-lineartime.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/lineartime.cpp' object='libsynthesissdk_la-lineartime.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-lineartime.lo `test -f 'sysync_SDK/Sources/lineartime.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/lineartime.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-lineartime.lo `test -f 'sysync_SDK/Sources/lineartime.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/lineartime.cpp
 
 libsynthesissdk_la-stringutil.lo: sysync_SDK/Sources/stringutil.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-stringutil.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-stringutil.Tpo -c -o libsynthesissdk_la-stringutil.lo `test -f 'sysync_SDK/Sources/stringutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/stringutil.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-stringutil.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-stringutil.Tpo -c -o libsynthesissdk_la-stringutil.lo `test -f 'sysync_SDK/Sources/stringutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/stringutil.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-stringutil.Tpo $(DEPDIR)/libsynthesissdk_la-stringutil.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/stringutil.cpp' object='libsynthesissdk_la-stringutil.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-stringutil.lo `test -f 'sysync_SDK/Sources/stringutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/stringutil.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-stringutil.lo `test -f 'sysync_SDK/Sources/stringutil.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/stringutil.cpp
 
 libsynthesissdk_la-syncexception.lo: sysync_SDK/Sources/syncexception.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-syncexception.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-syncexception.Tpo -c -o libsynthesissdk_la-syncexception.lo `test -f 'sysync_SDK/Sources/syncexception.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/syncexception.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-syncexception.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-syncexception.Tpo -c -o libsynthesissdk_la-syncexception.lo `test -f 'sysync_SDK/Sources/syncexception.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/syncexception.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-syncexception.Tpo $(DEPDIR)/libsynthesissdk_la-syncexception.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/syncexception.cpp' object='libsynthesissdk_la-syncexception.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-syncexception.lo `test -f 'sysync_SDK/Sources/syncexception.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/syncexception.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-syncexception.lo `test -f 'sysync_SDK/Sources/syncexception.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/syncexception.cpp
 
 libsynthesissdk_la-sysync_b64.lo: sysync_SDK/Sources/sysync_b64.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-sysync_b64.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-sysync_b64.Tpo -c -o libsynthesissdk_la-sysync_b64.lo `test -f 'sysync_SDK/Sources/sysync_b64.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_b64.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-sysync_b64.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-sysync_b64.Tpo -c -o libsynthesissdk_la-sysync_b64.lo `test -f 'sysync_SDK/Sources/sysync_b64.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_b64.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-sysync_b64.Tpo $(DEPDIR)/libsynthesissdk_la-sysync_b64.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/sysync_b64.cpp' object='libsynthesissdk_la-sysync_b64.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-sysync_b64.lo `test -f 'sysync_SDK/Sources/sysync_b64.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_b64.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-sysync_b64.lo `test -f 'sysync_SDK/Sources/sysync_b64.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_b64.cpp
 
 libsynthesissdk_la-sysync_md5.lo: sysync_SDK/Sources/sysync_md5.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-sysync_md5.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-sysync_md5.Tpo -c -o libsynthesissdk_la-sysync_md5.lo `test -f 'sysync_SDK/Sources/sysync_md5.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_md5.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-sysync_md5.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-sysync_md5.Tpo -c -o libsynthesissdk_la-sysync_md5.lo `test -f 'sysync_SDK/Sources/sysync_md5.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_md5.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-sysync_md5.Tpo $(DEPDIR)/libsynthesissdk_la-sysync_md5.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/sysync_md5.cpp' object='libsynthesissdk_la-sysync_md5.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-sysync_md5.lo `test -f 'sysync_SDK/Sources/sysync_md5.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_md5.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-sysync_md5.lo `test -f 'sysync_SDK/Sources/sysync_md5.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_md5.cpp
 
 libsynthesissdk_la-sysync_utils.lo: sysync_SDK/Sources/sysync_utils.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-sysync_utils.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-sysync_utils.Tpo -c -o libsynthesissdk_la-sysync_utils.lo `test -f 'sysync_SDK/Sources/sysync_utils.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_utils.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -MT libsynthesissdk_la-sysync_utils.lo -MD -MP -MF $(DEPDIR)/libsynthesissdk_la-sysync_utils.Tpo -c -o libsynthesissdk_la-sysync_utils.lo `test -f 'sysync_SDK/Sources/sysync_utils.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_utils.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libsynthesissdk_la-sysync_utils.Tpo $(DEPDIR)/libsynthesissdk_la-sysync_utils.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sysync_SDK/Sources/sysync_utils.cpp' object='libsynthesissdk_la-sysync_utils.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-sysync_utils.lo `test -f 'sysync_SDK/Sources/sysync_utils.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_utils.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsynthesissdk_la_CPPFLAGS) $(CPPFLAGS) $(libsynthesissdk_la_CXXFLAGS) $(CXXFLAGS) -c -o libsynthesissdk_la-sysync_utils.lo `test -f 'sysync_SDK/Sources/sysync_utils.cpp' || echo '$(srcdir)/'`sysync_SDK/Sources/sysync_utils.cpp
 
 mostlyclean-libtool:
        -rm -f *.lo
index 4072c0a..7d153e2 100644 (file)
@@ -19,7 +19,7 @@
 
 
 /* - find out target platform */
-#ifdef __MACH__
+#if defined (__MACH__) && defined(__APPLE__)
   #define MACOSX
 #else
   #if defined __MWERKS__ || defined _MSC_VER
index d65f868..386e245 100644 (file)
@@ -191,12 +191,9 @@ void finalizeSystemZoneDefinitions(GZones* aGZones)
       continue;
     PLOGDEBUGPUTSX(aGZones->getDbgLogger, DBG_PARSE+DBG_EXOTIC, vtimezone);
     tz_entry t;
-    string dstName, stdName;
     if (VTIMEZONEtoTZEntry(
        vtimezone,
       t,
-      stdName,
-      dstName,
       #ifdef SYDEBUG
         aGZones->getDbgLogger
       #endif
@@ -212,6 +209,11 @@ void finalizeSystemZoneDefinitions(GZones* aGZones)
           (off = t.name.find('/', 1)) != t.name.npos &&
           (off = t.name.find('/', off + 1)) != t.name.npos) {
         t.location = t.name.substr(off + 1);
+        // also use that simplified location as TZID (shorter,
+        // some (broken) storages like the N900 calendar can only
+        // handle such shortened TZIDs while correct storages
+        // should be able to handle both)
+        t.name = t.location;
       }
       aGZones->tzP.push_back(t);
     }
index 5adc63e..29c326e 100755 (executable)
@@ -60,6 +60,7 @@
 #include "liblock.h"
 #include "wsm.h"
 #include "mgr.h"
+#include <xltenc.h>
 
 
 
@@ -1099,9 +1100,9 @@ static Ret_t freeInstanceInfo(InstanceInfoPtr_t pInfo) {
       smlLibFree(pInfo->workspaceState);
     #endif
     if (pInfo->encoderState)
-      smlLibFree(pInfo->encoderState);
+      xltEncReset((XltEncoderPtr_t)pInfo->encoderState);
     if (pInfo->decoderState)
-      smlLibFree(pInfo->decoderState);
+      xltDecReset((XltDecoderPtr_t)pInfo->decoderState);
     if (pInfo->callbacks)
       smlLibFree(pInfo->callbacks);
 
index c81f0da..6d5f90f 100644 (file)
@@ -1197,6 +1197,9 @@ void TLocalEngineDS::InternalResetDataStore(void)
   fLastSessionMaps.clear();
   #endif
   #ifdef SYSYNC_SERVER
+  PDEBUGPRINTFX(DBG_DATA,(
+    "fTempGUIDMap: removing %ld items", (long)fTempGUIDMap.size()
+  ));
   fTempGUIDMap.clear();
   #endif
 
@@ -1564,6 +1567,12 @@ void TLocalEngineDS::dsLocalIdHasChanged(const char *aOldID, const char *aNewID)
     for (pos=fTempGUIDMap.begin(); pos!=fTempGUIDMap.end(); pos++) {
       if (pos->second == aOldID) {
         // update ID
+        PDEBUGPRINTFX(DBG_DATA,(
+          "fTempGUIDMap: updating mapping of %s from %s to %s",
+          pos->first.c_str(),
+          aOldID,
+          aNewID
+        ));
         pos->second = aNewID;
         break;
       }
@@ -1604,11 +1613,43 @@ void TLocalEngineDS::adjustLocalIDforSize(string &aLocalID, sInt32 maxguidsize,
   if (maxguidsize>0) {
     if (aLocalID.length()+prefixsize>(uInt32)maxguidsize) { //BCPPB needed unsigned cast
       // real GUID is too long, we need to create a temp
+      
+      // first check if there is already a mapping for it,
+      // because on-disk storage can only hold one; also
+      // saves space
+      // TODO: implement this more efficiently than this O(N) search
+      for (TStringToStringMap::const_iterator it = fTempGUIDMap.begin();
+           it != fTempGUIDMap.end();
+           ++it) {
+        if (it->second == aLocalID) {
+          // found an existing mapping!
+          PDEBUGPRINTFX(DBG_ERROR,(
+            "fTempGUIDMap: translated realLocalID='%s' to tempLocalID='%s' (reused?!)",
+            aLocalID.c_str(),
+            it->first.c_str()
+          ));
+          aLocalID = it->first;
+          return;
+        }
+      }
+
       string tempguid;
-      StringObjPrintf(tempguid,"#%ld",(long)fTempGUIDMap.size()+1); // as list only grows, we have unique tempuids for sure
+      long counter = fTempGUIDMap.size(); // as list only grows, we have unique tempuids for sure
+      while (true) {
+        counter++;
+        StringObjPrintf(tempguid,"#%ld",counter);
+        if (fTempGUIDMap.find(tempguid) != fTempGUIDMap.end()) {
+          PDEBUGPRINTFX(DBG_ERROR,(
+            "fTempGUIDMap: '%s' not new?!",
+            tempguid.c_str()
+          ));
+        } else {
+          break;
+        }
+      }
       fTempGUIDMap[tempguid]=aLocalID;
       PDEBUGPRINTFX(DBG_DATA,(
-        "translated realLocalID='%s' to tempLocalID='%s'",
+        "fTempGUIDMap: translated realLocalID='%s' to tempLocalID='%s'",
         aLocalID.c_str(),
         tempguid.c_str()
       ));
@@ -2414,7 +2455,11 @@ TAlertCommand *TLocalEngineDS::engProcessSyncAlert(
     #ifdef SYSYNC_SERVER
     if (IS_SERVER) {
       // server case: forget Temp GUID mapping
-      fTempGUIDMap.clear(); // forget all previous temp GUID mappings
+      // make sure we are not carrying forward any left-overs. Last sessions's tempGUID mappings that are
+      // needed for "early map" resolution might be loaded by the call to engInitSyncAnchors below.
+      // IMPORTANT NOTE: the tempGUIDs that might get loaded will become invalid as soon as <Sync>
+      // starts - so fTempGUIDMap needs to be cleared again as soon as the first <Sync> command arrives from the client.
+      fTempGUIDMap.clear();
     }
     #endif
     // save remote's next anchor for saving at end of session
@@ -3887,7 +3932,9 @@ bool TLocalEngineDS::engProcessSyncCmd(
     startingNow = true; // initiating start now
     #ifdef SYSYNC_SERVER
     if (IS_SERVER) {
-      // - let local datastore (derived DB-specific class) prepare for sync
+      // at this point, all temporary GUIDs become invalid (no "early map" possible any more which might refer to last session's tempGUIDs)
+      fTempGUIDMap.clear(); // forget all previous session's temp GUID mappings
+      // let local datastore (derived DB-specific class) prepare for sync
       localstatus sta = changeState(dssta_dataaccessstarted);
       if (sta!=LOCERR_OK) {
         // abort session (old comment: %%% aborting datastore only does not work, will loop, why? %%%)
index 2cbce65..27fcacb 100644 (file)
@@ -1395,6 +1395,7 @@ bool TMimeDirProfileHandler::fieldToMIMEString(
     case CONVMODE_AUTOENDDATE:
     case CONVMODE_AUTODATE: // show date-only as date in iCal 2.0 (mimo_standard), but always as timestamp for vCal 1.0 (mimo_old)
       if (fMimeDirMode==mimo_standard) goto timestamp; // use autodate if MIME-DIR format is not vCal 1.0 style
+      // for vCal 1.0 style, always renders as timestamp (as date-only values are not allowed there)
     case CONVMODE_TIMESTAMP: // always show as timestamp
       // get explictly as timestamp (even if field or field contents is date)
       autodate = false; // do not show as date, even if it is a date-only
@@ -1711,8 +1712,17 @@ bool TMimeDirProfileHandler::fieldToMIMEString(
       lineartime_t tzend = until;
       // A RRULE with no end extends at least into current time (for tz range update, see below)
       if (until==noLinearTime) {
+        // no end, but we still need a range to generate time zones for
        tzend = getSession()->getSystemNowAs(TCTX_UTC);
       }
+      else {
+        // Treat RR_END similar to CONVMODE_AUTODATE, i.e. prevent rendering a date-only value in mimo_old (which i not correct according to the standard)
+        if (TCTX_IS_DATEONLY(untilcontext) && fMimeDirMode==mimo_old) {
+          // there are no date-only recurrence ends in vCalendar 1.0
+          until = lineartime2dateonlyTime(until)+secondToLinearTimeFactor*SecsPerHour*24-1 ; // make time part 23:5:59.999 of this day
+          untilcontext &= ~TCTX_DATEONLY;
+        }
+      }
       // Now do the conversion
       bool ok;
       if (fMimeDirMode==mimo_old) {
index 2d583fd..f9f6851 100755 (executable)
@@ -703,7 +703,7 @@ sInt16 TMultiFieldItemType::compareItems(
   // just do standard compare
   return aFirstItem.standardCompareWith(aSecondItem,aEqMode,aDebugShow);
   #else
-  // if no script use standard merging
+  // if no script use standard comparison
   sInt16 cmpres;
   string &script = static_cast<TMultiFieldTypeConfig *>(fTypeConfigP)->fCompareScript;
   if (script.empty())
index 36d57c2..715e296 100755 (executable)
@@ -29,7 +29,8 @@ using namespace sysync;
 
 // equality mode names
 const char * const sysync::compareRelevanceNames[numEQmodes] = {
-  "never",    // irrelevant, only for fields with really unimportant data (such as REV)
+  "never",    // irrelevant, only for fields with really unimportant data (such as REV) - note that this also prevents inclusion in CRC change detection
+  "scripted", // relevant, but actual comparison is done in a script - standard compare loop must not check it
   "conflict", // for conflict, all fields that have user data should use at least this
   "slowsync", // for slow sync, all fields that must match for identifying records in slow sync
   "always",   // always relevant, fields that must always match (first-time sync match set)
index 6a30213..682a4ca 100755 (executable)
@@ -32,15 +32,17 @@ namespace sysync {
 // equality relevance / mode
 typedef enum {    // RELEVANCE                        COMPARE MODE
   eqm_none,       // not relevant at all (*)          compares ALL fields, even not-relevant ones
+  eqm_scripted,   // relevant, handled in script      n/a
   eqm_conflict,   // relevant for conflicts only      compares all somehow relevant fields for conflict comparison
   eqm_slowsync,   // relevant for slow sync           compares only fields relevant for slow sync
   eqm_always,     // always relevant (e.g firsttime)  compares only always-relevant fields (first time slowsync)
-  eqm_nocompare   // n/a                              prevent equality test in compareWith totally
+  eqm_nocompare,  // n/a                              prevent equality test in compareWith totally
+  numEQmodes
 } TEqualityMode;
 // (*) Note: eqm_none fields will be silently merged in mergeWith(), that is, if no other
 //     fields are merged, mergeWith will report "nothing merged" even if eqm_none field might
 //     be modified
-const short numEQmodes  = eqm_nocompare-eqm_none+1;
+//     Fields with eqm_none will also not be included in CRC calculations for detecting changes.
 
 extern const char * const compareRelevanceNames[numEQmodes];
 
index 8c92513..f3ff5f3 100644 (file)
@@ -3622,8 +3622,14 @@ localstatus TSyncSession::initSync(
 
   // search for local datastore first
   string cgiOptions;
-  // - search for datastore and obtain possible CGI
-  fLocalSyncDatastoreP = findLocalDataStoreByURI(SessionRelativeURI(aLocalDatastoreURI),&cgiOptions);
+  // - search for datastore and obtain possible CGI;
+  //   fallback to remote datastore URI is for Sony Ericsson C510,
+  //   which sends an empty target (= local) URI (also needs
+  //   to be done in Alert handling)
+  fLocalSyncDatastoreP = findLocalDataStoreByURI(SessionRelativeURI((!aLocalDatastoreURI ||
+                                                                     !aLocalDatastoreURI[0]) ?
+                                                                    aRemoteDatastoreURI :
+                                                                    aLocalDatastoreURI),&cgiOptions);
   if (!fLocalSyncDatastoreP) {
     // no such local datastore
     return 404;
@@ -4790,7 +4796,7 @@ TSmlCommand *TSyncSession::processAlertItem(
     case 204:
     case 205:
     // Sync resume alert
-    case 225:
+    case 225: {
       // Synchronisation initialisation alerts
       // - test if context is ok
       if (fIncomingState!=psta_init && fIncomingState!=psta_initsync) {
@@ -4804,8 +4810,14 @@ TSmlCommand *TSyncSession::processAlertItem(
         return NULL; // no alert sent back
       }
       // find requested database by URI
+      const char *target = smlSrcTargLocURIToCharP(aItemP->target);
+      if (!target || !target[0]) {
+        // same fallback for Sony Ericsson C510 as in
+        // TSyncSession::initSync()
+        target = smlSrcTargLocURIToCharP(aItemP->source);
+      }
       datastoreP = findLocalDataStoreByURI(
-        smlSrcTargLocURIToCharP(aItemP->target), // target as sent from remote
+        target, // target as sent from remote
         &optionsCGI, // options, if any
         &identifyingTargetURI // identifying part of URI (CGI removed)
       );
@@ -4850,6 +4862,7 @@ TSmlCommand *TSyncSession::processAlertItem(
         aStatusCommand.addItem(itemP); // add it to status
       }
       break;
+    }
     case 224 :
       // Suspend alert
       SuspendSession(514);
index d3f30d4..6d16e90 100755 (executable)
@@ -66,7 +66,19 @@ typedef struct tChangeStruct {
 
 class tz_entry {
         public:
-          std::string name;          /**< name, same as TZID in VTIMEZONE, e.g. CET/CEST or /softwarestudio.org/Tzfile/Europe/Berlin */
+          std::string name;          /**< name, same as TZID in
+                                        VTIMEZONE, e.g. CET/CEST or
+                                        /softwarestudio.org/Tzfile/Europe/Berlin;
+                                        see also dst/stdName */
+          std::string stdName;       /**< optional standard time name, e.g. CEST; must be
+                                        set if "name" is not a concatenation of
+                                        standard and daylight name (CET/CEST);
+                                        the vCalendar 1.0 code relies on that */
+          std::string dstName;       /**< used instead of splitting
+                                        "name" if (and only if)
+                                        stdName is set; may be empty
+                                        in zones without daylight
+                                        saving */
           std::string location;      /**< location string as used in Olson TZID, e.g. Europe/Berlin */
           short       bias;          /**< minutes difference to UTC (west negative, east positive */
           short       biasDST;       /**< minutes difference to bias (not UTC!) */
index 67ba156..b4519a6 100644 (file)
@@ -470,8 +470,6 @@ static void MultipleSeq( string aText, int &s, int &d )
 
 bool VTIMEZONEtoTZEntry( const char*    aText, // VTIMEZONE string to be parsed
                          tz_entry      &t,
-                         string        &aStdName,
-                         string        &aDstName,
                          TDebugLogger*  aLogP)
 {
   short dBias; // the full bias for DST
@@ -482,12 +480,14 @@ bool VTIMEZONEtoTZEntry( const char*    aText, // VTIMEZONE string to be parsed
                                  t.dynYear= "CUR";
                                  t.biasDST= 0;
                                  t.bias   = 0;
-  if (!GetTZInfo( aText,VTZ_STD, t.std, t.bias, aStdName, -1, aLogP )) {
+                                 t.stdName =
+                                   t.dstName = "";
+  if (!GetTZInfo( aText,VTZ_STD, t.std, t.bias, t.stdName, -1, aLogP )) {
     success = false;
   }
   // default value if not found (which is treated as success by GetTZInfo)
   dBias= t.bias;
-  if (!GetTZInfo( aText,VTZ_DST, t.dst,  dBias, aDstName, -1, aLogP )) {
+  if (!GetTZInfo( aText,VTZ_DST, t.dst,  dBias, t.dstName, -1, aLogP )) {
     // unknown failure, better restore default
     dBias= t.bias;
     success = false;
@@ -513,25 +513,19 @@ bool VTIMEZONEtoInternal( const char*    aText, // VTIMEZONE string to be parsed
   aContext= tctx_tz_unknown;
 
   tz_entry      t;
-  string        stdName,
-                dstName,
-                lName;
+  string        lName;
   timecontext_t lContext;
 
-  if (!VTIMEZONEtoTZEntry( aText, t, stdName, dstName, aLogP )) {
+  if (!VTIMEZONEtoTZEntry( aText, t, aLogP )) {
     PLOGDEBUGPRINTFX(aLogP, DBG_PARSE+DBG_ERROR, ("parsing VTIMEZONE failed:\n%s", aText));
   }
+  // Telling the caller about the original TZID is necessary because this
+  // code might match that TZID against an existing definition with a different
+  // TZID. Previously it was also necessary when importing the VTIMEZONE, because
+  // the original TZID was overwritten. Now imported definitions retain the
+  // original TZID in t.name.
   if (aTzidP) *aTzidP = t.name; // return the original TZID as found, needed to match with TZID occurences in rest of vCalendar
 
-  bool sC= !(stdName=="");
-  bool dC= !(dstName=="");
-
-  string tName = t.name;
-  if  (sC || dC) tName = ""; // TZID will be replaced in case of unknown
-  if  (sC)       tName+= stdName;
-  if  (sC && dC) tName+= "/";
-  if        (dC) tName+= dstName;
-
   bool ok = true;
   bool okM= true;
   int                 s,d;
@@ -568,19 +562,19 @@ bool VTIMEZONEtoInternal( const char*    aText, // VTIMEZONE string to be parsed
   // redundant here, but there is no other way to
   // add the entry
   string new_name;
-  t.name = tName;
+
   if (!ok) ok= FoundTZ( t, new_name, aContext, g, true );
 
   if  (ok && t.std.wMonth!=0 &&
              t.dst.wMonth!=0) {
     tz_entry std;
-    std.name = stdName;
+    std.name = t.stdName;
     std.ident= "s"; // standard
     std.bias = t.bias;
     FoundTZ( std, lName,lContext, g, true );
 
     tz_entry dst;
-    dst.name = dstName;
+    dst.name = t.dstName;
     dst.ident= "d"; // daylight saving
     dst.bias = t.bias + t.biasDST;
     FoundTZ( dst, lName,lContext, g, true );
@@ -914,17 +908,42 @@ bool ContextToTzDaylight( timecontext_t  aContext,
 
       timecontext_t                           cc= TCTX_UNKNOWN;
       while (FoundTZ( tCopy, s, cc, g, false, cc )) {
-        if (s.find( "/",0 )!=string::npos) { // search for a time zone with slash in it
+        // search for a time zone with slash in it (which is
+        // interpreted as separator between dstName and stdName) *or*
+        // one which has dstName and stdName set explicitly;
+        // prefer explicit names over splitting name
+        tz_entry zone;
+        if (GetTZ( cc, zone, g, -1 ) &&
+            !zone.stdName.empty() &&
+            !zone.dstName.empty()) {
+          s = zone.stdName + ";" + zone.dstName;
+          found= true; break;
+        } else if (s.find( "/",0 )!=string::npos) {
+          // Assumption here is that s contains exactly one slash,
+          // otherwise s is not valid for stdName;dstName in vCalendar
+          // 1.0.
+          StringSubst( s, "/", ";" );
           found= true; break;
         } // if
       } // while
 
       if (!found) {
-        s = t.name; // create a <x>;<x> string
+        string stdName;
+        if (t.stdName.empty()) {
+          stdName = t.name;
+        } else {
+          stdName = t.stdName;
+        }
+        s = stdName; // create a <x>;<x> string
         s+= ";";
-        s+= t.name;
+        s+= stdName;
       } // if
-    } // if
+    } else if (!t.stdName.empty() && !t.dstName.empty()) {
+      // use explicit zone names instead of splitting s
+      s = t.stdName + ";" + t.dstName;
+    } else {
+      StringSubst( s, "/", ";" );
+    }
 
     if (!dDone) dt= DST_Switch( t, t.bias, year, true  ); // get the switch time/date for DST
     if (!sDone) st= DST_Switch( t, t.bias, year, false ); // get the switch time/date for STD
@@ -951,7 +970,7 @@ bool ContextToTzDaylight( timecontext_t  aContext,
   string                 stdStr;
   TimestampToISO8601Str( stdStr, st, TCTX_UTC );
 
-  StringSubst                         ( s, "/", ";" );
+  // s must be of the format stdName;dstName here, for example CET;CEST or PST;PDT
   aText+= dstStr + ";" + stdStr + ";" + s;
 
   return true;
index 5115772..c3707fd 100755 (executable)
@@ -30,8 +30,6 @@ class TDebugLogger;
 
 bool VTIMEZONEtoTZEntry( const char*    aText, // VTIMEZONE string to be parsed
                          tz_entry      &t,
-                         string        &aStdName,
-                         string        &aDstName,
                          TDebugLogger*  aLogP);
 
 /*! Convert VTIMEZONE string into internal context value */
index 50ccfc9..df695fd 100644 (file)
@@ -5,7 +5,6 @@ description = http://www.scheduleworld.org
 === config.ini ===
 syncURL = http://sync.scheduleworld.com/funambol/ds
 WebURL = http://www.scheduleworld.com
-ConsumerReady = TRUE
 
 === sources/addressbook/config.ini ===
 type = addressbook:text/vcard
index b82dee3..0dbb53d 100644 (file)
@@ -3702,7 +3702,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "DTEND:20060406T163000Z\n"
             "DTSTART:20060406T160000Z\n"
             "UID:1234567890!@#$%^&*()<>@dummy\n"
-            // "DTSTAMP:20060406T211449Z\n"
+            "DTSTAMP:20060406T211449Z\n"
             "LAST-MODIFIED:20060409T213201\n"
             "CREATED:20060409T213201\n"
             "LOCATION:my office\n"
@@ -3722,7 +3722,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "DTEND:20060406T163000Z\n"
             "DTSTART:20060406T160000Z\n"
             "UID:1234567890!@#$%^&*()<>@dummy\n"
-            // "DTSTAMP:20060406T211449Z\n"
+            "DTSTAMP:20060406T211449Z\n"
             "LAST-MODIFIED:20060409T213201\n"
             "CREATED:20060409T213201\n"
             "LOCATION:big meeting room\n"
@@ -3743,7 +3743,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "DTEND:20060406T163000Z\n"
             "DTSTART:20060406T160000Z\n"
             "UID:1234567890!@#$%^&*()<>@dummy\n"
-            // "DTSTAMP:20060406T211449Z\n"
+            "DTSTAMP:20060406T211449Z\n"
             "LAST-MODIFIED:20060409T213201\n"
             "CREATED:20060409T213201\n"
             "LOCATION:calling from home\n"
@@ -3769,7 +3769,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "DTEND:20060406T163000Z\n"
             "DTSTART:20060406T160000Z\n"
             "UID:1234567890!@#$%^&*()<>@dummy\n"
-            // "DTSTAMP:20060406T211449Z\n"
+            "DTSTAMP:20060406T211449Z\n"
             "LAST-MODIFIED:20060409T213201\n"
             "CREATED:20060409T213201\n"
             "LOCATION:my office\n"
@@ -3805,7 +3805,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "METHOD:PUBLISH\n"
             "BEGIN:VEVENT\n"
             "UID:20080407T193125Z-19554-727-1-50@gollum\n"
-            // "DTSTAMP:20080407T193125Z\n"
+            "DTSTAMP:20080407T193125Z\n"
             "DTSTART:20080406T090000Z\n"
             "DTEND:20080406T093000Z\n"
             "TRANSP:OPAQUE\n"
@@ -3825,7 +3825,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "METHOD:PUBLISH\n"
             "BEGIN:VEVENT\n"
             "UID:20080407T193125Z-19554-727-1-50@gollum\n"
-            // "DTSTAMP:20080407T193125Z\n"
+            "DTSTAMP:20080407T193125Z\n"
             "DTSTART:20080413T090000Z\n"
             "DTEND:20080413T093000Z\n"
             "TRANSP:OPAQUE\n"
@@ -3854,7 +3854,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "SUMMARY:phone meeting\n"
             "DTEND:20060406T163000Z\n"
             "DTSTART:20060406T160000Z\n"
-            // "DTSTAMP:20060406T211449Z\n"
+            "DTSTAMP:20060406T211449Z\n"
             "LOCATION:my office\n"
             "DESCRIPTION:let's talk<<REVISION>>\n"
             "END:VEVENT\n"
@@ -3866,7 +3866,7 @@ void ClientTest::getTestData(const char *type, Config &config)
             "SUMMARY:meeting on site\n"
             "DTEND:20060406T163000Z\n"
             "DTSTART:20060406T160000Z\n"
-            // "DTSTAMP:20060406T211449Z\n"
+            "DTSTAMP:20060406T211449Z\n"
             "LOCATION:big meeting room\n"
             "DESCRIPTION:nice to see you\n"
             "END:VEVENT\n"
index 87a8caa..a29a3ca 100644 (file)
@@ -58,6 +58,7 @@ http://bugzilla.moblin.org/show_bug.cgi?id=3009
   Client::Sync::text::testOneWayFromClient,                                 \
   Client::Sync::text::Retry,Client::Sync::text::Suspend,                    \
   
+  disable "prevent slow sync"
  
 * Test Profiles Settings
   N/A
index 2165b26..63d5758 100644 (file)
@@ -127,11 +127,13 @@ public:
     void startTest (CppUnit::Test *test) {
         m_currentTest = test->getName();
         std::cerr << m_currentTest;
-        string logfile = m_currentTest + ".log";
-        simplifyFilename(logfile);
-        m_logger.reset(new LoggerStdout(logfile));
-        m_logger->setLevel(Logger::DEBUG);
-        LoggerBase::pushLogger(m_logger.get());
+        if (!getenv("SYNCEVOLUTION_DEBUG")) {
+            string logfile = m_currentTest + ".log";
+            simplifyFilename(logfile);
+            m_logger.reset(new LoggerStdout(logfile));
+            m_logger->setLevel(Logger::DEBUG);
+            LoggerBase::pushLogger(m_logger.get());
+        }
         SE_LOG_DEBUG(NULL, NULL, "*** starting %s ***", m_currentTest.c_str());
         m_failures.reset();
         m_testFailed = false;
@@ -176,7 +178,9 @@ public:
         if (!failure.empty()) {
             SE_LOG_DEBUG(NULL, NULL, "%s", failure.c_str());
         }
-        LoggerBase::popLogger();
+        if (&LoggerBase::instance() == m_logger.get()) {
+            LoggerBase::popLogger();
+        }
         m_logger.reset();
 
         string logfile = m_currentTest + ".log";
@@ -261,6 +265,11 @@ int main(int argc, char* argv[])
   }
   runner.eventManager().addListener(&syncListener);
 
+
+  if (getenv("SYNCEVOLUTION_DEBUG")) {
+      LoggerBase::instance().setLevel(Logger::DEBUG);
+  }
+
   try {
       // Run the tests.
       if (argc <= 1) {
index 99b1100..d2986be 100644 (file)
@@ -233,11 +233,12 @@ sub Normalize {
 
     # VTIMEZONE and TZID do not have to be preserved verbatim as long
     # as the replacement is still representing the same timezone.
-    # Reduce TZIDs which follow the Olson database pseudo-standard
+    # Reduce TZIDs which specify a proper location
     # to their location part and strip the VTIMEZONE - makes the
     # diff shorter, too.
-    s;^BEGIN:VTIMEZONE.*?^TZID:/[^/\n]*/[^/\n]*/(\S+).*^END:VTIMEZONE;BEGIN:VTIMEZONE\nTZID:$1 [...]\nEND:VTIMEZONE;gms;
-    s;TZID=/[^/\n]*/[^/\n]*/(.*)$;TZID=$1;gm;
+    my $location = "[^\n]*((?:Africa|America|Antarctica|Arctic|Asia|Atlantic|Australia|Brazil|Canada|Chile|Egypt|Eire|Europe|Hongkong|Iceland|India|Iran|Israel|Jamaica|Japan|Kwajalein|Libya|Mexico|Mideast|Navajo|Pacific|Poland|Portugal|Singapore|Turkey|Zulu)[-a-zA-Z0-9_/]*)";
+    s;^BEGIN:VTIMEZONE.*?^TZID:$location.*^END:VTIMEZONE;BEGIN:VTIMEZONE\n  TZID:$1 [...]\nEND:VTIMEZONE;gms;
+    s;TZID=$location;TZID=$1;gm;
 
     # normalize iCalendar 2.0
     if (/^BEGIN:(VEVENT|VTODO|VJOURNAL)$/m) {
@@ -623,8 +624,10 @@ if($#ARGV > 1) {
       } else {
           open(IN2, "<:utf8", $file2) || die "$file2: $!";
       }
-      @normal1 = Normalize(join("", <IN1>), $singlewidth);
-      @normal2 = Normalize(join("", <IN2>), $singlewidth);
+      my $buf1 = join("", <IN1>);
+      my $buf2 = join("", <IN2>);
+      @normal1 = Normalize($buf1, $singlewidth);
+      @normal2 = Normalize($buf2, $singlewidth);
       close(IN1);
       close(IN2);
   }
@@ -758,11 +761,17 @@ if($#ARGV > 1) {
   # normalize
   my $in;
   if( $#ARGV >= 0 ) {
-    open(IN, "<$ARGV[0]") || die "$ARGV[0]: $!";
+    my $file1 = $ARGV[0];
+    if (-d $file1) {
+        open(IN, "-|:utf8", "find $file1 -type f -print0 | xargs -0 cat") || die "$file1: $!";
+    } else {
+        open(IN, "<:utf8", $file1) || die "$file1: $!";
+    }
     $in = *IN{IO};
   } else {
     $in = *STDIN{IO};
   }
 
-  print STDOUT join("\n", Normalize(join("", <$in>), $columns)), "\n";
+  my $buf = join("", <$in>);
+  print STDOUT join("\n", Normalize($buf, $columns)), "\n";
 }