[Telepathy-commits] [telepathy-doc/master] 2008-09-26 Murray Cumming <murrayc at murrayc.com>

Murray Cumming murrayc at murrayc.com
Tue Oct 28 10:12:46 PDT 2008


* docs/examples/list_contacts/: Added the beginnings of another example.
So far it just tries to create the connection so it can later get the
contacts from it.
---
 ChangeLog                                  |    6 +
 configure.ac                               |    1 +
 docs/book/C/telepathy.xml                  |    1 +
 docs/examples/Makefile.am                  |    2 +-
 docs/examples/list_all_protocols/main.c    |    7 +-
 docs/examples/list_contacts/.deps/main.Po  |  323 +++++++++++++++++++++++
 docs/examples/list_contacts/Makefile       |  394 ++++++++++++++++++++++++++++
 docs/examples/list_contacts/Makefile.am    |    7 +
 docs/examples/list_contacts/Makefile.in    |  394 ++++++++++++++++++++++++++++
 docs/examples/list_contacts/example        |  Bin 0 -> 14774 bytes
 docs/examples/list_contacts/main.c         |  139 ++++++++++
 docs/examples/list_contacts/main.c~        |  139 ++++++++++
 docs/examples/list_contacts/main.o         |  Bin 0 -> 8204 bytes
 docs/examples/list_contacts/main_half.c    |  112 ++++++++
 docs/examples/list_contacts/main_working.c |  101 +++++++
 docs/examples/list_contacts/temp.patch     |   60 +++++
 16 files changed, 1680 insertions(+), 6 deletions(-)
 create mode 100644 docs/examples/list_contacts/.deps/main.Po
 create mode 100644 docs/examples/list_contacts/Makefile
 create mode 100644 docs/examples/list_contacts/Makefile.am
 create mode 100644 docs/examples/list_contacts/Makefile.am~
 create mode 100644 docs/examples/list_contacts/Makefile.in
 create mode 100755 docs/examples/list_contacts/example
 create mode 100644 docs/examples/list_contacts/main.c
 create mode 100644 docs/examples/list_contacts/main.c~
 create mode 100644 docs/examples/list_contacts/main.o
 create mode 100644 docs/examples/list_contacts/main_half.c
 create mode 100644 docs/examples/list_contacts/main_working.c
 create mode 100644 docs/examples/list_contacts/temp.patch

diff --git a/ChangeLog b/ChangeLog
index e620e05..2a1ab0b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2008-09-26  Murray Cumming  <murrayc at murrayc.com>
 
+	* docs/examples/list_contacts/: Added the beginnings of another example.
+	So far it just tries to create the connection so it can later get the 
+	contacts from it.
+
+2008-09-26  Murray Cumming  <murrayc at murrayc.com>
+
 	* docs/examples/list_all_protocols/main.c: Asynchronously introspect 
         the connection manager for the protocols information if necessary, 
 	though this raises many more questions. 
diff --git a/configure.ac b/configure.ac
index ac7a0f8..d726b4c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,6 +26,7 @@ AC_OUTPUT([
   docs/Makefile
     docs/examples/Makefile
       docs/examples/list_all_protocols/Makefile
+      docs/examples/list_contacts/Makefile
 
     docs/book/Makefile
 ])
diff --git a/docs/book/C/telepathy.xml b/docs/book/C/telepathy.xml
index ccaae2e..d4e5d2c 100644
--- a/docs/book/C/telepathy.xml
+++ b/docs/book/C/telepathy.xml
@@ -121,6 +121,7 @@ of the Telapathy specification.
     Notes: Most functions are synchronous, getting locally-stored data.
     - Convention is that Get* methods access local information, but Request* 
       methods may access the network.
+      (This convention seems to apply to the D-Bus API, but not to the telepathy-glib API. murrayc)
     - Many Get* methods are being deprecated in favour of D-Bus properties 
       currently (because you can do GetAll() for a given interface and download 
       the state at once with fewer roundtrips).
diff --git a/docs/examples/Makefile.am b/docs/examples/Makefile.am
index 85eeb09..5e38198 100644
--- a/docs/examples/Makefile.am
+++ b/docs/examples/Makefile.am
@@ -1,6 +1,6 @@
 include $(top_srcdir)/docs/Makefile_web.am_fragment
 
-example_dirs = list_all_protocols
+example_dirs = list_all_protocols list_contacts
 
 SUBDIRS = $(example_dirs)
 
diff --git a/docs/examples/list_all_protocols/main.c b/docs/examples/list_all_protocols/main.c
index 670ff1f..7e0cbb5 100644
--- a/docs/examples/list_all_protocols/main.c
+++ b/docs/examples/list_all_protocols/main.c
@@ -106,13 +106,10 @@ on_list_connection_managers(TpConnectionManager * const *connection_managers,
   TpConnectionManager * const *cm_iter = connection_managers;
   for (; *cm_iter != NULL; ++cm_iter)
     {
-      const TpConnectionManager *cm = *cm_iter;
+      TpConnectionManager *cm = *cm_iter;
       if (!cm)
         continue;
 
-      /* TODO: See https://bugs.freedesktop.org/show_bug.cgi?id=18040
-       * about the protocols really needing to not use const.
-       */
       /* TODO: See http://bugs.freedesktop.org/show_bug.cgi?id=18056
        * about the lack of get_name() being tedious.
        */
@@ -170,7 +167,7 @@ on_list_connection_managers(TpConnectionManager * const *connection_managers,
   /* TODO: Commented-out because we don't yet have a way to keep a reference while got-info 
    *  is being emitted.
    */
-  g_main_loop_unref (mainloop);
+  /* g_main_loop_unref (mainloop); */
 }
 
 int
diff --git a/docs/examples/list_contacts/.deps/main.Po b/docs/examples/list_contacts/.deps/main.Po
new file mode 100644
index 0000000..50fa04a
--- /dev/null
+++ b/docs/examples/list_contacts/.deps/main.Po
@@ -0,0 +1,323 @@
+main.o main.o: main.c \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/connection-manager.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/proxy.h \
+  /opt/gnome220/include/dbus-1.0/dbus/dbus-glib.h \
+  /opt/gnome220/include/glib-2.0/glib-object.h \
+  /opt/gnome220/include/glib-2.0/gobject/gboxed.h \
+  /opt/gnome220/include/glib-2.0/gobject/gtype.h \
+  /opt/gnome220/include/glib-2.0/glib.h \
+  /opt/gnome220/include/glib-2.0/glib/galloca.h \
+  /opt/gnome220/include/glib-2.0/glib/gtypes.h \
+  /opt/gnome220/lib/glib-2.0/include/glibconfig.h \
+  /opt/gnome220/include/glib-2.0/glib/gmacros.h \
+  /usr/lib/gcc/i486-linux-gnu/4.2.4/include/stddef.h \
+  /usr/lib/gcc/i486-linux-gnu/4.2.4/include/limits.h \
+  /usr/lib/gcc/i486-linux-gnu/4.2.4/include/syslimits.h \
+  /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \
+  /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h \
+  /usr/lib/gcc/i486-linux-gnu/4.2.4/include/float.h \
+  /opt/gnome220/include/glib-2.0/glib/garray.h \
+  /opt/gnome220/include/glib-2.0/glib/gasyncqueue.h \
+  /opt/gnome220/include/glib-2.0/glib/gthread.h \
+  /opt/gnome220/include/glib-2.0/glib/gerror.h \
+  /opt/gnome220/include/glib-2.0/glib/gquark.h \
+  /opt/gnome220/include/glib-2.0/glib/gutils.h \
+  /usr/lib/gcc/i486-linux-gnu/4.2.4/include/stdarg.h \
+  /opt/gnome220/include/glib-2.0/glib/gatomic.h \
+  /opt/gnome220/include/glib-2.0/glib/gbacktrace.h \
+  /opt/gnome220/include/glib-2.0/glib/gbase64.h \
+  /opt/gnome220/include/glib-2.0/glib/gbookmarkfile.h /usr/include/time.h \
+  /usr/include/bits/time.h /usr/include/bits/types.h \
+  /usr/include/bits/typesizes.h \
+  /opt/gnome220/include/glib-2.0/glib/gcache.h \
+  /opt/gnome220/include/glib-2.0/glib/glist.h \
+  /opt/gnome220/include/glib-2.0/glib/gmem.h \
+  /opt/gnome220/include/glib-2.0/glib/gslice.h \
+  /opt/gnome220/include/glib-2.0/glib/gchecksum.h \
+  /opt/gnome220/include/glib-2.0/glib/gcompletion.h \
+  /opt/gnome220/include/glib-2.0/glib/gconvert.h \
+  /opt/gnome220/include/glib-2.0/glib/gdataset.h \
+  /opt/gnome220/include/glib-2.0/glib/gdate.h \
+  /opt/gnome220/include/glib-2.0/glib/gdir.h \
+  /opt/gnome220/include/glib-2.0/glib/gfileutils.h \
+  /opt/gnome220/include/glib-2.0/glib/ghash.h \
+  /opt/gnome220/include/glib-2.0/glib/ghook.h \
+  /opt/gnome220/include/glib-2.0/glib/giochannel.h \
+  /opt/gnome220/include/glib-2.0/glib/gmain.h \
+  /opt/gnome220/include/glib-2.0/glib/gslist.h \
+  /opt/gnome220/include/glib-2.0/glib/gstring.h \
+  /opt/gnome220/include/glib-2.0/glib/gunicode.h \
+  /opt/gnome220/include/glib-2.0/glib/gkeyfile.h \
+  /opt/gnome220/include/glib-2.0/glib/gmappedfile.h \
+  /opt/gnome220/include/glib-2.0/glib/gmarkup.h \
+  /opt/gnome220/include/glib-2.0/glib/gmessages.h \
+  /opt/gnome220/include/glib-2.0/glib/gnode.h \
+  /opt/gnome220/include/glib-2.0/glib/goption.h \
+  /opt/gnome220/include/glib-2.0/glib/gpattern.h \
+  /opt/gnome220/include/glib-2.0/glib/gprimes.h \
+  /opt/gnome220/include/glib-2.0/glib/gqsort.h \
+  /opt/gnome220/include/glib-2.0/glib/gqueue.h \
+  /opt/gnome220/include/glib-2.0/glib/grand.h \
+  /opt/gnome220/include/glib-2.0/glib/grel.h \
+  /opt/gnome220/include/glib-2.0/glib/gregex.h \
+  /opt/gnome220/include/glib-2.0/glib/gscanner.h \
+  /opt/gnome220/include/glib-2.0/glib/gsequence.h \
+  /opt/gnome220/include/glib-2.0/glib/gshell.h \
+  /opt/gnome220/include/glib-2.0/glib/gspawn.h \
+  /opt/gnome220/include/glib-2.0/glib/gstrfuncs.h \
+  /opt/gnome220/include/glib-2.0/glib/gtestutils.h \
+  /opt/gnome220/include/glib-2.0/glib/gthreadpool.h \
+  /opt/gnome220/include/glib-2.0/glib/gtimer.h \
+  /opt/gnome220/include/glib-2.0/glib/gtree.h \
+  /opt/gnome220/include/glib-2.0/glib/gurifuncs.h \
+  /opt/gnome220/include/glib-2.0/gobject/genums.h \
+  /opt/gnome220/include/glib-2.0/gobject/gobject.h \
+  /opt/gnome220/include/glib-2.0/gobject/gvalue.h \
+  /opt/gnome220/include/glib-2.0/gobject/gparam.h \
+  /opt/gnome220/include/glib-2.0/gobject/gclosure.h \
+  /opt/gnome220/include/glib-2.0/gobject/gsignal.h \
+  /opt/gnome220/include/glib-2.0/gobject/gmarshal.h \
+  /opt/gnome220/include/glib-2.0/gobject/gparamspecs.h \
+  /opt/gnome220/include/glib-2.0/gobject/gsourceclosure.h \
+  /opt/gnome220/include/glib-2.0/gobject/gtypemodule.h \
+  /opt/gnome220/include/glib-2.0/gobject/gtypeplugin.h \
+  /opt/gnome220/include/glib-2.0/gobject/gvaluearray.h \
+  /opt/gnome220/include/glib-2.0/gobject/gvaluetypes.h \
+  /opt/gnome220/include/dbus-1.0/dbus/dbus-shared.h \
+  /opt/gnome220/include/dbus-1.0/dbus/dbus-gtype-specialized.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-generic.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/dbus.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-dbus-daemon.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-connection-manager.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/connection.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/enums.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/telepathy-enums.h \
+  /opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-connection.h \
+  /opt/gnome220/include/glib-2.0/glib/gprintf.h /usr/include/stdio.h \
+  /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/connection-manager.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/proxy.h:
+
+/opt/gnome220/include/dbus-1.0/dbus/dbus-glib.h:
+
+/opt/gnome220/include/glib-2.0/glib-object.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gboxed.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gtype.h:
+
+/opt/gnome220/include/glib-2.0/glib.h:
+
+/opt/gnome220/include/glib-2.0/glib/galloca.h:
+
+/opt/gnome220/include/glib-2.0/glib/gtypes.h:
+
+/opt/gnome220/lib/glib-2.0/include/glibconfig.h:
+
+/opt/gnome220/include/glib-2.0/glib/gmacros.h:
+
+/usr/lib/gcc/i486-linux-gnu/4.2.4/include/stddef.h:
+
+/usr/lib/gcc/i486-linux-gnu/4.2.4/include/limits.h:
+
+/usr/lib/gcc/i486-linux-gnu/4.2.4/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/features.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/lib/gcc/i486-linux-gnu/4.2.4/include/float.h:
+
+/opt/gnome220/include/glib-2.0/glib/garray.h:
+
+/opt/gnome220/include/glib-2.0/glib/gasyncqueue.h:
+
+/opt/gnome220/include/glib-2.0/glib/gthread.h:
+
+/opt/gnome220/include/glib-2.0/glib/gerror.h:
+
+/opt/gnome220/include/glib-2.0/glib/gquark.h:
+
+/opt/gnome220/include/glib-2.0/glib/gutils.h:
+
+/usr/lib/gcc/i486-linux-gnu/4.2.4/include/stdarg.h:
+
+/opt/gnome220/include/glib-2.0/glib/gatomic.h:
+
+/opt/gnome220/include/glib-2.0/glib/gbacktrace.h:
+
+/opt/gnome220/include/glib-2.0/glib/gbase64.h:
+
+/opt/gnome220/include/glib-2.0/glib/gbookmarkfile.h:
+
+/usr/include/time.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/opt/gnome220/include/glib-2.0/glib/gcache.h:
+
+/opt/gnome220/include/glib-2.0/glib/glist.h:
+
+/opt/gnome220/include/glib-2.0/glib/gmem.h:
+
+/opt/gnome220/include/glib-2.0/glib/gslice.h:
+
+/opt/gnome220/include/glib-2.0/glib/gchecksum.h:
+
+/opt/gnome220/include/glib-2.0/glib/gcompletion.h:
+
+/opt/gnome220/include/glib-2.0/glib/gconvert.h:
+
+/opt/gnome220/include/glib-2.0/glib/gdataset.h:
+
+/opt/gnome220/include/glib-2.0/glib/gdate.h:
+
+/opt/gnome220/include/glib-2.0/glib/gdir.h:
+
+/opt/gnome220/include/glib-2.0/glib/gfileutils.h:
+
+/opt/gnome220/include/glib-2.0/glib/ghash.h:
+
+/opt/gnome220/include/glib-2.0/glib/ghook.h:
+
+/opt/gnome220/include/glib-2.0/glib/giochannel.h:
+
+/opt/gnome220/include/glib-2.0/glib/gmain.h:
+
+/opt/gnome220/include/glib-2.0/glib/gslist.h:
+
+/opt/gnome220/include/glib-2.0/glib/gstring.h:
+
+/opt/gnome220/include/glib-2.0/glib/gunicode.h:
+
+/opt/gnome220/include/glib-2.0/glib/gkeyfile.h:
+
+/opt/gnome220/include/glib-2.0/glib/gmappedfile.h:
+
+/opt/gnome220/include/glib-2.0/glib/gmarkup.h:
+
+/opt/gnome220/include/glib-2.0/glib/gmessages.h:
+
+/opt/gnome220/include/glib-2.0/glib/gnode.h:
+
+/opt/gnome220/include/glib-2.0/glib/goption.h:
+
+/opt/gnome220/include/glib-2.0/glib/gpattern.h:
+
+/opt/gnome220/include/glib-2.0/glib/gprimes.h:
+
+/opt/gnome220/include/glib-2.0/glib/gqsort.h:
+
+/opt/gnome220/include/glib-2.0/glib/gqueue.h:
+
+/opt/gnome220/include/glib-2.0/glib/grand.h:
+
+/opt/gnome220/include/glib-2.0/glib/grel.h:
+
+/opt/gnome220/include/glib-2.0/glib/gregex.h:
+
+/opt/gnome220/include/glib-2.0/glib/gscanner.h:
+
+/opt/gnome220/include/glib-2.0/glib/gsequence.h:
+
+/opt/gnome220/include/glib-2.0/glib/gshell.h:
+
+/opt/gnome220/include/glib-2.0/glib/gspawn.h:
+
+/opt/gnome220/include/glib-2.0/glib/gstrfuncs.h:
+
+/opt/gnome220/include/glib-2.0/glib/gtestutils.h:
+
+/opt/gnome220/include/glib-2.0/glib/gthreadpool.h:
+
+/opt/gnome220/include/glib-2.0/glib/gtimer.h:
+
+/opt/gnome220/include/glib-2.0/glib/gtree.h:
+
+/opt/gnome220/include/glib-2.0/glib/gurifuncs.h:
+
+/opt/gnome220/include/glib-2.0/gobject/genums.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gobject.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gvalue.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gparam.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gclosure.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gsignal.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gmarshal.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gparamspecs.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gsourceclosure.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gtypemodule.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gtypeplugin.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gvaluearray.h:
+
+/opt/gnome220/include/glib-2.0/gobject/gvaluetypes.h:
+
+/opt/gnome220/include/dbus-1.0/dbus/dbus-shared.h:
+
+/opt/gnome220/include/dbus-1.0/dbus/dbus-gtype-specialized.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-generic.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/dbus.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-dbus-daemon.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-connection-manager.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/connection.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/enums.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/telepathy-enums.h:
+
+/opt/gnome220/include/telepathy-1.0/telepathy-glib/_gen/tp-cli-connection.h:
+
+/opt/gnome220/include/glib-2.0/glib/gprintf.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
diff --git a/docs/examples/list_contacts/Makefile b/docs/examples/list_contacts/Makefile
new file mode 100644
index 0000000..7c03eef
--- /dev/null
+++ b/docs/examples/list_contacts/Makefile
@@ -0,0 +1,394 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# docs/examples/list_contacts/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+pkgdatadir = $(datadir)/telepathy-doc
+pkglibdir = $(libdir)/telepathy-doc
+pkgincludedir = $(includedir)/telepathy-doc
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/docs/examples/Makefile.am_fragment
+noinst_PROGRAMS = example$(EXEEXT)
+subdir = docs/examples/list_contacts
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/telepathy_docs_check_perl.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_example_OBJECTS = main.$(OBJEXT)
+example_OBJECTS = $(am_example_OBJECTS)
+example_LDADD = $(LDADD)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(example_SOURCES)
+DIST_SOURCES = $(example_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/murrayc/svn/gnome220/telepathy-doc/missing --run aclocal-1.10
+ACLOCAL_AMFLAGS = -I m4
+AMTAR = ${SHELL} /home/murrayc/svn/gnome220/telepathy-doc/missing --run tar
+AUTOCONF = ${SHELL} /home/murrayc/svn/gnome220/telepathy-doc/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/murrayc/svn/gnome220/telepathy-doc/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/murrayc/svn/gnome220/telepathy-doc/missing --run automake-1.10
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g 
+CPPFLAGS = 
+CYGPATH_W = echo
+DEFS = -DPACKAGE_NAME=\"telepathy-doc\" -DPACKAGE_TARNAME=\"telepathy-doc\" -DPACKAGE_VERSION=\"0.5.0.1\" -DPACKAGE_STRING=\"telepathy-doc\ 0.5.0.1\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"telepathy-doc\" -DVERSION=\"0.5.0.1\"
+DEPDIR = .deps
+DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper 
+DOC_USER_FORMATS = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EXEEXT = 
+HELP_DIR = ${datadir}/gnome/help
+INSTALL = /home/murrayc/bin/install-check
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = -L/opt/gnome220/lib 
+LIBOBJS = 
+LIBS = $(TELEPATHY_DOCS_LIBS)
+LTLIBOBJS = 
+MAKEINFO = ${SHELL} /home/murrayc/svn/gnome220/telepathy-doc/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+OMF_DIR = ${datadir}/omf
+PACKAGE = telepathy-doc
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = telepathy-doc
+PACKAGE_STRING = telepathy-doc 0.5.0.1
+PACKAGE_TARNAME = telepathy-doc
+PACKAGE_VERSION = 0.5.0.1
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /opt/gnome220/bin/pkg-config
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = 
+TELEPATHY_DOCS_CFLAGS = -I/opt/gnome220/include/telepathy-1.0 -I/opt/gnome220/include/dbus-1.0 -I/opt/gnome220/include/glib-2.0 -I/opt/gnome220/lib/glib-2.0/include -I/opt/gnome220/lib/dbus-1.0/include -I/opt/gnome220/include/gtk-2.0 -I/opt/gnome220/lib/gtk-2.0/include -I/opt/gnome220/include/atk-1.0 -I/opt/gnome220/include/cairo -I/opt/gnome220/include/pango-1.0 -I/opt/gnome220/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12  
+TELEPATHY_DOCS_LIBS = -L/opt/gnome220/lib -ltelepathy-glib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lz -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0  
+VERSION = 0.5.0.1
+abs_builddir = /home/murrayc/svn/gnome220/telepathy-doc/docs/examples/list_contacts
+abs_srcdir = /home/murrayc/svn/gnome220/telepathy-doc/docs/examples/list_contacts
+abs_top_builddir = /home/murrayc/svn/gnome220/telepathy-doc
+abs_top_srcdir = /home/murrayc/svn/gnome220/telepathy-doc
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build_alias = 
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host_alias = 
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/murrayc/svn/gnome220/telepathy-doc/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /opt/gnome220
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../../
+top_builddir = ../../..
+top_srcdir = ../../..
+all_includes = $(TELEPATHY_DOCS_CFLAGS) $(TELEPATHY_DOCS_WARNING_FLAGS)
+DEFAULT_INCLUDES = 
+INCLUDES = -I. -I$(srcdir) $(strip $(all_includes))
+example_SOURCES = main.c
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/docs/examples/Makefile.am_fragment $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  docs/examples/list_contacts/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  docs/examples/list_contacts/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) 
+	@rm -f example$(EXEEXT)
+	$(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/main.Po
+
+.c.o:
+	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstPROGRAMS ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
+
+
+post-html:
+	rsync $(rsync_options) $(example_dirs) $$USER@$(web_host):$(web_path)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/examples/list_contacts/Makefile.am b/docs/examples/list_contacts/Makefile.am
new file mode 100644
index 0000000..d0a304f
--- /dev/null
+++ b/docs/examples/list_contacts/Makefile.am
@@ -0,0 +1,7 @@
+include $(top_srcdir)/docs/examples/Makefile.am_fragment
+
+#Build the executable, but don't install it.
+noinst_PROGRAMS = example
+
+example_SOURCES = main.c
+
diff --git a/docs/examples/list_contacts/Makefile.am~ b/docs/examples/list_contacts/Makefile.am~
new file mode 100644
index 0000000..e69de29
diff --git a/docs/examples/list_contacts/Makefile.in b/docs/examples/list_contacts/Makefile.in
new file mode 100644
index 0000000..5f84784
--- /dev/null
+++ b/docs/examples/list_contacts/Makefile.in
@@ -0,0 +1,394 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(top_srcdir)/docs/examples/Makefile.am_fragment
+noinst_PROGRAMS = example$(EXEEXT)
+subdir = docs/examples/list_contacts
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/telepathy_docs_check_perl.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_example_OBJECTS = main.$(OBJEXT)
+example_OBJECTS = $(am_example_OBJECTS)
+example_LDADD = $(LDADD)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(example_SOURCES)
+DIST_SOURCES = $(example_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DOC_USER_FORMATS = @DOC_USER_FORMATS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+HELP_DIR = @HELP_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = $(TELEPATHY_DOCS_LIBS)
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OMF_DIR = @OMF_DIR@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TELEPATHY_DOCS_CFLAGS = @TELEPATHY_DOCS_CFLAGS@
+TELEPATHY_DOCS_LIBS = @TELEPATHY_DOCS_LIBS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+all_includes = $(TELEPATHY_DOCS_CFLAGS) $(TELEPATHY_DOCS_WARNING_FLAGS)
+DEFAULT_INCLUDES = 
+INCLUDES = -I. -I$(srcdir) $(strip $(all_includes))
+example_SOURCES = main.c
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/docs/examples/Makefile.am_fragment $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  docs/examples/list_contacts/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  docs/examples/list_contacts/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) 
+	@rm -f example$(EXEEXT)
+	$(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstPROGRAMS ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
+
+
+post-html:
+	rsync $(rsync_options) $(example_dirs) $$USER@$(web_host):$(web_path)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/examples/list_contacts/example b/docs/examples/list_contacts/example
new file mode 100755
index 0000000000000000000000000000000000000000..11103d075b0895d7a0800c7a8865f9f7f096d53a
GIT binary patch
literal 14774
zcmb_j3vgW3c|P~<mArbbWlLZiT(gQKBT{Q6KVytBvgNf9$hM4SV#k=vYIn7}u-X;-
z5Hh&IAV}=UCU(L!w9|A<ooO-+I3!^vPD2t?yD>Cr>!E2&CzNpqNaf%rCPN5K2<rEp
zhj#S}rjsL`{m=h6|2gMB at 5g;G*tN;BEMc52Jc8J<&p6%{fQPPAoE5?^W{D=TSk#MB
zkjPuHA2RUg5vDJJci=tnwNO&~kmIGV0ZvaIb<<0SxB~u}IYQ7gzNl7wNqZ7J_*W3&
zb$F&rz722&@@K%K?*@;ae5OI)1ia}X$4l=APH%YI-pECOPH`rFOES^hl8iJb6RG at A
zAe#;>Q*n{B%zMX{9WpNS!8l%cWJg>BPj>};Ej)QXc$R%Wd>Q;)_&<WLgkK0>1-}5E
zI%dPqgP+OKK1{RNl@}qi5M~+anAb%zq<*dfV7*)kUjctLJo8KkQ;j>yFh8bj2ZY}e
zueX(v#yHgZx37I}UwiOhFFtkaYo}hmcjv-yAAZaC=D+-cMV;UlXvGIWWw~hsx*On$
z8+$#b at n%5d{0OWy2q5upjkhCnjQ=gIpYe#hn$IRn{C#b#Z$OTCgO>N{_*pH_+9dxK
zEx%af!<zq5jX$n&)-C0aXnoIWd{E<$>GY0)PPbd*Pb*X$2W0#U8aMg*dmaD#nm<e9
zx9a?oPPY=3%=kgg-=X>cEV)9Q03^R2mHGH_^f9<<@zz*1 at IyuTFA(q0XB{uw%pA17
zd6W2m4*KW;6 at M;T&3i~M33=+9%a)CPl8Yvz1EE}eZ*vS7J4>sGxqX>v6ksrv%tzgP
zDjUrS*Nye3Q*JgF%H&*ExVH?tw?$)#Y%ZE<PlmGDXciIDy>~~$ImF0B`+&wn*|?hv
z^(Lck0!lJD(E3A(l$%Va2i#QjzKJr5klQ;z at dSlc1~gKLY4jH;nS5$o9JysSbBQoO
zCXtGX+<+TSCfsm3l|uFsC<f#WD!By?GXeP+l=SAaGenIfvRc_R0{x*>C>G7gG&0e9
z^U-Y1q=lp>C1-?nvJs@|MnX}Vnk3XoEO$@y(9)&N%L1*Ydcw(QDC0&mnRI5N1(jhK
zDKaS%Xdx(CYLvKru&Pv_NEcK?Y9N$~rTcQr3ZhD#JCGRa&G$`}4Tln$^aN>1QRA*r
zIDyaB#agDwD(2yShL$qamrmti*}g<<oD@@yYC^(jijjOWI+2Fx1wzanK-K5^s5Gn+
zayz%8K}68}^4Vwv4Vo<7pxKgy8;yi=AuxKgSw#ma6%id>og3O+*kAMnyMo>8dv4z4
zlIFGsK89>hLu^G4(}NK^n{=M>v7Mv58t3_IyoGVx{BcaT#2Zk-dB6`}ok(D+ at rWk$
zaXJh7Ied^$_x#oW0n`!8z$fjL#BI@`<!do+lp?7HK#ogIgwVf)5HhWV;IAOW#J8Fd
z6Vh5jj2LZ%m;g5tV$!;q5ED at sAtu9aLgcWA5JSsOLQIHv5F$f&5n{rM5MpqP6Jlab
z5 at J9eAjHI*Bg7;(M2N|BA0Z~59S7goK77#`Wm$JWbh-ia;mGIT8yg#Y^rc+M=oU~%
z-$JoQmmu#ucfWXgY~@149BcIBmvP1#S at Jl87tSNvSR*YEC-1^JiPI8sn(o3WiPIu+
zPI(uekvJ_A_Y*%Raat(eMEr=vX{mTC@%<8~#p0`p4 at jJri?<QKOX9R({AS|a5~n5O
z-Nf4 at PK(BO5^t3_EgQd!xL at M5aGV9YP%Uv<IzB*LNSqdr4-vogJ_wDpe0)Fg^Acwb
z#19ZZCvnz9{0Q+=5@(IXpCJB>#91@(W5kb1oHZ2x3h^TnXHCVQA-*3tpma<B=gx!w
zHT?Re?w;G?=N^N^dHig<J>D?lct`&of^Q$0;84%Q7rpy$JOphbSNZ0`;Zx4>13<=J
zdXiwI`q7v2Z~mZ!eCx&2N0j`Nr?8BC^i*!{NhXRw*;%K7w6SxLIo#FYAPZynz6a at T
z!xwX-Cy?;jjScL20+IxycY}8P2-J?A``y^sL8oE#2~Z9O-#r_An*xV}Zy(&)P>E<>
zqKtk7lj%tCUCQp0vX at 4JZzJ_OfRQ#Y#2sjV0#c(3!KVg at J`eS0gBPWe;Hc3hq0Y(}
zGZ1|JZ14po^dkk%Dez+jUX}n!v>|Xf_ySdzA{A!r6q3}WuuS*`<i$(Qk7br$r*Nmt
z2Nyr$Y)~5RZ16dSol at Y81mj6O%UH)53#3<M5|Sij63?0>E)<gZDS9Y`xlq>jn}0Ys
z3c=dL!HWRZBf-}Jq)~r~XjII`I}*Iaw7wwia9)>W7nB_i$`rRC$f%HMhs?;1(UHv;
zbp;*lY49FIjq8e8E_J*zUB$eI6i0`pR#`DkQtL%({m<Vrfl&ruLU8y`&Wn5{>T=-`
zMCq1tQ!9EWnad0MUPesB`BRb?f{fB(q%@W&D(ovv=Wa+G44xlP>RCp6L*`>@Qs>Eh
z0ZiSd`kB=4RsR4apdR_DI*Pc5fQ~1%gp~V1na)Z($=m~`PRd3QS`LuBNyd at c|H*F{
zT~^yU1fOJ2VzEv`WE>fk^0LEx6+*Jn4WG&F+H*Mc-f1}wpoi``eK at yR9DeRv+6wr`
zZ{I$;6~Tv2H)En0zF0Z>i~mJ#zQgW$c$mM}oqc}HesnC?u=JggU^Uy}NU#zBZGd?g
zd;FV}8vcQG{jc+{4xg#qeW$zU^vJ>nBnkbTSDxfPb@<(}+}x!<89O&J{1nkQ9Z>R@
zhR-;=_b_)_R(4s;LB}wCjdr0#yD;Byn&q4v3-w~Ti+K!7&cdRyXqDG=oxd-XNJb-T
z{EgXi(Vx#`LVLq)8V17Yeh~_X)A>|R3}9J(Upf=%*}8G-I3n&w3egO0GcgS;7boeS
zy6iRi;PQ9s(sVp}p!`EGYY|tjM^&jd1~=^JSmSRWw}3yKiH35~2sEpF&$t}-7w6)#
zWoJxQ<v=Ao)gH7%VJ%;r@@31al*QB%7xe04v&!VuTnriJI?njx2r&Gzh8H!ou~s8}
zu7=lYxK2avA;}MGnAh-A8XnQ`xQ5 at -@P`_5t;xZO`$a6{<UWzp<IN8_-e0{xmacx-
z@$&p)?IT!60(JpsUEYC)&+~|Cc%GZku`kR=_lHWsE{<L+&nkE}(hB`Nw`c<79+z_|
z&sPZ1N7FBV8k064<6Z)M0yu&n+VNb;L<$^qyzAh%z~2d<g8wA^WAJ|oe**q{@c#t=
zD*Vsk--q|%3~dp70Dc|(7Wg~iQ}CaJe+=HF at f_3ZXm4NRZ^H4?b^aBBWq}p`rX9WL
z$a#e|FU?DADb6?k(2~n9Tj%9VUVc75oK9&nuDNV+7{6>~s@;7AkmnO at 55{rnV2i8J
zw3Qs!jbCO1(@yC*h9;=^wWv3S9)TW3QG#^<Y*Uzh;q&m5wu59TWlZc-XxrV`?#O*%
z90&tEwV;?d2(Oem);5H#zs3)Bo<WPCM^M<7x1GS|v7WG<S*sLSN??@+3G5P<)#H?4
zt14`7$<riyXDuOcO1=T$II|$!g-{8P9jyhQ=5L9I=RT#J6?JBAMaZ$_l!;JFZ$6QX
zsNYBnPj<rC8h=a?nseBHw<MOYUWF6V-f&Aen{Nqca*4q9%ZXP|hIj&P-M at aje_3GZ
zYHW|K{SU)bw%8*xLtgvu>j-Ez7VR1ci<Wr0KiZ-v!Itb`swI{JW!bXUmcj{DBpq&n
z&$dK|Lj42DXch;(>TD$!3g at zdZR3a7UPvoyn>w>_e3gi$q7lEeu~n+Ea6FV at 9gVXU
z!7j<h)0vzSwr441T!tz<u{^-?Wx@^|K{-7!V5?RLdj-c|)L}B6iuvVFL7M!Pe#xIz
z;7?MUP23+9_690dwXSmHbt36J*AyiV+C-6J$@Vng0=1qP>B7@;r$l7Jt!$;9SZ_Lw
z)1s8{EPX`s@=9{$3FgL8xtWv^mQQ$AsnYc&(;;B1UzPHXMq at fpp6hRuS_jgIgH?&A
z>ki<hP9?g>th;59zn+e5`B3H_;VgcQnd%72qpK4Ca)^0djaHWU2Z5JG(z4f;G|U5L
z*Nd`nI)c(SGXHkHQ`R5NW^uqKN*2$N0$!xoh)}5`P0_KDhd8B+KMPX1t1!#caWl>$
zdw3KnW?lO?id7(izZng&iyhos_o8BtQ>;?wVX6NK{Mwa{tOIR;ijE$fWQnr0wFcR%
z=(wFnrlKrs`7lUTx*D$qp$&wxn9GANQJ#K_s!%q0;#9tGJH{%M4GO4E9;k}4L2J8G
zQlL2?J^*5sR#f&GOKZ|mJ5xCNOofq!A?s)%_Bh!A{kuv*n8&uF>~V=BFEAkU=<}9m
zn4Q^!IEBrL at +|ERM7E0Z+-Zf$R#cw9PxBNycub*)hZbLc-!D<wIwtX<If|{?Q2E|-
z3e}b at zyH4#ZrW1$1Mh$!s=2lfBSUjKfLdZMbKvRNDvz2)#mW1?LL1U}WyQ&}AZSDL
z*jbsQ;%%CZ7RS*vmgZbvSNxi4*`)53)ll*7zsXwh3eUz3`D{mF`6?<GzY5WEcQW1b
z^bC-;Q6AZfs%uKHNGf+H5Gm80Ne}Jq&Ljr02o_a!f2^e at kjLdjRecu(yig+rL_<~m
z&p at d84$M)tIxaJfrc*d87F9P;z^<=U)WX(7RIR-vIn`wpPlfuC{*9{R)RyV<dR_pC
zs&$Gwzbui$xqAX8!6|7~8~dbPzpxDFse__w!#h%&AC2WL<f9Y^9Q?fkR1~vdvCZlb
zT=*8v!*Y>DnaW$?Tl6ZJvRJ+yH%i5#OlHyd at lu&=1CmYW(&2P6D||b at f{E3xZ>q(z
zJ;if<-zRv5<5<_&^-F3)$@@Zkvuv}Obanve{KB_eu@{k at NcE-NY&xGo-|*e>IcRe1
zg=A!+xS1G?M%=z+D27z_uzfiTk<b!VW}o{#nQrT}B{Y at l^W%P1R{fNM8WC3TRAwj>
z>KDG1>kxZdGj&UW2H(n4kkHn-UR9ND1Dw%9xqJo%Tca3GStQyQ$|rN`21WR87*j2~
zOc!!33prk^zIE(rcD;Xw5~>;yzV)xom`PnrqSCj1HLRuc88rDEU?E`KO=Pmi$=2lS
zROxaAUj)@xIKIuSnJas`-S*9H=ax-d-R)a<+}0j+w`|=KoR+bvvnwd9X<~GB-X6qS
zgf`#YiOS!u>weohq)_Ud!0)VY%HX#dq;*Rjw#QQEy~(Xv%wF^=geKOHXqvrfF4l;$
z{mx!u+OI6x?B<Q&*!2w)EoxfA>}#6A<~UJk4~B=?hFVLVe?W@!<N`@pS6c_s_ss$a
zLD7qq*8ET=78cf3<S{&mFzE}5Mh2 at +jtoZ!7O49ot3h_?qsax~@!dHt<>Zx>uo}-G
zQTu3o0sBNE9908`6_E9KG_pXBIdZtLS`_WB1+s3VnEkWDYULfQee{k6>gLXzWLV2&
z`#ajE>E>iZSRW(9bM&bP7i9C{FlKgPt!1yZkM1nWps;Se1vasd_P{Rt5aTK?5#)N@
zy5d2U7%O5PIF&jl!PHA)u5cXdIS~Ay{ePCksXxS$*qUQC`f4gXzN>w6thrV-TA1A+
zDk|22gre&p%#OofQnAusAw0e{6*p9L*4$KSqjaT<MJG23)*Mk?x}((Nz1rL8twAFN
z#X_ipl*!7W(Q~Enc$K1J^|O%<loC+wET!FBV|lz46%@BXEvp)jyBb+2uK~IiCj=E*
zX9=TLj>josoGKj$JjU_OvkLlV7xZCHx2(<@#+XxwlC>Z=b63hD)<8-Zof>Kjkt!;x
zDk>{Tyuv9`du0>ywXh03C1BlDsY-ioWoHeo(N at YN=9i2Y1U&<$)fS;)uPUI*($kn2
z3nL68a`R>V)>kF)+6D~^3laSDW*WN}x`*Ly!HXzsve<`hdP3;!7}F6YHqT@{KC7;!
z?#55l#bPZjb_o&zgPUbflV;eZAXcEY+u|5AHzgP8fm~r%g`J<=7xKomC6Njz^H^iI
zOc2r3f*7}cA1I at i6f=l%_~2D=3j;IA6!v=*EMPKqxer$smm5)aRUBt+#JIA~2I45c
zh~3NWh7QYdPlvhA!}|b@@qL00ay-#N>Om08#h4t$bXXNkA+j9I08p%dutpi$iy(Sr
zVNh+>gX(0u!db5z&OKLI-kROsM}9SEH`WY#cRiEOd*gO}jkg7VpVI+Px%Y^@q4w#g
zzXk$?zV`Hq*mH#6wHs??=<9alyzgq-(_ee>#S^>iGBkmqKX9YufT$ZK4_Z8BR$X14
zjk{{LMjp9%Y6}#3Cdk_y at b`Hu9p?a|u4a>lGv_!C%qJ=>QRY|<Mn(ZKhbj2HkJ=7u
zQdE^l{1H^gG at J3lW_{9ej at +Zkp9!1WaYSyOKk$SCM_`xHd1XtK=PNuC(PKg(1KdSn
zj*J4(vB0*-$%11Df<3npU<{OGLJVgN%Y#@RcG)72(R_lVT}j~BP>!nLQ1BqU5i)#M
z(|mYV&VeGn2xRy6<7p0HE~8-FgplEAW<Uf|>0C6henV$-E))}iSSlZ2hY^9u-V`D$
zn9C^6Af|u5ZjoXdaly+(layD1fn-hu<ZGTlE;@v;e1sCnq~-Q25RK#E5jQA-a4wD2
zL?EKT-C-z#l2Cslj0Dn%h at XJerefm31|p^V`)TArB-)#gxma<gVtAFL(Sdv~cNXI~
z_XCE98<k9S&|r8rh%6{2IzI}5eGEOBMott}Cu0nM8IbSr*v8qs<r_;Nn5f1bd35#g
zSd~gS`4$okKXBvNlIT{#b1^`DJg>hQaxZ8afNXJ;<;mka`fQ!&`PGQPH+qaqM;Us)
z?^DfDo%44=?h<see*#FEYQT1Qv`(2W?*-N(GVcS7qb%L6 at Mw?nOrPiZPoPliKr`tw
z-}F1-c?ZBS?*U$hTsOi at mo(;$E(VX)prr90p$V;?4d3Xa9Pt5oBgcD(RuFj~K{?)a
z7`eR&Gp|gC{b>|(tq2=u(q;cOa_m#{p?tq7BzTmgf3Qf7?{JTyfB(oR0gtw$dlcU2
zWB*O!y^Opnm)t^mN3<Mmz&?Bca&<(sGpauiochRm3fHqw;iARxC~CrAM3{1{D&BkY
ztuF0loRRwy2uAKC<W9~Y_thdfKDszHL%PpEjy7hx^6f9=x{&~BbWE4|_%^&rw-&4V
zT67MRC$MCg`1gwBc;7T1a&Zc1M;ZFF at J8Q$$nA$5>)$w|`yWAI`ph5SmmGrJbar_O
zeCjifa*K-yCioKwm at s8e;v$S~(m130XCM^IHQ^#{vk at xd{iY~Pb{=xgMFlZBN)a$&
z%KcTH5T}X=CdfD5CQP~Bdd$x(ymp4?pCtDei&eiga>jnmljJT!?(d8cpwYK_lH7 at F
z)mUOgja>UAxpyJgW`qEZ{m_hLof+2ZCLy*NB_Nt0VNtgc`&!T!(fArczaF0DVBh4J
zQDg>j2m|a#O(DTE`VgGrIG&TJUg4`Z><U*Yb9`2~N`d3B!c_viS5>$g%{Z<qT=f!j
zAL@}agBm9lUy8|lRfV$@>b_OsTx6*6P2n8ju{**zrf}7eI9 at 57ix71mr*Ldm;mjJs
zBVW6#aYpggsK)U`;j9(3`Ei`Ly=aHyI64iSxu^BWTVl+I=y#-h^ldWxwZi%GT?qDH
zg{znL@|_q6p7Gb|<PztL_k!~XycjHU9{C!+K=4c$c^RKOzJl{ic#Ti~H3cR at 9^s#a
z*G<AdGNIi#c+V{hqNRu{izotdzSTGOv~YvI1h}y$&cVeR;KrU7RuCP)&zajtEFyUg
zC*R2dTCh(NkZ<S!fX@?I2CxSqupvJ=ea>Ug>iS~(hk(m_Za}90XMmh%0DxDEF9R0m
z=bOOW^qQ0UCztm{M%0ewJ%_NVZ_B<?{1mt;zp&?sUr)lz(GgAivFut=1KhL^KgzcV
zINbqww!WJ*&h-uPO&Whp<2}InMv*;lF7g`zZu$f9d$c^*!ViD{B%I$3(3$TWz6hNC
zg*}_^^S`9|&A^#HziZ&Uk05ZLIH~#9Y5tEiZoYrGpmFoPfgeK(Pra1>`Qkb~xb4vK
zuh%$+VVT|r;D?IxvkkbhS2gT)r<VVymX`}Lg!z7h`F%k1pVj!6fIp(!(;R!A_&RVt
z at BD=1SBdAfy!oEuE#RiV at _UBgX}<ZsqFfKU$F=^2z#rH8DPO1gru;iJ{(UVU2VSf{
zt@*bi9p?WF8aLlxn0Ex``-`80zsA&uU4;u*M1ng3&-m8>H~Ut$2fiQWdXX~xzQSz%
zxWnPj2Imww$jRpNeSHYJZhOzx+uW|s?LGW{!reFlyQRH|6-m3e(CrN+UAY5tL-`>b
zEbz*kPpDR|Ua?#Z5G)mPf8s{+{r!7Q0>LdC3;GSR>9+NogRa4tm<boslAA7>mOKnW
zjyt-xZdl*tZr!wLd$7mtS-+tx$ego$*k0k?ntUEVfgryR5$?uaTh?#xY!}>~>8JE~
zQKdhsXltAH$@~nTo$!r<i;cDVV!^!2|IlBfxP1d|oFAMNe>|adPWPe8l&=HY+6tcm
ze9+^tX$!ct at P=gSS1`CV;KvG+4l!JO3NmiL3AyCAA?gZP)&`&J$)owgrz11u0V=a;
ze3+Ap;3ixblE#(0a+Yh#r2xM}nNeBcONkHoSVy*$>FuVIoFR<~#a7?9=<hTp=62>>
r7F!!PhadWB;|v)?vtPA(Re)`JAnfMi`P4mu-l5;~6%u=uP=@|L8>cBT

literal 0
HcmV?d00001

diff --git a/docs/examples/list_contacts/main.c b/docs/examples/list_contacts/main.c
new file mode 100644
index 0000000..0a8d397
--- /dev/null
+++ b/docs/examples/list_contacts/main.c
@@ -0,0 +1,139 @@
+/* Copyright 2008 Collabora Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <telepathy-glib/connection-manager.h>
+#include <telepathy-glib/connection.h>
+#include <glib/gprintf.h>
+
+GMainLoop *mainloop = NULL;
+
+
+
+int
+main (int argc, char **argv)
+{
+  g_type_init ();
+
+  /* Create the main loop: */
+  mainloop = g_main_loop_new (NULL, FALSE);
+
+  TpDBusDaemon *bus_daemon = tp_dbus_daemon_new (tp_get_bus ());
+
+  /* Get the connection manager: */
+  GError *error = NULL;
+  TpConnectionManager *connection_manager = 
+    tp_connection_manager_new (bus_daemon, "gabble", NULL, &error);
+  if (error)
+    {
+      g_printf ("tp_connection_manager_new() failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  /* Get the connection : */
+  gchar* service_name = NULL;
+  gchar* dbus_path = NULL;
+  GHashTable *parameters = g_hash_table_new (NULL, NULL);
+
+  GValue value_account = { 0, };
+  g_value_init (&value_account, G_TYPE_STRING);
+  g_value_set_static_string (&value_account, "murrayc at murrayc.com");
+  g_hash_table_insert (parameters, "account", &value_account);
+
+  GValue value_password = { 0, };
+  g_value_init (&value_password, G_TYPE_STRING);
+  g_value_set_static_string (&value_password, "passwordTODO");
+  g_hash_table_insert (parameters, "password", &value_password);
+
+  gboolean success = 
+    tp_cli_connection_manager_run_request_connection (connection_manager, 
+      -1, /* timeout */
+     "jabber", /* in_Protocol */
+     parameters, /* in_Parameters */
+     &service_name, /* out0 */
+     &dbus_path, /* out1 */
+     &error, 
+     NULL /* mainloop */);
+
+  g_value_unset (&value_account);
+  g_value_unset (&value_password);
+  g_hash_table_unref (parameters);
+
+
+  TpConnection *connection = tp_connection_new (bus_daemon, service_name, dbus_path, &error);
+  if (error)
+    {
+      g_printf ("tp_connection_new() failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  g_free (service_name);
+  g_free (dbus_path);
+
+  if(!success)
+    g_printf("tp_cli_connection_manager_run_request_connection() failed.\n");
+
+  if (error)
+    {
+      g_printf ("tp_cli_connection_manager_run_request_connection() error: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  g_printf("DEBUG: Connection created.\n");
+
+  /* Connect the connection: */
+  success = tp_cli_connection_run_connect (connection, -1, &error, NULL);
+
+  if(!success)
+    g_printf("tp_cli_connection_run_connect () failed.\n");
+
+  if (error)
+    {
+      g_printf ("tp_cli_connection_run_connect () failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  /* Disconnect the connection.
+     Otherwise it will be orphaned. */
+  success = tp_cli_connection_run_disconnect (connection, 
+    -1, /* timeout */
+   &error,
+   NULL);
+
+  g_printf("DEBUG: Connection connected.\n");
+
+
+  if(!success)
+    g_printf("tp_cli_connection_run_disconnect() failed.\n");
+
+  if (error)
+    {
+      g_printf ("tp_cli_connection_run_disconnect() failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  g_printf("DEBUG: Connection disconnected.\n");
+
+
+  g_object_unref (connection);
+  g_object_unref (connection_manager);
+
+  /* Start the main loop, and clean up when it finishes. */
+  g_main_loop_run (mainloop);
+  g_main_loop_unref (mainloop);
+  g_object_unref (bus_daemon);
+
+  return 0;
+}
diff --git a/docs/examples/list_contacts/main.c~ b/docs/examples/list_contacts/main.c~
new file mode 100644
index 0000000..0a8d397
--- /dev/null
+++ b/docs/examples/list_contacts/main.c~
@@ -0,0 +1,139 @@
+/* Copyright 2008 Collabora Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <telepathy-glib/connection-manager.h>
+#include <telepathy-glib/connection.h>
+#include <glib/gprintf.h>
+
+GMainLoop *mainloop = NULL;
+
+
+
+int
+main (int argc, char **argv)
+{
+  g_type_init ();
+
+  /* Create the main loop: */
+  mainloop = g_main_loop_new (NULL, FALSE);
+
+  TpDBusDaemon *bus_daemon = tp_dbus_daemon_new (tp_get_bus ());
+
+  /* Get the connection manager: */
+  GError *error = NULL;
+  TpConnectionManager *connection_manager = 
+    tp_connection_manager_new (bus_daemon, "gabble", NULL, &error);
+  if (error)
+    {
+      g_printf ("tp_connection_manager_new() failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  /* Get the connection : */
+  gchar* service_name = NULL;
+  gchar* dbus_path = NULL;
+  GHashTable *parameters = g_hash_table_new (NULL, NULL);
+
+  GValue value_account = { 0, };
+  g_value_init (&value_account, G_TYPE_STRING);
+  g_value_set_static_string (&value_account, "murrayc at murrayc.com");
+  g_hash_table_insert (parameters, "account", &value_account);
+
+  GValue value_password = { 0, };
+  g_value_init (&value_password, G_TYPE_STRING);
+  g_value_set_static_string (&value_password, "passwordTODO");
+  g_hash_table_insert (parameters, "password", &value_password);
+
+  gboolean success = 
+    tp_cli_connection_manager_run_request_connection (connection_manager, 
+      -1, /* timeout */
+     "jabber", /* in_Protocol */
+     parameters, /* in_Parameters */
+     &service_name, /* out0 */
+     &dbus_path, /* out1 */
+     &error, 
+     NULL /* mainloop */);
+
+  g_value_unset (&value_account);
+  g_value_unset (&value_password);
+  g_hash_table_unref (parameters);
+
+
+  TpConnection *connection = tp_connection_new (bus_daemon, service_name, dbus_path, &error);
+  if (error)
+    {
+      g_printf ("tp_connection_new() failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  g_free (service_name);
+  g_free (dbus_path);
+
+  if(!success)
+    g_printf("tp_cli_connection_manager_run_request_connection() failed.\n");
+
+  if (error)
+    {
+      g_printf ("tp_cli_connection_manager_run_request_connection() error: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  g_printf("DEBUG: Connection created.\n");
+
+  /* Connect the connection: */
+  success = tp_cli_connection_run_connect (connection, -1, &error, NULL);
+
+  if(!success)
+    g_printf("tp_cli_connection_run_connect () failed.\n");
+
+  if (error)
+    {
+      g_printf ("tp_cli_connection_run_connect () failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  /* Disconnect the connection.
+     Otherwise it will be orphaned. */
+  success = tp_cli_connection_run_disconnect (connection, 
+    -1, /* timeout */
+   &error,
+   NULL);
+
+  g_printf("DEBUG: Connection connected.\n");
+
+
+  if(!success)
+    g_printf("tp_cli_connection_run_disconnect() failed.\n");
+
+  if (error)
+    {
+      g_printf ("tp_cli_connection_run_disconnect() failed: %s\n", error->message);
+      g_clear_error (&error);
+    }
+
+  g_printf("DEBUG: Connection disconnected.\n");
+
+
+  g_object_unref (connection);
+  g_object_unref (connection_manager);
+
+  /* Start the main loop, and clean up when it finishes. */
+  g_main_loop_run (mainloop);
+  g_main_loop_unref (mainloop);
+  g_object_unref (bus_daemon);
+
+  return 0;
+}
diff --git a/docs/examples/list_contacts/main.o b/docs/examples/list_contacts/main.o
new file mode 100644
index 0000000000000000000000000000000000000000..7878d667d7e2b7c66c63e6365187cb5f9264a4ac
GIT binary patch
literal 8204
zcmb7JeQX at n5ue>#pYO}(Bz8y~(&U2A!4!NpA)z5a2(b^>kPnB%l<#AGUY`%nx8`oo
zN%&Ai2&l%5z=)!%t<+YPD6N`M1gbzlg$h!jY9-WG6 at R1%392HLKLQFAsiEm_-pAhh
z;s|(=Z{BZa-psr=v+up#9LR3F&M*wp&7cs~5z(tlrDVMz-L#yR(&24s>){Vip1Jq*
z$jrZXJ$%CZ==7O0XO0b|Emk^arI`rcFa6$(l@^?t>=(zfr<i>>dunDNoxrdNLp^*p
z`$b*%<ZSlTBd>dFKxVf at pl-oBs|#CfL76?4Jt2%_KML9khBA}=@L2XOsq|+_-jU?*
zlDsPjTx>z-aP}?VG+2G}Su91^9P$7pv)K=Q<?M at K(6Q`GlDsO(>yo at Fi0|S>e-v2T
zAUmA(S=?1FZh<7|Vj#Ve?a1|8emMIP6x$DHPk=09J+-K#(BTM?nlrQ6liJrz_Wi)*
z0v-b{W=B4n-F`wPXl743GJ}lIOU&_w5>tZ5#>C7bE|sHMM5?+EKlnb?5=hSv^pJ(@
zakd)mVN4kHDcG1 at 0xD`HL^|YTk83}etnVtVhb`o4SPO$S^>xf6o(J_<-_=hwXCYT_
zX<^WnmHtArXS06zfwcXCC#t744+Qceitgbzy<6@$Y at dFEjKxM*q%9tboF7?iEHM^^
ziOe*`<D0=E3Y|xx$fo#}@u4;%JhRLvYHCG?D9nTf&1;ECq|FFL;&E0t0HZDb*o`rw
zSR3F~$VFV)Y~nEqe at qjPX;EV!<1xu)M%`X(-5${*!x(Dg5sTNrcQ2w at vOxsV2Cbxw
zm at Tx|2gTzp at kE@NORa#}^STk&$`+z!8RMFSob82)p*CKPEn#-Cyvd&kQO9~8m at u`X
z4zEctgAU at y<V28V4DJ|7^{3Wn)@9bGx<^K9Wv?bt&!shiF1v_~NxN9i<f(VUopgF9
zYn6(<Ki^xOF83D7;H+EM*XubYXUg^__V<jr`Cj~0d!2pu<W$M2_LhoOFPC at Ao}Krq
z!tJj at f{<x770Vt-bFEx07Rt_8N?;?bP=3O$kZDAGv1FJ{)d{!aNoBKH0$+zsgbFo~
z%hr*Zc>=yd1)$5<lewNx1vAoAa?6F3_^E5Nd_zjeo9prhv(@5#4w+losAV;qMp#A^
zvBuomXvv`_3zG^M7UEFP^)MSMFrPxbcM2dJ_sxjtMqRh$*kuY`dPvA>Qgg#mj>eMF
zGz7x)qtNAYcH<@22HN<Z(6<yUsF*@m+$gM0xftVAD75W%;INfI5j5W|y8Ig&+*PwH
z_mH*r0}g61TdBAeYD!%OwMb6EL{n-SI6CHXQBYHQ8IajY(Y!l`*>`dLW~UXMbgEUm
z0M6RQLLmZwUFd}^u at r*?wr5j#?c-p at auOM#!SCADi9I&2WAlZ-k)k>a^6l`s&2^_J
zvgU0m_Blq_Iw<V_2)|~+5;;%{5FgyLf6Ae#YivSz at xhzyQVp<bBvFWooWkv3Yyl%$
z$a$<Db3b8InA;c!8+%|kE(Vwz46wQWl3lG*blTW0jnsJ-nD>L(q6|eJGn6GYbf{eQ
z>~bC<>@()-qkXmo{%g`eUV3>-V8nt2<QS8YScSuBoz8I`#HzgR0HP{l-Ww8$DvH(i
zDw%}SKbH{WQ1P+7pCZ|6B;$RHrC8QbZ2vnFs+El0_iu at HEyeEt91L3Y27<~Xpv8lL
z1})(TLW4U;?{@MY#b4SB5o$=`MEs>=V5o)04AgSOPw}$xidUR*Y#G>%DE=Qd%O!QM
zNJIRKe~7F^C^WFORvqkj%Vqc|x at AhNeGjU!TqEBI?U`cUfbC2|tz~sn6RXW*vd(bD
z-M4?ZQk=Fuhg#NLthDB_eLZUF+y;dR%m at Waw{(6C26kg)e&d7)8l^K at tLDa(<11Og
z>`X{5wnQCy%T*_ZWKopW%l0JvUo9V;_NXfsF~{30wQQE$<<Vk!+AbBbB+eMMY~g3p
z>|7b0LiE(K^>bk at g<|;xafET*<lm*>Vw&|8+isWfj8-VQY8ehyp32#>^~qK5K`5q`
z9JyK;rl<%p`Mt1kn}%E0bMtPgO39m_#i49=cDGk*<#G}GUGml^Pz#o^+U&ff-7f95
z_gA at QD{gg)Ya at A^6t7}&u{`ePs&1`<XCrz0ldxo&D_Kx+s!nCv8Ox2A>;k;p!S!XW
zgriI3oRhgf2)}&`&QK>cnWAQy`m-jgRXD+C3+;+MNy!bHF?zve8Wsxa<c8Owp;qS#
znJQHSe4^Q2t%8Ydk^(C_=8W65l9xj!u^%O`JR>VRswR0APtwn7ax*_^W at qXgGn5&i
z<h381Gf0&sN+hq{h}BYYW_6rXJP9oBbu8p3PE=EJNc!a+d=*SDwUXO8Gw1CY&h>B4
z4ehvYXKwe-ksJH7xg9%qWET`%H?%EF#sVX at 4c(N*U4++s`w)`9TjhS&W_So&NAcVI
zg6O`?U0&U=#q}7rPB&IFwXS*(O7rtW-L0#ZL{<H^UZU$)%&fI%01~q^J%2 at YCA6;Y
zftdG+dOc_vP8+rww*CZ<%ftnVjPs2de)!S!1!ojDt>t#5kSAjW%eX&{KJz;QJA<)C
z><n{L9gaA3jkI{6=Sm%Uf0M{fs;AZHdJ|5~xrq*bCW?7SZWu;J<Z*7SL+m+XyD)ks
z at 2(D!TL-6qm5jdQTxWB)cZj;n*?GCs8tX*;&23TqDV%S6-O3ml-(f*$?zaazs<nI`
zCp#He at l$Kg-5dyzj2o`UnwWEYur3c^#0tJ5l=!$dmL9;2jVA2wyl5{$NO2B=_%Jez
z|0Y}TE8gE3_qtPF{cc$*j`kMt)3Ywq*IO*-OEugy=Bp at fU5)j>Qb%sA=TPHC?70*k
zxpNMk`mL80>qvMfo;_~OXpE7_ at nRt}fy0pse7~rok0mJF%a<<I7ui>RKJBWGr_cm$
zMyf09%CT$*Tr6ur<WlwJ#3T^&-~a$|3Sg(+w;x?RJoVD*QKi+$ml$tToG%KkFd}WY
zMGk#7ZFaRyM{fCDtrnRuJKG|?`1hphgkq5=%&qN5jywkjl%6|swD2m^*UYYV(R<$P
zTK1aa9eM8Uw~yXpMv;6>!5-zCA9+*!wxEtiUG=%Lv$y-A)VN(NIb)krUDX(=7m+QB
zX7cVN=~~vcyJzRXPSSwxh6fyXX!CuXZJXt#;zDuYSj$zMduxt-sZnA2p=Dyi_BR|W
z at -AmJkli{mxGB}|uRtnaarl&nWf}K;+Z>Ntu2e9JudRDdw=x3h`0VvyzhlL!avk*i
zwRNRuI(x=-yK36B2y^F;A_f@`L=u+uebmcFPNZtQ;aVtfN*ENi3=1a&LCu01?#hpt
z7FTdflfZ|>E(CqBO!CAqUR#59F~N(vU^B%#H}@k<*@a0pY`wCjLBw-Gk7C#`c0PVE
zX#&9C_gIs^a!EaQD4RYX7-462aL=W|{{Bs=ZoH3Q^cAn;l&S8Y^z2bkuOjJ$?p2&p
z#&h<0lo6NZ%qaHi%$PG;E96l76=#|<tRgvl+X~`RvFrf5a%f#|9M=K}<e-w95006t
zjq+U(Uh4X|MwAQ8k|Pis at xwXE)6A4z&&gnxJ-GAd?@{aVwa98{aXvY>+}7hSxR82z
z&j%mb at Y_@0B07nI=YhlHS&y^WrLZaoI<7n5bJO-NMxXVynDw+QsMiO;_H|>uT>*yf
zZiRyGvu+ReVlE-wv}`jN!Fe3Q0^AH9&x6-M&*Mh)^%!*Ng;u=K$%<p>%XXk2w09i#
zcwTIeskV0~`fN{|cylo>D;g+05V{+GLBH?g9buRSs_8Wv2M+rE5Ptc2X21N9X}^2X
z58CT%C+Y`JH!XV<4Bcm06?)xTDIhzDe$el!z<iUCX}>=Xj6s)v0(&X$sHS~A4IH$0
zIxr8OkGA(~^z|4v at e1tW-s(3kdl4MnXW<{A_ibORE_<y(?*#OMP1``4{2FCB>-{C5
zsP&iz(n$|=U=spk8Tfi0OnI)l=Fz1Sc(9(;Mt}od7W*y8x9F2Iz5t#1|0}~d=z+1W
z8aXP&7nMK@`A@%=bLG}shyo81*dbA2K{;>b^%f$ognA2!6$s)bb%0)o<}ZE-FUC3o
zj(joV=R9!Zy=e(niR)Z9Ue^mW0A;+c0bkvKhZ`_Ice?R-`At=F7(b+ipp2hvz&~ri
zFE`*|&G7jDHOO(q`i<qQ8}OwKcw+;;sR8rnDc#uKqYe1!2COgE{wXWYUHPpIUlxiU
z6>w`TmUH~-!S_bKkrf;-#}|2Y#p{v$B%`GZ-#1|g?}=q^9GyJA&sK8s?W~aF+jtH~
zZwc>SuwRgG at Y=b2t-{?shcnJA=0RYl0JXq4eDrcE-Z#E1`o8cv*x{K5OxDWyY$h!F
zmq!)ec*SuRa22>ao<mx{iNTfn5GCCN*BEvnuCKY&;3vn#&swH98~7YGkl;SXc#Qb|
zX5#;4`9B5?JVaxR at vt0F_z+`kN{=&LPV_ue>{TB#T|x9ID3AM+G4>{|OUBDUP29S+
zGlkxW;@`y>dalCvF^1kV3ct)4cZFk2R}uYH(SI_<UjHT26kg)7SF)dPfpUD^Oc5V{
zCpXs+ZC3OKP}Un}47~}3Cl%hu6ypvk{vpMGhUo=FzgPTM6#s7uzpL;EOfjC{s`<-s
zD=7PGXAFO96ke<FW`+9|-oX^(M-=~7#dnydaV98QV>$BnAY)vb4l4W at V<h*7Oram<
zd|<nNkSSt&NYO`_;sCr8G6UQ11}HN946!o369*0Jk19IO6x;ay_+!6Eu<k5JsANFK
P7iz}BAAU52s^I at 0s3t8O

literal 0
HcmV?d00001

diff --git a/docs/examples/list_contacts/main_half.c b/docs/examples/list_contacts/main_half.c
new file mode 100644
index 0000000..15786dd
--- /dev/null
+++ b/docs/examples/list_contacts/main_half.c
@@ -0,0 +1,112 @@
+/* Copyright 2008 Collabora Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <telepathy-glib/connection-manager.h>
+#include <glib/gprintf.h>
+
+GMainLoop *mainloop = NULL;
+
+static void
+on_list_connection_managers(TpConnectionManager * const *connection_manager,
+                            gsize n_cms,
+                            const GError *error,
+                            gpointer user_data,
+                            GObject *weak_object)
+{
+  if (error != NULL)
+    {
+      g_warning ("%s", error->message);
+      
+      /* Stop the mainloop so the program finishes: */
+      g_main_loop_quit (mainloop);
+      return;
+    }
+
+  g_printf ("Found %" G_GSIZE_FORMAT " connection managers:\n", n_cms);
+
+  //TODO: See http://bugs.freedesktop.org/show_bug.cgi?id=17115
+  //about the awkwardness of these pointers to pointers:
+  TpConnectionManager * const *cm_iter = connection_manager;
+  for (; cm_iter != NULL; ++cm_iter)
+    {
+      const TpConnectionManager *cm = *cm_iter;
+      if (!cm)
+        continue;
+
+      //TODO: The protocols really shouldn't be const.
+      //const shouldn't be used for complex types in C because C doesn't have full const support.
+      //For instance, g_object_get() takes a non-const, so this causes a warning:
+      gchar *cm_name = NULL;
+      g_object_get (G_OBJECT(cm),
+        "connection-manager", &cm_name,
+        NULL);
+
+      g_printf ("  Connection Manager name: %s\n", cm_name);
+      g_free (cm_name);
+      cm_name = NULL;
+      continue;
+
+#if 0
+      //TODO: See http://bugs.freedesktop.org/show_bug.cgi?id=17112
+      //about the lack of real API for this:
+      //Note that it's an array of pointers, not a pointer to an array
+      //(unlike the connection_manager array above.)
+      const TpConnectionManagerProtocol * const *protocols = cm->protocols;
+      const TpConnectionManagerProtocol * const *protocols_iter = protocols;
+      for (; protocols_iter != NULL; ++protocols_iter)
+        {
+          if(!protocols_iter)
+            continue;
+
+          const TpConnectionManagerProtocol *protocol = *protocols_iter;
+          if (protocol)
+            {
+              if(protocol->name)
+                g_printf ("    Protocol name: %s\n", protocol->name);
+            }
+        }
+#endif
+
+
+    }
+
+  /* Stop the mainloop so the program finishes: */
+  g_main_loop_quit (mainloop);
+}
+
+int
+main (int argc, char **argv)
+{
+  g_type_init ();
+
+  /* Create the main loop: */
+  mainloop = g_main_loop_new (NULL, FALSE);
+
+  TpDBusDaemon *bus_daemon = tp_dbus_daemon_new (tp_get_bus ());
+
+  tp_list_connection_managers (bus_daemon, &on_list_connection_managers, 
+    NULL /* user_data */, NULL /* destroy callback */, NULL);
+
+
+  /* tp_list_connection_names (bus_daemon, got_connections, &data, NULL, NULL); */
+
+  /* Start the main loop, and clean up when it finishes. */
+  g_main_loop_run (mainloop);
+  g_main_loop_unref (mainloop);
+  g_object_unref (bus_daemon);
+
+  return 0;
+}
diff --git a/docs/examples/list_contacts/main_working.c b/docs/examples/list_contacts/main_working.c
new file mode 100644
index 0000000..6232741
--- /dev/null
+++ b/docs/examples/list_contacts/main_working.c
@@ -0,0 +1,101 @@
+/* Copyright 2008 Collabora Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <telepathy-glib/connection-manager.h>
+#include <glib/gprintf.h>
+
+GMainLoop *mainloop = NULL;
+
+static void
+on_list_connection_managers(TpConnectionManager * const *connection_manager,
+                            gsize n_cms,
+                            const GError *error,
+                            gpointer user_data,
+                            GObject *weak_object)
+{
+  if (error != NULL)
+    {
+      g_warning ("%s", error->message);
+      
+      /* Stop the mainloop so the program finishes: */
+      g_main_loop_quit (mainloop);
+      return;
+    }
+
+  g_printf ("Found %" G_GSIZE_FORMAT " connection managers:\n", n_cms);
+
+  //TODO: See http://bugs.freedesktop.org/show_bug.cgi?id=17115
+  //about the awkwardness of these pointers to pointers:
+  TpConnectionManager * const *cm_iter = connection_manager;
+  for (; *cm_iter != NULL; ++cm_iter)
+    {
+      TpConnectionManager * cm = *cm_iter;
+      //TODO: The protocols really shouldn't be const.
+      //const shouldn't be used for complex types in C because C doesn't have full const support.
+      //For instance, g_object_get() takes a non-const, so this causes a warning:
+      gchar *cm_name = NULL;
+
+      g_object_get (G_OBJECT(cm),
+        "connection-manager", &cm_name,
+        NULL);
+
+      g_printf ("  Connection Manager name: %s\n", cm_name);
+
+      g_free (cm_name);
+
+      //TODO: See http://bugs.freedesktop.org/show_bug.cgi?id=17112
+      //about the lack of real API for this:
+      //Note that it's an array of pointers, not a pointer to an array
+      //(unlike the connection_manager array above.)
+      TpConnectionManagerProtocol * const *protocols;
+
+      for (protocols = (TpConnectionManagerProtocol * const *)cm->protocols;
+          protocols != NULL && *protocols != NULL; ++protocols)
+        {
+          TpConnectionManagerProtocol *protocol = *protocols;
+          if (protocol->name)
+            g_printf ("    Protocol name: %s\n", protocol->name);
+        }
+
+    }
+
+  /* Stop the mainloop so the program finishes: */
+  g_main_loop_quit (mainloop);
+}
+
+int
+main (int argc, char **argv)
+{
+  g_type_init ();
+
+  /* Create the main loop: */
+  mainloop = g_main_loop_new (NULL, FALSE);
+
+  TpDBusDaemon *bus_daemon = tp_dbus_daemon_new (tp_get_bus ());
+
+  tp_list_connection_managers (bus_daemon, &on_list_connection_managers, 
+    NULL /* user_data */, NULL /* destroy callback */, NULL);
+
+
+  /* tp_list_connection_names (bus_daemon, got_connections, &data, NULL, NULL); */
+
+  /* Start the main loop, and clean up when it finishes. */
+  g_main_loop_run (mainloop);
+  g_main_loop_unref (mainloop);
+  g_object_unref (bus_daemon);
+
+  return 0;
+}
diff --git a/docs/examples/list_contacts/temp.patch b/docs/examples/list_contacts/temp.patch
new file mode 100644
index 0000000..b0dfc7a
--- /dev/null
+++ b/docs/examples/list_contacts/temp.patch
@@ -0,0 +1,60 @@
+--- main.c	2008-08-18 11:55:37.000000000 +0200
++++ main_working.c	2008-08-18 11:40:07.000000000 +0200
+@@ -40,46 +40,35 @@ on_list_connection_managers(TpConnection
+   //TODO: See http://bugs.freedesktop.org/show_bug.cgi?id=17115
+   //about the awkwardness of these pointers to pointers:
+   TpConnectionManager * const *cm_iter = connection_manager;
+-  for (; cm_iter != NULL; ++cm_iter)
++  for (; *cm_iter != NULL; ++cm_iter)
+     {
+-      const TpConnectionManager *cm = *cm_iter;
+-      if (!cm)
+-        continue;
+-
++      TpConnectionManager * cm = *cm_iter;
+       //TODO: The protocols really shouldn't be const.
+       //const shouldn't be used for complex types in C because C doesn't have full const support.
+       //For instance, g_object_get() takes a non-const, so this causes a warning:
+       gchar *cm_name = NULL;
++
+       g_object_get (G_OBJECT(cm),
+         "connection-manager", &cm_name,
+         NULL);
+ 
+       g_printf ("  Connection Manager name: %s\n", cm_name);
++
+       g_free (cm_name);
+-      cm_name = NULL;
+-      continue;
+ 
+-#if 0
+       //TODO: See http://bugs.freedesktop.org/show_bug.cgi?id=17112
+       //about the lack of real API for this:
+       //Note that it's an array of pointers, not a pointer to an array
+       //(unlike the connection_manager array above.)
+-      const TpConnectionManagerProtocol * const *protocols = cm->protocols;
+-      const TpConnectionManagerProtocol * const *protocols_iter = protocols;
+-      for (; protocols_iter != NULL; ++protocols_iter)
+-        {
+-          if(!protocols_iter)
+-            continue;
++      TpConnectionManagerProtocol * const *protocols;
+ 
+-          const TpConnectionManagerProtocol *protocol = *protocols_iter;
+-          if (protocol)
+-            {
+-              if(protocol->name)
+-                g_printf ("    Protocol name: %s\n", protocol->name);
+-            }
++      for (protocols = (TpConnectionManagerProtocol * const *)cm->protocols;
++          protocols != NULL && *protocols != NULL; ++protocols)
++        {
++          TpConnectionManagerProtocol *protocol = *protocols;
++          if (protocol->name)
++            g_printf ("    Protocol name: %s\n", protocol->name);
+         }
+-#endif
+-
+ 
+     }
+ 
-- 
1.5.6.5




More information about the Telepathy-commits mailing list