Imported Upstream version 1.1 upstream/1.1
authorPatrick Ohly <patrick.ohly@intel.com>
Fri, 28 Jun 2013 11:41:17 +0000 (11:41 +0000)
committerPatrick Ohly <patrick.ohly@intel.com>
Fri, 28 Jun 2013 11:41:17 +0000 (11:41 +0000)
21 files changed:
ChangeLog
NEWS
README
README.html
README.rst
configure
configure-post.in
configure-pre.in
configure.in
src/backends/kcalextended/KCalExtendedSource.cpp
src/backends/kcalextended/KCalExtendedSourceRegister.cpp
src/backends/qtcontacts/configure-sub.in
src/syncevo-dbus-server.cpp
src/syncevo/Cmdline.cpp
src/syncevo/SmartPtr.h
src/syncevo/SoupTransportAgent.cpp
src/syncevo/SyncSource.h
src/syncevo/readme2c.pl
src/synthesis/ChangeLog
src/synthesis/src/sysync/itemfield.cpp
test/ClientTest.cpp

index 0ae4058..43386b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,127 @@
 # Generated by configure.  Do no edit.
 
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * NEWS:
+       * configure-pre.in:
+
+       NEWS, configure: SyncEvolution 1.1
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/sys.supp:
+
+       nightly testing: ignore valgrind report in libsynthesis
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/evo.supp:
+
+       nightly testing: relaxed leak checking for ecal/ebook (BMC #1007)
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+
+       KCalExtended: workaround for importing custom time zones
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+
+       KCalExtended: avoid partial loading to work around issues with it
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+
+       KCalExtended: ignore request to remove non-existant event
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSourceRegister.cpp:
+
+       KCalExtended: disable unsupported linked item tests
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/SyncSource.h:
+       * test/ClientTest.cpp:
+
+       client-test: replaced compile-time LINKED_ITEMS_RELAXED_SEMANTIC
+       with ClientTestConfig::linkedItemsRelaxedSemantic
+
+2010-10-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * README.rst:
+       * src/syncevo/Cmdline.cpp:
+       * src/syncevo/readme2c.pl:
+
+       command line: --delete-items ... * deletes all items
+
+2010-10-20  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo-dbus-server.cpp:
+
+       syncevo-dbus-server: incorrect Presence status after config
+       change (BMC #8453)
+
+2010-10-19  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/SmartPtr.h:
+       * src/syncevo/SoupTransportAgent.cpp:
+
+       fixed compiler warnings
+
+2010-10-19  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSourceRegister.cpp:
+
+       KCalExtended: updated mkcal backend description
+
+2010-10-19  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+
+       KCalExtended: fixed compiler warning
+
+2010-10-19  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+
+       KCalExtended: do not use Tracker for custom database file
+
+2010-09-28  Qiankun Miao  <qiankun.miao@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+       * src/backends/kcalextended/KCalExtendedSourceRegister.cpp:
+
+       KCalExtended: select notebook (BMC #6898)
+
+2010-10-04  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/kcalextended/KCalExtendedSource.cpp:
+
+       KCalExtended: comment clarification for created()/CREATED
+
+2010-10-01  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * NEWS:
+
+       NEWS: fixed bug numbers, added BMC #7091
+
+2010-10-01  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/qtcontacts/configure-sub.in:
+
+       autotools: fixed QtContacts compilation
+
+2010-10-01  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * configure-post.in:
+
+       autotools: added missing quotation marks
+
 2010-09-30  Patrick Ohly  <patrick.ohly@intel.com>
 
        * NEWS:
diff --git a/NEWS b/NEWS
index 3a5ae4e..1356778 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,18 +1,23 @@
-SyncEvolution 1.0.1 -> 1.1, xxxxxxxxxx
+SyncEvolution 1.0.1 -> 1.1, 26.10.2010
 ======================================
 
 An incremental update, resolving issues where the fixes would have
 been too intrusive for a 1.0.x release. In particular compatibility
-with Nokia phones was improved. Some new features were also included.
+with Nokia phones was improved. Some new features were also included
+(command line options for manipulating items, backends for MeeGo PIM
+storages).
 
 Details:
 
-* Nokia phones: avoid data loss in two-way sync due to X-EVOLUTION-UI-SLOT (MBC #2566)
+* bug fix in sync-ui: wrong direction of one-way data transfers with devices (BMC #7091)
+* bug fix in syncevo-dbus-server: incorrect Presence status after config change (BMC #8453)
+  Shows up in sync-ui as "'Sync Now' button active after creating a config while offline".
+* sync-ui (GTK version): app is now listed as "SyncEvolution (GTK)" under "Office"
+* Nokia phones: avoid data loss in two-way sync due to X-EVOLUTION-UI-SLOT (BMC #2566)
 * Nokia phones: alarm times in UTC, sending PHOTO (BMC #1657, #5860)
 * included all phone templates submitted to syncevolution.org Wiki (BMC #5727)
 * syncevo-phone-config: set consumerReady in output, more useful for Wiki (BMC #3803)
-* workaround for D-Bus timeouts in EDS libecal/libebook (MBC #4026)
-* sync-ui (GTK version): app is now listed as "SyncEvolution (GTK)" under "Office"
+* workaround for D-Bus timeouts in EDS libecal/libebook (BMC #4026)
 * added generic command line options for importing, exporting, updating, listing
   and deleting items in the different backends (http://syncevolution.org/blogs/pohly/2010/manipulate-evolution-kcalextendedmkcal-qtcontacts-pim-items-uniform-command-line)
 * added backends for mKCal and QtContacts (MeeGo PIM storage),
@@ -22,7 +27,7 @@ Details:
 * creating and configuring sources in a context (without peer-specific
   properties) is now supported
 * improved documentation: README.rst, man page, and --help output
-* fixed some compile issues (MBC #6367), improved nightly testing
+* fixed some compile issues (BMC #6367), improved nightly testing
 
 
 SyncEvolution 1.0 -> 1.0.1, 16.07.2010
@@ -37,7 +42,7 @@ Details:
 
 * compile fix for FC 13 (and possibly others): use private copy of gdbus (BMC #3556)
 
-* sync-ui: prevent overwriting device configs by accident (MBC #3566,1194)
+* sync-ui: prevent overwriting device configs by accident (BMC #3566,1194)
   Setting up a phone used the template name as config name and overwrote
   an existing configuration of another phone that was created using that
   same template. Now the code uses the Bluetooth device name as set on the
@@ -111,7 +116,7 @@ SyncML servers:
   properties before importing them (MB #10458)
 * desknow.com works when switching to SyncMLVersion = 1.1
 * Funambol, Memotoo (and probably others): preserve meeting series when
-  receiving update for detached recurrence (MBC #1916)
+  receiving update for detached recurrence (BMC #1916)
 
 Evolution:
 * addressbook backend: avoid picking CouchDB, second try (MB #7877)
@@ -131,7 +136,7 @@ Performance and reliability improvements (MB #7708):
 * message resending helps under unreliable network connectivity ("RetryInterval")
 * full support for suspend&resume in SyncEvolution client to SyncEvolution or
   Synthesis server syncs
-* better handling of certain third-party time zone definitions (MBC #1332)
+* better handling of certain third-party time zone definitions (BMC #1332)
 
 Improved GTK sync-UI:
 * revised config screen: all in one list where entries can be expanded,
@@ -153,7 +158,7 @@ Command line:
   operations done by other clients; for testing purposes (like
   running a client which talks to a local server in the daemon) it is
   still possible to ignore the daemon (--daemon=no, MB #5043)
-* revised README, now also available as man page (MBC #690)
+* revised README, now also available as man page (BMC #690)
 
 Redesigned and reimplemented D-Bus API, used by sync-UI and command line:
 * central syncevo-dbus-server controls configurations and sync sessions:
@@ -208,34 +213,34 @@ SyncEvolution 1.0 beta 3 -> 1.0 final, 11.06.2010
 
 Bug fixes and new features:
 
-* Configuration templates are stored in a single file (MBC #1208).
+* Configuration templates are stored in a single file (BMC #1208).
   New templates (like something downloaded from http://syncevolution.org/wiki)
   can be dropped into $HOME/.config/syncevolution-templates using an arbitrary
   file name.
 * Progress and per-source status are now also reported and recorded when
-  running in server mode (MBC #1359). There are still several limitations
+  running in server mode (BMC #1359). There are still several limitations
   (sync mode not reported, no information about sent/received/processed items
-  while the sync runs, see MBC #2786).
-* Better handling of certain third-party time zone definitions (MBC #1332).
+  while the sync runs, see BMC #2786).
+* Better handling of certain third-party time zone definitions (BMC #1332).
   Better logging to track down such problems.
-* D-Bus server + command line: return error code when failed (MBC #2193)
+* D-Bus server + command line: return error code when failed (BMC #2193)
 * syncevo-phone-config: simplified command line options, several bug fixes
-  (syntax error, incorrect handling of calendar+todo, MBC #1197)
-* Revised README, now also available as man page (MBC #690). Conversion of D-Bus API
-  documentation into .html page (MBC #1745).
+  (syntax error, incorrect handling of calendar+todo, BMC #1197)
+* Revised README, now also available as man page (BMC #690). Conversion of D-Bus API
+  documentation into .html page (BMC #1745).
 * Funambol, Memotoo (and probably others): preserve meeting series when
-  receiving update for detached recurrence (MBC #1916)
-* Fix for potential out-of-bounds memory access (MBC #1007).
+  receiving update for detached recurrence (BMC #1916)
+* Fix for potential out-of-bounds memory access (BMC #1007).
 * HTTP server: fix for potential crash when second session was requested while an
   older one was still running, initial sync was done without libical time zone
-  information and thus may have mismatched times (MBC #2435)
-* Nokia E55: convert alarm times (MBC #1657). This is done via a new remote rule
+  information and thus may have mismatched times (BMC #2435)
+* Nokia E55: convert alarm times (BMC #1657). This is done via a new remote rule
   in /usr/share/syncevolution/xml/remoterules/server/46_E55.xml
   If another phone needs the same treatment, then copy that file to
   ~/.config/syncevolution-xml/remoterules/server and edit the <model> element.
-* GTK GUI: styling fix (MBC #1372), updated toolbar for MeeGo 1.0 (MBC #1970),
+* GTK GUI: styling fix (BMC #1372), updated toolbar for MeeGo 1.0 (BMC #1970),
   avoid duplicating configs when selecting a config created by syncevo-phone-config 
-  or the command line (MBC #1266), scroll bars for emergency window (MBC #1296),
+  or the command line (BMC #1266), scroll bars for emergency window (BMC #1296),
   avoid compile problem on Fedora Core 13 due to name collision with system sync()
   call, updated translations.
 
diff --git a/README b/README
index 94c8bc0..eac11d8 100644 (file)
--- a/README
+++ b/README
@@ -7,8 +7,8 @@ synchronize personal information management data
 ------------------------------------------------
 
 :Manual section: 1
-:Version: 1.0.99.7
-:Date: 2010-09-30
+:Version: 1.1
+:Date: 2010-10-26
 
 SYNOPSIS
 ========
@@ -55,7 +55,7 @@ Update item(s)
   syncevolution [--delimiter <string>|none] --update <file>|- <config> <source> <luid> ...
 
 Remove item(s):
-  syncevolution --delete-items <config> <source> <luid> ...
+  syncevolution --delete-items <config> <source> (<luid> ... | \*)
 
 DESCRIPTION
 ===========
@@ -244,13 +244,14 @@ refresh-from-client" in the next run. ::
   syncevolution [--delimiter <string>|none] --import <dir>|<file>|- <config> <source>
   syncevolution --update <dir> <config> <source>
   syncevolution [--delimiter <string>|none] --update <file>|- <config> <source> <luid> ...
-  syncevolution --delete-items <config> <source> <luid> ...
+  syncevolution --delete-items <config> <source> (<luid> ... | *)
 
 Restore depends on the specific format of the automatic backups
 created by SyncEvolution. Arbitrary access to item data is provided
 with additional options. <luid> here is the unique local identifier
 assigned to each item in the source, transformed so that it contains
-only alphanumeric characters, dash and underscore.
+only alphanumeric characters, dash and underscore. A star * in
+--delete-items selects all items for deletion.
 
 <config> and <source> must be given, but they do not have to refer to
 existing configurations. In that case, the desired backend and must be
@@ -376,7 +377,8 @@ a list of valid values.
   typically leads to an ERROR message, but is not reflected in a
   non-zero result of the command line invocation itself because the
   situation is not reported as an error by backends (removal of
-  non-existent items is not an error in SyncML).
+  non-existent items is not an error in SyncML). Use a star \* instead
+  or in addition to listing individual luids to delete all items.
 
 --sync-property|-y <property>=<value>|<property>=?|?
   Overrides a source-independent configuration property for the
index d5af46c..ae6a94b 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-09-30" />
+<meta name="date" content="2010-10-26" />
 <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.0.99.7</td></tr>
+<td>1.1</td></tr>
 <tr><th class="docinfo-name">Date:</th>
-<td>2010-09-30</td></tr>
+<td>2010-10-26</td></tr>
 </tbody>
 </table>
 <div class="section" id="synopsis">
@@ -352,7 +352,7 @@ syncevolution --remove|--migrate &lt;options&gt; &lt;config&gt;</dd>
 <dd>syncevolution --update &lt;dir&gt; &lt;config&gt; &lt;source&gt;
 syncevolution [--delimiter &lt;string&gt;|none] --update &lt;file&gt;|- &lt;config&gt; &lt;source&gt; &lt;luid&gt; ...</dd>
 <dt>Remove item(s):</dt>
-<dd>syncevolution --delete-items &lt;config&gt; &lt;source&gt; &lt;luid&gt; ...</dd>
+<dd>syncevolution --delete-items &lt;config&gt; &lt;source&gt; (&lt;luid&gt; ... | *)</dd>
 </dl>
 </div>
 <div class="section" id="description">
@@ -526,13 +526,14 @@ syncevolution [--delimiter &lt;string&gt;] --export &lt;dir&gt;|&lt;file&gt;|- &
 syncevolution [--delimiter &lt;string&gt;|none] --import &lt;dir&gt;|&lt;file&gt;|- &lt;config&gt; &lt;source&gt;
 syncevolution --update &lt;dir&gt; &lt;config&gt; &lt;source&gt;
 syncevolution [--delimiter &lt;string&gt;|none] --update &lt;file&gt;|- &lt;config&gt; &lt;source&gt; &lt;luid&gt; ...
-syncevolution --delete-items &lt;config&gt; &lt;source&gt; &lt;luid&gt; ...
+syncevolution --delete-items &lt;config&gt; &lt;source&gt; (&lt;luid&gt; ... | *)
 </pre>
 <p>Restore depends on the specific format of the automatic backups
 created by SyncEvolution. Arbitrary access to item data is provided
 with additional options. &lt;luid&gt; here is the unique local identifier
 assigned to each item in the source, transformed so that it contains
-only alphanumeric characters, dash and underscore.</p>
+only alphanumeric characters, dash and underscore. A star * in
+--delete-items selects all items for deletion.</p>
 <p>&lt;config&gt; and &lt;source&gt; must be given, but they do not have to refer to
 existing configurations. In that case, the desired backend and must be
 give via &quot;--source-property type=&lt;backend&gt;&quot;, like this:</p>
@@ -643,7 +644,8 @@ output is produced. Trying to remove an item which does not exist
 typically leads to an ERROR message, but is not reflected in a
 non-zero result of the command line invocation itself because the
 situation is not reported as an error by backends (removal of
-non-existent items is not an error in SyncML).</dd>
+non-existent items is not an error in SyncML). Use a star * instead
+or in addition to listing individual luids to delete all items.</dd>
 <dt>--sync-property|-y &lt;property&gt;=&lt;value&gt;|&lt;property&gt;=?|?</dt>
 <dd><p class="first">Overrides a source-independent configuration property for the
 current synchronization run or permanently when --configure is used
index 4df99a2..8105e90 100644 (file)
@@ -55,7 +55,7 @@ Update item(s)
   syncevolution [--delimiter <string>|none] --update <file>|- <config> <source> <luid> ...
 
 Remove item(s):
-  syncevolution --delete-items <config> <source> <luid> ...
+  syncevolution --delete-items <config> <source> (<luid> ... | \*)
 
 DESCRIPTION
 ===========
@@ -244,13 +244,14 @@ refresh-from-client" in the next run. ::
   syncevolution [--delimiter <string>|none] --import <dir>|<file>|- <config> <source>
   syncevolution --update <dir> <config> <source>
   syncevolution [--delimiter <string>|none] --update <file>|- <config> <source> <luid> ...
-  syncevolution --delete-items <config> <source> <luid> ...
+  syncevolution --delete-items <config> <source> (<luid> ... | *)
 
 Restore depends on the specific format of the automatic backups
 created by SyncEvolution. Arbitrary access to item data is provided
 with additional options. <luid> here is the unique local identifier
 assigned to each item in the source, transformed so that it contains
-only alphanumeric characters, dash and underscore.
+only alphanumeric characters, dash and underscore. A star * in
+--delete-items selects all items for deletion.
 
 <config> and <source> must be given, but they do not have to refer to
 existing configurations. In that case, the desired backend and must be
@@ -376,7 +377,8 @@ a list of valid values.
   typically leads to an ERROR message, but is not reflected in a
   non-zero result of the command line invocation itself because the
   situation is not reported as an error by backends (removal of
-  non-existent items is not an error in SyncML).
+  non-existent items is not an error in SyncML). Use a star \* instead
+  or in addition to listing individual luids to delete all items.
 
 --sync-property|-y <property>=<value>|<property>=?|?
   Overrides a source-independent configuration property for the
index 53eea52..8910bb8 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.0.99.7.
+# Generated by GNU Autoconf 2.61 for syncevolution 1.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.0.99.7'
-PACKAGE_STRING='syncevolution 1.0.99.7'
+PACKAGE_VERSION='1.1'
+PACKAGE_STRING='syncevolution 1.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.0.99.7 to adapt to many kinds of systems.
+\`configure' configures syncevolution 1.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.0.99.7:";;
+     short | recursive ) echo "Configuration of syncevolution 1.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.0.99.7
+syncevolution configure 1.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.0.99.7, which was
+It was created by syncevolution $as_me 1.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.0.99.7'
+ VERSION='1.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11846,6 +11846,7 @@ _ACEOF
 
         # AC_WITH_QT() will be called in configure-post if need_qt_modules is not empty,
         # setting QT_* flags.
+        need_qt_modules="$need_qt_modules +gui" # GUI needed for QVersit
         qt_config="$qt_config +mobility"
         qt_misc="$qt_misc
 MOBILITY += contacts versit"
@@ -13145,7 +13146,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 13148 "configure"' > conftest.$ac_ext
+  echo '#line 13149 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -15250,11 +15251,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:15253: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15254: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15257: \$? = $ac_status" >&5
+   echo "$as_me:15258: \$? = $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.
@@ -15540,11 +15541,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:15543: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15544: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15547: \$? = $ac_status" >&5
+   echo "$as_me:15548: \$? = $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.
@@ -15644,11 +15645,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:15647: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15648: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15651: \$? = $ac_status" >&5
+   echo "$as_me:15652: \$? = $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
@@ -18021,7 +18022,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 18024 "configure"
+#line 18025 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -18121,7 +18122,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 18124 "configure"
+#line 18125 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -20522,11 +20523,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:20525: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:20526: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:20529: \$? = $ac_status" >&5
+   echo "$as_me:20530: \$? = $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.
@@ -20626,11 +20627,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:20629: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:20630: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:20633: \$? = $ac_status" >&5
+   echo "$as_me:20634: \$? = $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
@@ -22224,11 +22225,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:22227: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:22228: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:22231: \$? = $ac_status" >&5
+   echo "$as_me:22232: \$? = $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.
@@ -22328,11 +22329,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:22331: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:22332: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:22335: \$? = $ac_status" >&5
+   echo "$as_me:22336: \$? = $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
@@ -24548,11 +24549,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:24551: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:24552: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:24555: \$? = $ac_status" >&5
+   echo "$as_me:24556: \$? = $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.
@@ -24838,11 +24839,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:24841: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:24842: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:24845: \$? = $ac_status" >&5
+   echo "$as_me:24846: \$? = $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.
@@ -24942,11 +24943,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:24945: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:24946: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:24949: \$? = $ac_status" >&5
+   echo "$as_me:24950: \$? = $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
@@ -28960,7 +28961,7 @@ else
                fi
 fi
 
-if test $enable_dbus_timeout_hack = "yes"; then
+if test "$enable_dbus_timeout_hack" = "yes"; then
 
 cat >>confdefs.h <<\_ACEOF
 #define ENABLE_DBUS_TIMEOUT_HACK 1
@@ -29496,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.0.99.7, which was
+This file was extended by syncevolution $as_me 1.1, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -29549,7 +29550,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-syncevolution config.status 1.0.99.7
+syncevolution config.status 1.1
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
index 2f805f7..5452639 100644 (file)
@@ -136,7 +136,7 @@ AC_ARG_ENABLE(dbus-timeout-hack,
               [if test $enable_ebook = "yes" || test $enable_ecal = "yes"; then
                   enable_dbus_timeout_hack="yes"
                fi])
-if test $enable_dbus_timeout_hack = "yes"; then
+if test "$enable_dbus_timeout_hack" = "yes"; then
    AC_DEFINE(ENABLE_DBUS_TIMEOUT_HACK, 1, [overrides the default D-Bus timeout so that synchronous calls never time out])
 fi
 
index 0cbdd3d..777fb9c 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.0.99.7])
+AC_INIT([syncevolution], [1.1])
 # STABLE_VERSION=1.0.1+
 AC_SUBST(STABLE_VERSION)
 
index f367c83..85e5411 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.0.99.7])
+AC_INIT([syncevolution], [1.1])
 # STABLE_VERSION=1.0.1+
 AC_SUBST(STABLE_VERSION)
 
@@ -937,6 +937,7 @@ if test "$enable_qtcontacts" = "yes"; then
         AC_DEFINE(ENABLE_QTCONTACTS, 1, [QtContacts available])
         # AC_WITH_QT() will be called in configure-post if need_qt_modules is not empty,
         # setting QT_* flags.
+        need_qt_modules="$need_qt_modules +gui" # GUI needed for QVersit
         qt_config="$qt_config +mobility"
         qt_misc="$qt_misc
 MOBILITY += contacts versit"
@@ -1155,7 +1156,7 @@ AC_ARG_ENABLE(dbus-timeout-hack,
               [if test $enable_ebook = "yes" || test $enable_ecal = "yes"; then
                   enable_dbus_timeout_hack="yes"
                fi])
-if test $enable_dbus_timeout_hack = "yes"; then
+if test "$enable_dbus_timeout_hack" = "yes"; then
    AC_DEFINE(ENABLE_DBUS_TIMEOUT_HACK, 1, [overrides the default D-Bus timeout so that synchronous calls never time out])
 fi
 
index 066bc94..d26f64a 100644 (file)
@@ -30,6 +30,7 @@
 #include <journal.h>
 #include <extendedcalendar.h>
 #include <extendedstorage.h>
+#include <sqlitestorage.h>
 #include <icalformat.h>
 #include <memorycalendar.h>
 
@@ -150,9 +151,9 @@ KCalCore::Incidence::Ptr KCalExtendedData::findIncidence(const string &luid)
     ItemID id(luid);
     QString uid = id.getIDString();
     KDateTime rid = id.getDateTime();
-    if (!m_storage->load(uid, rid)) {
-        m_parent->throwError(string("failed to load incidence ") + luid);
-    }
+    // if (!m_storage->load(uid, rid)) {
+    // m_parent->throwError(string("failed to load incidence ") + luid);
+    // }
     KCalCore::Incidence::Ptr incidence = m_calendar->incidence(uid, rid);
     return incidence;
 }
@@ -200,16 +201,65 @@ void KCalExtendedSource::open()
     m_data = new KCalExtendedData(this, getDatabaseID(),
                                   KCalCore::IncidenceBase::TypeEvent);
     m_data->m_calendar = mKCal::ExtendedCalendar::Ptr(new mKCal::ExtendedCalendar(KDateTime::Spec::LocalZone()));
-    m_data->m_storage = mKCal::ExtendedCalendar::defaultStorage(m_data->m_calendar);
 
-    if (!m_data->m_storage->open()) {
-        throwError("failed to open storage");
-    }
-    mKCal::Notebook::Ptr defaultNotebook = m_data->m_storage->defaultNotebook();
-    if (!defaultNotebook) {
-        throwError("no default Notebook");
+    // read specified database name from evolutionsource property
+    const char *databaseID = getDatabaseID();
+
+    if ( strcmp(databaseID, "" ) == 0 || boost::starts_with(databaseID, "file://") ) {
+        // if databaseID is empty, create default storage at default location
+        // else if databaseID has a "file://" prefix, create storage at the specified place
+        // use default notebook in default storage
+        if ( boost::starts_with(databaseID, "file://") ) {
+            mKCal::SqliteStorage::Ptr ss(new mKCal::SqliteStorage(m_data->m_calendar, QString(databaseID + 7), false));
+            m_data->m_storage = ss.staticCast<mKCal::ExtendedStorage>();
+        } else {
+            m_data->m_storage = mKCal::ExtendedCalendar::defaultStorage(m_data->m_calendar);
+        }
+        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");
+        }
+        m_data->m_notebookUID = defaultNotebook->uid();
+    } else {
+        // use databaseID as notebook name to search for an existing notebook
+        // if found use it, otherwise:
+        // 1) with "SyncEvolution_Test_" prefix, create a new notebook with given name and add it to default storage
+        // 2) without a special prefix, throw an error
+        m_data->m_storage = mKCal::ExtendedCalendar::defaultStorage(m_data->m_calendar);
+        if (!m_data->m_storage->open()) {
+            throwError("failed to open storage");
+        }
+        QString name = databaseID;
+        mKCal::Notebook::Ptr notebook;
+        mKCal::Notebook::List notebookList = m_data->m_storage->notebooks();
+        mKCal::Notebook::List::Iterator it;
+
+        for ( it = notebookList.begin(); it != notebookList.end(); ++it ) {
+            if ( name == (*it)->name() ) {
+                break;
+            }
+        }
+        if ( it == notebookList.end() ) {
+            if ( boost::starts_with(databaseID, "SyncEvolution_Test_") ) {
+                notebook = mKCal::Notebook::Ptr ( new mKCal::Notebook(QString(), name, QString(), QString(), false, true, false, false,true) );
+                if ( !notebook ) {
+                    throwError("failed to create notebook");
+                }
+                m_data->m_storage->addNotebook(notebook, false);
+            } else {
+                throwError(string("no such notebook with name \"") + string(databaseID) + string("\" in default storage"));
+            }
+        } else {
+            notebook = *it;
+        }
+        m_data->m_notebookUID = notebook->uid();
     }
-    m_data->m_notebookUID = defaultNotebook->uid();
 }
 
 bool KCalExtendedSource::isEmpty()
@@ -242,8 +292,23 @@ KCalExtendedSource::Databases KCalExtendedSource::getDatabases()
 {
     Databases result;
 
-    result.push_back(Database("select database via Notebook name",
-                              ""));
+    m_data = new KCalExtendedData(this, getDatabaseID(),
+                                  KCalCore::IncidenceBase::TypeEvent);
+    m_data->m_calendar = mKCal::ExtendedCalendar::Ptr(new mKCal::ExtendedCalendar(KDateTime::Spec::LocalZone()));
+    m_data->m_storage = mKCal::ExtendedCalendar::defaultStorage(m_data->m_calendar);
+    if (!m_data->m_storage->open()) {
+        throwError("failed to open storage");
+    }
+    mKCal::Notebook::List notebookList = m_data->m_storage->notebooks();
+    mKCal::Notebook::List::Iterator it;
+    for ( it = notebookList.begin(); it != notebookList.end(); ++it ) {
+        bool isDefault = (*it)->isDefault();
+        result.push_back(Database( (*it)->name().toStdString(), 
+                                   (m_data->m_storage).staticCast<mKCal::SqliteStorage>()->databaseName().toStdString(), 
+                                   isDefault));
+    }
+    m_data->m_storage->close();
+    m_data->m_calendar->close();
     return result;
 }
 
@@ -334,7 +399,7 @@ TestingSyncSource::InsertItemResult KCalExtendedSource::insertItem(const string
         QString id = incidences[0]->uid();
         KDateTime rid = incidences[0]->recurrenceId();
         if (!id.isEmpty()) {
-            m_data->m_storage->load(id, rid);
+            // m_data->m_storage->load(id, rid);
             KCalCore::Incidence::Ptr incidence = m_data->m_calendar->incidence(id, rid);
             if (incidence) {
                 oldUID = m_data->getItemID(incidence).getLUID();
@@ -342,6 +407,19 @@ TestingSyncSource::InsertItemResult KCalExtendedSource::insertItem(const string
         }
     }
 
+    // Brute-force copying of all time zone definitions. Ignores name
+    // conflicts, which is something better handled in a generic mKCal
+    // API function (BMC #8604).
+    KCalCore::ICalTimeZones *source = calendar->timeZones();
+    if (source) {
+        KCalCore::ICalTimeZones *target = m_data->m_calendar->timeZones();
+        if (target) {
+            BOOST_FOREACH(const KCalCore::ICalTimeZone &zone, source->zones().values()) {
+                target->add(zone);
+            }
+        }
+    }
+
     if (oldUID.empty()) {
         KCalCore::Incidence::Ptr incidence = incidences[0];
 
@@ -370,15 +448,11 @@ TestingSyncSource::InsertItemResult KCalExtendedSource::insertItem(const string
             incidence->setRecurrenceId(original->recurrenceId());
         }
 
-        // also preserve original creation time, unless explicitly
-        // set in update
-        // TODO: if created() == CREATED, then preserving it
-        // unconditionally is right. If created() == DTSTAMP,
-        // then it has to be conditionally.
-        // TODO: handle both DTSTAMP and CREATED
-        if (true || !incidence->created().isValid()) {
-            incidence->setCreated(original->created());
-        }
+        // created() corresponds to the CREATED property (= time when
+        // item was created in the local storage for the first time),
+        // so it can never be modified by our peer and must be
+        // preserved unconditionally in updates.
+        incidence->setCreated(original->created());
 
         // now overwrite item in calendar
         (KCalCore::IncidenceBase &)*original = (KCalCore::IncidenceBase &)*incidence;
@@ -398,7 +472,10 @@ void KCalExtendedSource::deleteItem(const string &uid)
 {
     KCalCore::Incidence::Ptr incidence = m_data->findIncidence(uid);
     if (!incidence) {
-        throwError(string("incidence ") + uid + " not found");
+        // throwError(string("incidence ") + uid + " not found");
+        // don't treat this as error, it can happen, for example
+        // when the master event was removed before (MBC #6061)
+        return;
     }
     if (!m_data->m_calendar->deleteIncidence(incidence)) {
         throwError(string("could not delete incidence") + uid);
index 1ba281e..3638757 100644 (file)
@@ -53,7 +53,14 @@ static RegisterSyncSource registerMe("KCalExtended",
 #endif
                                      createSource,
                                      "mkcal = KCalExtended = calendar\n"
-                                     "   iCalendar 2.0 = text/calendar\n",
+                                     "   iCalendar 2.0 = text/calendar\n"
+                                     "   \"evolutionsource\" normally is the name of a calendar\n"
+                                     "   inside the default calendar storage. If it starts\n" 
+                                     "   with the \"SyncEvolution_Test_\" prefix, it will be\n"
+                                     "   created as needed, otherwise it must exist.\n"
+                                     "   If it starts with the \"file://\" prefix, the default\n"
+                                     "   calendar in the specified SQLite storage file will\n"
+                                     "   created (if needed) and used.\n",
                                      Values() +
                                      (Aliases("mkcal") + "KCalExtended" + "MeeGo Calendar"));
 
@@ -88,6 +95,9 @@ public:
     virtual void updateConfig(ClientTestConfig &config) const
     {
         config.type = "KCalExtended:text/calendar";
+        // currently removing the parent also removes the child (BMC #6061)
+        // with no workaround in our code
+        config.linkedItemsRelaxedSemantic = false;
     }
 } iCal20Test;
 
index 9360714..2a6f80d 100644 (file)
@@ -15,6 +15,7 @@ if test "$enable_qtcontacts" = "yes"; then
         AC_DEFINE(ENABLE_QTCONTACTS, 1, [QtContacts available])
         # AC_WITH_QT() will be called in configure-post if need_qt_modules is not empty,
         # setting QT_* flags.
+        need_qt_modules="$need_qt_modules +gui" # GUI needed for QVersit
         qt_config="$qt_config +mobility"
         qt_misc="$qt_misc
 MOBILITY += contacts versit"
index 6f7f3e6..7ecb9f0 100644 (file)
@@ -4655,7 +4655,17 @@ void PresenceStatus::init(){
             vector<string> urls = config.getSyncURL();
             m_peers[server.first].clear();
             BOOST_FOREACH (const string &url, urls) {
-                m_peers[server.first].push_back(make_pair(url,MIGHTWORK));
+                // take current status into account,
+                // PresenceStatus::checkPresence() calls init() and
+                // expects up-to-date information
+                PeerStatus status;
+                if ((boost::starts_with(url, "obex-bt") && m_btPresence) ||
+                    (boost::starts_with (url, "http") && m_httpPresence)) {
+                    status = MIGHTWORK;
+                } else {
+                    status = NOTRANSPORT;
+                }
+                m_peers[server.first].push_back(make_pair(url, status));
             }
         }
         m_initiated = true;
@@ -4715,8 +4725,6 @@ void PresenceStatus::updatePresenceStatus (bool newStatus, PresenceStatus::Trans
 void PresenceStatus::updatePresenceStatus (bool httpPresence, bool btPresence) {
     bool httpChanged = (m_httpPresence != httpPresence);
     bool btChanged = (m_btPresence != btPresence);
-    m_httpPresence = httpPresence;
-    m_btPresence = btPresence;
     if(httpChanged) {
         m_httpTimer.reset();
     }
@@ -4729,12 +4737,16 @@ void PresenceStatus::updatePresenceStatus (bool httpPresence, bool btPresence) {
         return;
     }
 
-    //initialize the configured peer list
+    //initialize the configured peer list using old presence status
     bool initiated = m_initiated;
     if (!m_initiated) {
         init();
     }
 
+    // switch to new status
+    m_httpPresence = httpPresence;
+    m_btPresence = btPresence;
+
     //iterate all configured peers and fire singals
     BOOST_FOREACH (StatusPair &peer, m_peers) {
         //iterate all possible transports
index e7e3ebc..babef30 100644 (file)
@@ -852,8 +852,15 @@ bool Cmdline::run() {
             if (!ops.m_deleteItem) {
                 source->throwError("deleting items not supported");
             }
+            list<string> luids;
+            bool deleteAll = std::find(m_luids.begin(), m_luids.end(), "*") != m_luids.end();
             err = ops.m_startDataRead("", "");
             CHECK_ERROR("reading items");
+            if (deleteAll) {
+                readLUIDs(source, luids);
+            } else {
+                luids = m_luids;
+            }
             if (ops.m_endDataRead) {
                 err = ops.m_endDataRead();
                 CHECK_ERROR("stop reading items");
@@ -862,7 +869,7 @@ bool Cmdline::run() {
                 err = ops.m_startDataWrite();
                 CHECK_ERROR("writing items");
             }
-            BOOST_FOREACH(const string &luid, m_luids) {
+            BOOST_FOREACH(const string &luid, luids) {
                 sysync::ItemIDType id;
                 id.item = (char *)luid.c_str();
                 err = ops.m_deleteItem(&id);
index 1a3120e..a6b64b4 100644 (file)
@@ -115,7 +115,7 @@ class SmartPtr
     };
     ~SmartPtr()
     {
-        set( NULL );
+        set(0);
     }
 
     /** assignment and copy construction transfer ownership to the copy */
index 948bb84..a27216e 100644 (file)
@@ -41,7 +41,7 @@ SoupTransportAgent::SoupTransportAgent(GMainLoop *loop) :
            "Soup main loop"),
     m_status(INACTIVE),
     m_cb(NULL),
-    m_response(NULL)
+    m_response(0)
 {
 #ifdef HAVE_LIBSOUP_SOUP_GNOME_FEATURES_H
     // use default GNOME proxy settings
index 555a892..f9053c8 100644 (file)
@@ -294,7 +294,7 @@ struct ClientTestConfig{
      * both items independently. However, operations which violate
      * the semantic of the related items (like deleting the parent, but
      * not the child) may have unspecified results (like also deleting
-     * the child). See LINKED_ITEMS_RELAXED_SEMANTIC.
+     * the child). See linkedItemsRelaxedSemantic and sourceKnowsItemSemantic.
      *
      * One example for main and subordinate items are a recurring
      * iCalendar 2.0 event and a detached recurrence.
@@ -307,13 +307,11 @@ struct ClientTestConfig{
     bool atomicModification;
 
     /**
-     * define to 0 to disable tests which slightly violate the
+     * set to false to disable tests which slightly violate the
      * semantic of linked items by inserting children
      * before/without their parent
      */
-#ifndef LINKED_ITEMS_RELAXED_SEMANTIC
-# define LINKED_ITEMS_RELAXED_SEMANTIC 1
-#endif
+    bool linkedItemsRelaxedSemantic;
 
     /**
      * setting this to false disables tests which depend
index 4321a4d..b0693b0 100644 (file)
@@ -14,6 +14,9 @@ s/::/:/g;
 # avoid special \-- which was necessary for some options
 s/^\\--/--/gm;
 
+# remove escape sequence
+s/\\\*/*/g;
+
 # extract parts
 /SYNOPSIS\n===+\n\n(.*?)\nDESCRIPTION/s || die "no synopsis";
 my $synopsis = $1;
index dbc1d74..c5bd829 100644 (file)
@@ -1,6 +1,12 @@
 # Generated by configure.  Do no edit.
-# git revision c3a18d8e0bc97fc663f5da4f45228ff7a85f0039
-# git tag libsynthesis_3.4.0.6+syncevolution-1-0-99-7
+# git revision 2a247a4a9752d939eb68d2d629ddb8d988fccc89
+# git tag libsynthesis_3.4.0.6+syncevolution-1-1
+
+2010-10-19  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/itemfield.cpp:
+
+       newItemField(): incorrect parameters
 
 2010-09-29  Patrick Ohly  <patrick.ohly@intel.com>
 
index 8e5bd0b..a0b13de 100644 (file)
@@ -286,7 +286,7 @@ TItemField *TArrayField::getArrayField(sInt16 aArrIdx, bool aExistingOnly)
     fldP = fArray[aArrIdx];
     if (fldP==NULL) {
       // but element does not exist yet, create field for it
-      fldP=newItemField(fLeafFieldType,false);
+      fldP=newItemField(fLeafFieldType,NULL,false);
       fArray[aArrIdx]=fldP;
     }
   }
@@ -301,7 +301,7 @@ TItemField *TArrayField::getArrayField(sInt16 aArrIdx, bool aExistingOnly)
       fArray.push_back(NULL);
     }
     // actually create last field only
-    fldP=newItemField(fLeafFieldType,false);
+    fldP=newItemField(fLeafFieldType,NULL,false);
     fArray[aArrIdx]=fldP;
   }
   // return field
index 90db828..b82dee3 100644 (file)
@@ -204,18 +204,30 @@ void LocalTests::addTests() {
             if (config.parentItem &&
                 config.childItem) {
                 ADD_TEST(LocalTests, testLinkedItemsParent);
-                ADD_TEST(LocalTests, testLinkedItemsChild);
+                if (config.linkedItemsRelaxedSemantic) {
+                    ADD_TEST(LocalTests, testLinkedItemsChild);
+                }
                 ADD_TEST(LocalTests, testLinkedItemsParentChild);
-                ADD_TEST(LocalTests, testLinkedItemsChildParent);
-                ADD_TEST(LocalTests, testLinkedItemsChildChangesParent);
-                ADD_TEST(LocalTests, testLinkedItemsRemoveParentFirst);
+                if (config.linkedItemsRelaxedSemantic) {
+                    ADD_TEST(LocalTests, testLinkedItemsChildParent);
+                }
+                if (config.linkedItemsRelaxedSemantic) {
+                    ADD_TEST(LocalTests, testLinkedItemsChildChangesParent);
+                }
+                if (config.linkedItemsRelaxedSemantic) {
+                    ADD_TEST(LocalTests, testLinkedItemsRemoveParentFirst);
+                }
                 ADD_TEST(LocalTests, testLinkedItemsRemoveNormal);
                 if (config.sourceKnowsItemSemantic) {
                     ADD_TEST(LocalTests, testLinkedItemsInsertParentTwice);
-                    ADD_TEST(LocalTests, testLinkedItemsInsertChildTwice);
+                    if (config.linkedItemsRelaxedSemantic) {
+                        ADD_TEST(LocalTests, testLinkedItemsInsertChildTwice);
+                    }
                 }
                 ADD_TEST(LocalTests, testLinkedItemsParentUpdate);
-                ADD_TEST(LocalTests, testLinkedItemsUpdateChild);
+                if (config.linkedItemsRelaxedSemantic) {
+                    ADD_TEST(LocalTests, testLinkedItemsUpdateChild);
+                }
                 ADD_TEST(LocalTests, testLinkedItemsInsertBothUpdateChild);
                 ADD_TEST(LocalTests, testLinkedItemsInsertBothUpdateParent);
             }
@@ -820,7 +832,6 @@ void LocalTests::testLinkedItemsParent() {
 // test inserting, removing and updating of parent + child item in
 // various order plus change tracking
 void LocalTests::testLinkedItemsChild() {
-#if LINKED_ITEMS_RELAXED_SEMANTIC
     // check additional requirements
     CPPUNIT_ASSERT(config.parentItem);
     CPPUNIT_ASSERT(config.childItem);
@@ -853,7 +864,6 @@ void LocalTests::testLinkedItemsChild() {
     SOURCE_ASSERT_EQUAL(copy.get(), 0, countUpdatedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countDeletedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), child));
-#endif
 }
 
 // test inserting, removing and updating of parent + child item in
@@ -899,7 +909,6 @@ void LocalTests::testLinkedItemsParentChild() {
 // test inserting, removing and updating of parent + child item in
 // various order plus change tracking
 void LocalTests::testLinkedItemsChildParent() {
-#if LINKED_ITEMS_RELAXED_SEMANTIC
     // check additional requirements
     CPPUNIT_ASSERT(config.parentItem);
     CPPUNIT_ASSERT(config.childItem);
@@ -935,13 +944,11 @@ void LocalTests::testLinkedItemsChildParent() {
     SOURCE_ASSERT_EQUAL(copy.get(), 2, countDeletedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), child));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), parent));
-#endif
 }
 
 // test inserting, removing and updating of parent + child item in
 // various order plus change tracking
 void LocalTests::testLinkedItemsChildChangesParent() {
-#if LINKED_ITEMS_RELAXED_SEMANTIC
     // check additional requirements
     CPPUNIT_ASSERT(config.parentItem);
     CPPUNIT_ASSERT(config.childItem);
@@ -989,13 +996,11 @@ void LocalTests::testLinkedItemsChildChangesParent() {
     SOURCE_ASSERT_EQUAL(copy.get(), 2, countDeletedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), child));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), parent));
-#endif
 }
 
 // test inserting, removing and updating of parent + child item in
 // various order plus change tracking
 void LocalTests::testLinkedItemsRemoveParentFirst() {
-#if LINKED_ITEMS_RELAXED_SEMANTIC
     // check additional requirements
     CPPUNIT_ASSERT(config.parentItem);
     CPPUNIT_ASSERT(config.childItem);
@@ -1042,7 +1047,6 @@ void LocalTests::testLinkedItemsRemoveParentFirst() {
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countDeletedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), child));
     CPPUNIT_ASSERT_NO_THROW(copy.reset());
-#endif
 }
 
 // test inserting, removing and updating of parent + child item in
@@ -1167,7 +1171,6 @@ void LocalTests::testLinkedItemsInsertChildTwice() {
     SOURCE_ASSERT_EQUAL(copy.get(), 0, countItems(copy.get()));
     CPPUNIT_ASSERT_NO_THROW(copy.reset());
 
-#if LINKED_ITEMS_RELAXED_SEMANTIC
     // add child twice (should be turned into update)
     child = insert(createSourceA, config.childItem);
 
@@ -1197,7 +1200,6 @@ void LocalTests::testLinkedItemsInsertChildTwice() {
     SOURCE_ASSERT_EQUAL(copy.get(), 0, countUpdatedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countDeletedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), child));
-#endif
 }
 
 // test inserting, removing and updating of parent + child item in
@@ -1251,7 +1253,6 @@ void LocalTests::testLinkedItemsParentUpdate() {
 // test inserting, removing and updating of parent + child item in
 // various order plus change tracking
 void LocalTests::testLinkedItemsUpdateChild() {
-#if LINKED_ITEMS_RELAXED_SEMANTIC
     // check additional requirements
     CPPUNIT_ASSERT(config.parentItem);
     CPPUNIT_ASSERT(config.childItem);
@@ -1294,8 +1295,6 @@ void LocalTests::testLinkedItemsUpdateChild() {
     SOURCE_ASSERT_EQUAL(copy.get(), 0, countUpdatedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countDeletedItems(copy.get()));
     SOURCE_ASSERT_EQUAL(copy.get(), 1, countEqual(listDeletedItems(copy.get()), child));
-    CPPUNIT_ASSERT_NO_THROW(copy.reset());
-#endif
 }
 
 // test inserting, removing and updating of parent + child item in
@@ -3544,6 +3543,7 @@ void ClientTest::getTestData(const char *type, Config &config)
     env = getenv("CLIENT_TEST_SUSPEND");
     config.suspendSync = (env && !strcmp (env, "t")) ?true :false;
     config.sourceKnowsItemSemantic = true;
+    config.linkedItemsRelaxedSemantic = true;
     config.itemType = "";
     config.import = import;
     config.dump = dump;