From 2801e9ffffb6465c7414c5beed90d5cf484acbd0 Mon Sep 17 00:00:00 2001 From: Marcin Banasiak Date: Mon, 5 Feb 2007 10:19:10 +0000 Subject: [PATCH] - adds support for pilot-link 0.12 Changed files: evolution-pilot-link-0.12.patch -> 1.1 --- evolution-pilot-link-0.12.patch | 941 ++++++++++++++++++++++++++++++++ 1 file changed, 941 insertions(+) create mode 100644 evolution-pilot-link-0.12.patch diff --git a/evolution-pilot-link-0.12.patch b/evolution-pilot-link-0.12.patch new file mode 100644 index 0000000..e7c6ae8 --- /dev/null +++ b/evolution-pilot-link-0.12.patch @@ -0,0 +1,941 @@ +Index: acinclude.m4 +=================================================================== +RCS file: /cvs/gnome/evolution/acinclude.m4,v +retrieving revision 1.9 +diff -u -r1.9 acinclude.m4 +--- acinclude.m4 12 Jun 2006 12:52:02 -0000 1.9 ++++ acinclude.m4 17 Nov 2006 07:29:48 -0000 +@@ -268,3 +268,119 @@ + AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes) + AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL") + ]) ++ ++# PILOT_LINK_CHECK ++# Adds --with-pisock and determines the verion of the pisock ++# ++ ++AC_SUBST(PISOCK_CFLAGS) ++AC_SUBST(PISOCK_LIBS) ++ ++AC_DEFUN([PILOT_LINK_HOOK],[ ++ AC_ARG_WITH(pisock, ++ [ --with-pisock Specify prefix for pisock files],[ ++ if test x$withval = xyes; then ++ dnl Note that an empty true branch is not valid sh syntax. ++ ifelse([$1], [], :, [$1]) ++ else ++ PISOCK_CFLAGS="-I$withval/include" ++ incdir="$withval/include" ++ PISOCK_LIBS="-L$withval/lib -lpisock -lpisync" ++ AC_MSG_CHECKING("for existance of $withval/lib/libpisock.so") ++ if test -r $withval/lib/libpisock.so; then ++ AC_MSG_RESULT(yes) ++ else ++ AC_MSG_ERROR([Unable to find libpisock. Try http://www.pilot-link.org.]) ++ fi ++ fi ++ ]) ++ ++ if test x$PISOCK_CFLAGS = x; then ++ AC_CHECK_HEADER(pi-version.h, [incdir="/usr/include"], [ ++ AC_CHECK_HEADER(libpisock/pi-version.h, [PISOCK_CFLAGS="-I/usr/include/libpisock" ++ piversion_include="libpisock/pi-version.h" ++ incdir="/usr/include/libpisock" ++ ], [ ++ AC_CHECK_HEADER($prefix/include/pi-version.h, [PISOCK_CFLAGS="-I$prefix/include/libpisock" ++ piversion_include="$prefix/include/pi-version.h" ++ if test x$PISOCK_LIBDIR = x; then ++ incdir="$prefix/include" ++ PISOCK_LIBS="-L$prefix/lib -lpisock -lpisync" ++ fi ], ++ AC_MSG_ERROR([Unable to find pi-version.h])) ++ ]) ++ ]) ++ fi ++ ++ if test "x$PISOCK_LIBS" = "x"; then ++ AC_CHECK_LIB(pisock, pi_accept, [ PISOCK_LIBS="-lpisock -lpisync"], ++ [ AC_MSG_ERROR([Unable to find libpisock. Try http://www.pilot-link.org.]) ]) ++ fi ++ ++ AC_ARG_ENABLE(pilotlinktest, ++ [ --enable-pilotlinktest Test for correct version of pilot-link], ++ [testplversion=$enableval], ++ [ testplversion=yes ] ++ ) ++ ++ if test x$piversion_include = x; then ++ piversion_include="pi-version.h" ++ fi ++ ++ pi_major=`cat $incdir/pi-version.h|grep '#define PILOT_LINK_VERSION'|sed 's/#define PILOT_LINK_VERSION \([[0-9]]*\)/\1/'` ++ pi_minor=`cat $incdir/pi-version.h|grep '#define PILOT_LINK_MAJOR'|sed 's/#define PILOT_LINK_MAJOR \([[0-9]]*\)/\1/'` ++ pi_micro=`cat $incdir/pi-version.h|grep '#define PILOT_LINK_MINOR'|sed 's/#define PILOT_LINK_MINOR \([[0-9]]*\)/\1/'` ++ pi_patch=`cat $incdir/pi-version.h|grep '#define PILOT_LINK_PATCH'|sed 's/#define PILOT_LINK_PATCH \"\(.*\)\"/\1/'` ++ ++ PILOT_LINK_MAJOR="$pi_major" ++ PILOT_LINK_MINOR="$pi_minor" ++ PILOT_LINK_MICRO="$pi_micro" ++ PILOT_LINK_PATCH="$pi_patch" ++ PILOT_LINK_VERSION="$pi_major.$pi_minor.$pi_micro$pi_patch" ++ ++ if test x$testplversion = xyes; then ++ AC_MSG_CHECKING([for pilot-link version >= $1]) ++ pl_ma=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` ++ pl_mi=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` ++ pl_mc=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` ++ CFLAGS_save="$CFLAGS" ++ CFLAGS="$CFLAGS $PISOCK_CFLAGS" ++ AC_TRY_RUN( ++ [ ++ #include <$piversion_include> ++ int main(int argc,char *argv[]) { ++ if (PILOT_LINK_VERSION == $pl_ma) { ++ if (PILOT_LINK_MAJOR == $pl_mi) { ++ if (PILOT_LINK_MINOR >= $pl_mc) { ++ return 0; ++ } ++ } else if (PILOT_LINK_MAJOR > $pl_mi) { ++ return 0; ++ } ++ } else if (PILOT_LINK_VERSION > $pl_ma) { ++ return 0; ++ } ++ return 1; ++ } ++ ], ++ [AC_MSG_RESULT([yes (found $PILOT_LINK_VERSION)])], ++ [AC_MSG_ERROR([pilot-link >= $1 required])], ++ [AC_MSG_WARN([No action taken for crosscompile])] ++ ) ++ CFLAGS="$CFLAGS_save" ++ fi ++ ++ unset piversion_include ++ unset pi_verion ++ unset pi_major ++ unset pi_minor ++ unset pi_patch ++ unset incdir ++ unset pl_mi ++ unset pl_ma ++ unset pl_ve ++]) ++ ++AC_DEFUN([PILOT_LINK_CHECK],[ ++ PILOT_LINK_HOOK($1,[],nofailure) ++]) +Index: configure.in +=================================================================== +RCS file: /cvs/gnome/evolution/configure.in,v +retrieving revision 1.920 +diff -u -r1.920 configure.in +--- configure.in 14 Nov 2006 17:45:52 -0000 1.920 ++++ configure.in 17 Nov 2006 07:29:48 -0000 +@@ -606,8 +606,22 @@ + fi + fi + AM_CONDITIONAL(ENABLE_PILOT_CONDUITS, test "x$enable_pilot_conduits" = "xyes") +-if test x$enable_pilot_conduits = xyes; then +- msg_pilot=yes ++dnl ****************************** ++dnl If pilot conduits are enabled, check version of pilot-link ++dnl ****************************** ++ if test x$enable_pilot_conduits = xyes; then ++ msg_pilot=yes ++ ++ PILOT_LINK_CHECK(0.11.4) ++ AC_SUBST(PILOT_LINK_MAJOR) ++ AC_SUBST(PILOT_LINK_MINOR) ++ AC_SUBST(PILOT_LINK_MICRO) ++ AC_SUBST(PILOT_LINK_PATCH) ++ AC_SUBST(PILOT_LINK_VERSION) ++ ++ if test $PILOT_LINK_MINOR -ge 12; then ++ AC_DEFINE(PILOT_LINK_0_12,,[Building against pilot-link 0.12.0 or greater]) ++ fi + else + msg_pilot=no + fi +Index: addressbook/conduit/address-conduit.c +=================================================================== +RCS file: /cvs/gnome/evolution/addressbook/conduit/address-conduit.c,v +retrieving revision 1.88 +diff -u -r1.88 address-conduit.c +--- addressbook/conduit/address-conduit.c 6 Dec 2005 08:43:37 -0000 1.88 ++++ addressbook/conduit/address-conduit.c 17 Nov 2006 07:29:48 -0000 +@@ -462,6 +462,9 @@ + { + static char buff[ 4096 ]; + struct Address addr; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + if (remote == NULL) { + sprintf (buff, "[NULL]"); +@@ -469,7 +472,21 @@ + } + + memset (&addr, 0, sizeof (struct Address)); ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ unpack_Address (&addr, buffer, address_v1); ++ pi_buffer_free(buffer); ++#else + unpack_Address (&addr, remote->record, remote->length); ++#endif + + g_snprintf (buff, 4096, "['%s' '%s' '%s']", + addr.entry[entryLastname] ? +@@ -792,6 +809,9 @@ + { + GnomePilotRecord p; + static char record[0xffff]; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + g_assert (local->addr != NULL ); + +@@ -804,9 +824,25 @@ + p.secret = local->local.secret; + + /* Generate pilot record structure */ ++ ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return p; ++ } ++ ++ pack_Address (local->addr, buffer, address_v1); ++ ++ p.record = g_new0(unsigned char, buffer->used); ++ p.length = buffer->used; ++ memcpy(p.record, buffer->data, buffer->used); ++ ++ pi_buffer_free(buffer); ++#else + p.record = record; + p.length = pack_Address (local->addr, p.record, 0xffff); +- ++#endif + return p; + } + +@@ -834,16 +870,34 @@ + */ + if (local->local.ID != 0) { + struct Address addr; +- char record[0xffff]; + int cat = 0; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * record; ++ record = pi_buffer_new(DLP_BUF_SIZE); ++ if(record == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return; ++ } ++#else ++ char record[0xffff]; ++#endif + + if (dlp_ReadRecordById (ctxt->dbi->pilot_socket, + ctxt->dbi->db_handle, ++#ifdef PILOT_LINK_0_12 ++ local->local.ID, record, ++ NULL, NULL, &cat) > 0) { ++#else + local->local.ID, &record, + NULL, NULL, NULL, &cat) > 0) { ++#endif + local->local.category = cat; + memset (&addr, 0, sizeof (struct Address)); ++#ifdef PILOT_LINK_0_12 ++ unpack_Address (&addr, record, address_v1); ++#else + unpack_Address (&addr, record, 0xffff); ++#endif + for (i = 0; i < 5; i++) { + if (addr.entry[entryPhone1 + i]) + local->addr->entry[entryPhone1 + i] = +@@ -858,6 +912,9 @@ + } + free_Address (&addr); + } ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_free (record); ++#endif + } + + local->addr->entry[entryFirstname] = e_pilot_utf8_to_pchar (e_contact_get_const (contact, E_CONTACT_GIVEN_NAME)); +@@ -1019,11 +1076,27 @@ + EContactField next_mail, next_home, next_work, next_fax; + EContactField next_other, next_main, next_pager, next_mobile; + int i; +- ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + g_return_val_if_fail(remote!=NULL,NULL); + memset (&address, 0, sizeof (struct Address)); +- unpack_Address (&address, remote->record, remote->length); ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return NULL; ++ } + ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return NULL; ++ } ++ unpack_Address (&address, buffer, address_v1); ++ pi_buffer_free(buffer); ++#else ++ unpack_Address (&address, remote->record, remote->length); ++#endif + if (in_contact == NULL) + contact = e_contact_new (); + else +@@ -1217,6 +1290,9 @@ + char *change_id; + char *auth; + gint num_records, add_records = 0, mod_records = 0, del_records = 0; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t *buffer; ++#endif + + abs_conduit = GNOME_PILOT_CONDUIT_SYNC_ABS (conduit); + +@@ -1302,10 +1378,19 @@ + gnome_pilot_conduit_sync_abs_set_num_updated_local_records (abs_conduit, mod_records); + gnome_pilot_conduit_sync_abs_set_num_deleted_local_records(abs_conduit, del_records); + ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ return pi_set_error(dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ } ++ ++ len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, ++ DLP_BUF_SIZE, buffer); ++#else + buf = (unsigned char*)g_malloc (0xffff); + len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, + (unsigned char *)buf, 0xffff); +- ++#endif + if (len < 0) { + WARN (_("Could not read pilot's Address application block")); + WARN ("dlp_ReadAppBlock(...) = %d", len); +@@ -1313,9 +1398,13 @@ + _("Could not read pilot's Address application block")); + return -1; + } ++#ifdef PILOT_LINK_0_12 ++ unpack_AddressAppInfo (&(ctxt->ai), buffer->data, len); ++ pi_buffer_free (buffer); ++#else + unpack_AddressAppInfo (&(ctxt->ai), buf, len); + g_free (buf); +- ++#endif + check_for_slow_setting (conduit, ctxt); + if (ctxt->cfg->sync_type == GnomePilotConduitSyncTypeCopyToPilot + || ctxt->cfg->sync_type == GnomePilotConduitSyncTypeCopyFromPilot) +Index: calendar/conduits/calendar/calendar-conduit.c +=================================================================== +RCS file: /cvs/gnome/evolution/calendar/conduits/calendar/calendar-conduit.c,v +retrieving revision 1.132 +diff -u -r1.132 calendar-conduit.c +--- calendar/conduits/calendar/calendar-conduit.c 23 Dec 2005 04:39:34 -0000 1.132 ++++ calendar/conduits/calendar/calendar-conduit.c 17 Nov 2006 07:29:48 -0000 +@@ -413,6 +413,9 @@ + { + static char buff[ 4096 ]; + struct Appointment appt; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + if (remote == NULL) { + sprintf (buff, "[NULL]"); +@@ -420,8 +423,22 @@ + } + + memset (&appt, 0, sizeof (struct Appointment)); ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ ++ unpack_Appointment (&appt, buffer, datebook_v1); ++ pi_buffer_free(buffer); ++#else + unpack_Appointment (&appt, remote->record, remote->length); +- ++#endif + g_snprintf (buff, 4096, "[%ld %ld '%s' '%s']", + mktime (&appt.begin), + mktime (&appt.end), +@@ -819,6 +836,9 @@ + { + GnomePilotRecord p; + static char record[0xffff]; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + g_assert (local->comp != NULL); + g_assert (local->appt != NULL ); +@@ -830,9 +850,23 @@ + p.secret = local->local.secret; + + /* Generate pilot record structure */ ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return p; ++ } ++ ++ pack_Appointment (local->appt, buffer, datebook_v1); ++ p.record = g_new0(unsigned char, buffer->used); ++ p.length = buffer->used; ++ memcpy(p.record, buffer->data, buffer->used); ++ ++ pi_buffer_free(buffer); ++#else + p.record = record; + p.length = pack_Appointment (local->appt, p.record, 0xffff); +- ++#endif + return p; + } + +@@ -867,22 +901,44 @@ + * we don't overwrite them + */ + if (local->local.ID != 0) { ++ int cat = 0; ++#ifdef PILOT_LINK_0_12 ++ struct Appointment appt; ++ pi_buffer_t * record; ++ ++ record = pi_buffer_new(DLP_BUF_SIZE); ++ if(record == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return; ++ } ++#else + struct Appointment appt; + char record[0xffff]; +- int cat = 0; +- ++#endif + if (dlp_ReadRecordById (ctxt->dbi->pilot_socket, + ctxt->dbi->db_handle, ++#ifdef PILOT_LINK_0_12 ++ local->local.ID, record, ++ NULL, NULL, &cat) > 0) { ++#else + local->local.ID, &record, + NULL, NULL, NULL, &cat) > 0) { ++#endif + local->local.category = cat; + memset (&appt, 0, sizeof (struct Appointment)); ++#ifdef PILOT_LINK_0_12 ++ unpack_Appointment (&appt, record, datebook_v1); ++#else + unpack_Appointment (&appt, record, 0xffff); ++#endif + local->appt->alarm = appt.alarm; + local->appt->advance = appt.advance; + local->appt->advanceUnits = appt.advanceUnits; + free_Appointment (&appt); + } ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_free (record); ++#endif + } + + /* STOP: don't replace these with g_strdup, since free_Appointment +@@ -1140,12 +1196,28 @@ + GSList *edl = NULL; + char *txt; + int pos, i; +- ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + g_return_val_if_fail (remote != NULL, NULL); + ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ return NULL; ++ } ++ ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ return NULL; ++ } ++ ++ unpack_Appointment (&appt, buffer, datebook_v1); ++ pi_buffer_free(buffer); ++ ++#else + memset (&appt, 0, sizeof (struct Appointment)); + unpack_Appointment (&appt, remote->record, remote->length); +- ++#endif + if (in_comp == NULL) { + comp = e_cal_component_new (); + e_cal_component_set_new_vtype (comp, E_CAL_COMPONENT_EVENT); +@@ -1413,7 +1485,9 @@ + char *filename, *change_id; + icalcomponent *icalcomp; + gint num_records, add_records = 0, mod_records = 0, del_records = 0; +- ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + abs_conduit = GNOME_PILOT_CONDUIT_SYNC_ABS (conduit); + + LOG (g_message ( "---------------------------------------------------------\n" )); +@@ -1521,10 +1595,21 @@ + gnome_pilot_conduit_sync_abs_set_num_updated_local_records (abs_conduit, mod_records); + gnome_pilot_conduit_sync_abs_set_num_deleted_local_records(abs_conduit, del_records); + ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return -1; ++ } ++ ++ len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, ++ DLP_BUF_SIZE, ++ buffer); ++#else + buf = (unsigned char*)g_malloc (0xffff); + len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, + (unsigned char *)buf, 0xffff); +- ++#endif + if (len < 0) { + WARN (_("Could not read pilot's Calendar application block")); + WARN ("dlp_ReadAppBlock(...) = %d", len); +@@ -1532,6 +1617,11 @@ + _("Could not read pilot's Calendar application block")); + return -1; + } ++#ifdef PILOT_LINK_0_12 ++ buf = g_new0 (unsigned char,buffer->used); ++ memcpy(buf, buffer->data, buffer->used); ++ pi_buffer_free(buffer); ++#endif + unpack_AppointmentAppInfo (&(ctxt->ai), buf, len); + g_free (buf); + +Index: calendar/conduits/todo/todo-conduit.c +=================================================================== +RCS file: /cvs/gnome/evolution/calendar/conduits/todo/todo-conduit.c,v +retrieving revision 1.98 +diff -u -r1.98 todo-conduit.c +--- calendar/conduits/todo/todo-conduit.c 13 May 2006 07:58:02 -0000 1.98 ++++ calendar/conduits/todo/todo-conduit.c 17 Nov 2006 07:29:48 -0000 +@@ -402,15 +402,30 @@ + { + static char buff[ 4096 ]; + struct ToDo todo; +- ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + if (remote == NULL) { + sprintf (buff, "[NULL]"); + return buff; + } + + memset (&todo, 0, sizeof (struct ToDo)); ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ unpack_ToDo (&todo, buffer, todo_v1); ++ pi_buffer_free(buffer); ++#else + unpack_ToDo (&todo, remote->record, remote->length); +- ++#endif + g_snprintf (buff, 4096, "[%d %ld %d %d '%s' '%s' %d]", + todo.indefinite, + mktime (&todo.due), +@@ -594,7 +609,11 @@ + EToDoConduitContext *ctxt) + { + GnomePilotRecord p; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#else + static char record[0xffff]; ++#endif + + g_assert (local->comp != NULL); + g_assert (local->todo != NULL ); +@@ -607,10 +626,24 @@ + p.archived = local->local.archived; + p.secret = local->local.secret; + +- /* Generate pilot record structure */ ++ /* Generate pilot record structure */ ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return p; ++ } ++ ++ pack_ToDo (local->todo, buffer, todo_v1); ++ p.record = g_new0(unsigned char, buffer->used); ++ p.length = buffer->used; ++ memcpy(p.record, buffer->data, buffer->used); ++ ++ pi_buffer_free(buffer); ++#else + p.record = record; + p.length = pack_ToDo (local->todo, p.record, 0xffff); +- ++#endif + return p; + } + +@@ -696,15 +729,32 @@ + + /* Don't overwrite the category */ + if (local->local.ID != 0) { +- char record[0xffff]; + int cat = 0; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * record; ++ record = pi_buffer_new(DLP_BUF_SIZE); ++ if(record == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return; ++ } ++#else ++ char record[0xffff]; ++#endif + + if (dlp_ReadRecordById (ctxt->dbi->pilot_socket, + ctxt->dbi->db_handle, ++#ifdef PILOT_LINK_0_12 ++ local->local.ID, record, ++ NULL, NULL, &cat) > 0) { ++#else + local->local.ID, &record, + NULL, NULL, NULL, &cat) > 0) { ++#endif + local->local.category = cat; + } ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_free(record); ++#endif + } + + /* +@@ -860,11 +910,28 @@ + int priority; + char *txt; + char *category; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + g_return_val_if_fail (remote != NULL, NULL); + ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ return NULL; ++ } ++ ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ return NULL; ++ } ++ ++ unpack_ToDo (&todo, buffer, todo_v1); ++ pi_buffer_free(buffer); ++#else + memset (&todo, 0, sizeof (struct ToDo)); + unpack_ToDo (&todo, remote->record, remote->length); ++#endif + + utc_zone = icaltimezone_get_utc_timezone (); + now = icaltime_from_timet_with_zone (time (NULL), FALSE, +@@ -1018,6 +1085,9 @@ + char *filename, *change_id; + icalcomponent *icalcomp; + gint num_records, add_records = 0, mod_records = 0, del_records = 0; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + abs_conduit = GNOME_PILOT_CONDUIT_SYNC_ABS (conduit); + +@@ -1104,10 +1174,20 @@ + g_message("num_records: %d\nadd_records: %d\nmod_records: %d\ndel_records: %d\n", + num_records, add_records, mod_records, del_records); + ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return -1; ++ } ++ len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, ++ DLP_BUF_SIZE, ++ buffer); ++#else + buf = (unsigned char*)g_malloc (0xffff); + len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, + (unsigned char *)buf, 0xffff); +- ++#endif + if (len < 0) { + WARN (_("Could not read pilot's ToDo application block")); + WARN ("dlp_ReadAppBlock(...) = %d", len); +@@ -1115,6 +1195,12 @@ + _("Could not read pilot's ToDo application block")); + return -1; + } ++ ++#ifdef PILOT_LINK_0_12 ++ buf = g_new0 (unsigned char,buffer->used); ++ memcpy(buf, buffer->data,buffer->used); ++ pi_buffer_free(buffer); ++#endif + unpack_ToDoAppInfo (&(ctxt->ai), buf, len); + g_free (buf); + +Index: calendar/conduits/memo/memo-conduit.c +=================================================================== +RCS file: /cvs/gnome/evolution/calendar/conduits/memo/memo-conduit.c,v +retrieving revision 1.1 +diff -u -r1.1 memo-conduit.c +--- calendar/conduits/memo/memo-conduit.c 19 Oct 2005 11:39:35 -0000 1.1 ++++ calendar/conduits/memo/memo-conduit.c 17 Nov 2006 07:29:48 -0000 +@@ -331,6 +331,9 @@ + { + static char buff[ 64 ]; + struct Memo memo; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t *buffer; ++#endif + + if (remote == NULL) { + sprintf (buff, "[NULL]"); +@@ -338,8 +341,22 @@ + } + + memset (&memo, 0, sizeof (struct Memo)); +- unpack_Memo (&memo, remote->record, remote->length); ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ sprintf (buff, "[NULL]"); ++ return buff; ++ } ++ unpack_Memo (&memo, buffer, memo_v1); + ++ pi_buffer_free(buffer); ++#else ++ unpack_Memo (&memo, remote->record, remote->length); ++#endif + g_snprintf (buff, 64, "['%s']", + memo.text ? + memo.text : ""); +@@ -452,6 +469,9 @@ + { + GnomePilotRecord p; + static char record[0xffff]; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + g_assert (local->comp != NULL); + g_assert (local->memo != NULL ); +@@ -465,9 +485,23 @@ + p.secret = local->local.secret; + + /* Generate pilot record structure */ ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return p; ++ } ++ ++ pack_Memo (local->memo, buffer, memo_v1); ++ p.record = g_new0(unsigned char, buffer->used); ++ p.length = buffer->used; ++ memcpy(p.record, buffer->data, buffer->used); ++ ++ pi_buffer_free(buffer); ++#else + p.record = record; + p.length = pack_Memo (local->memo, p.record, 0xffff); +- ++#endif + return p; + } + +@@ -568,16 +602,41 @@ + + /* Don't overwrite the category */ + if (local->local.ID != 0) { ++#ifdef PILOT_LINK_0_12 ++ struct Memo memo; ++ pi_buffer_t * record; ++#else + char record[0xffff]; ++#endif + int cat = 0; + ++#ifdef PILOT_LINK_0_12 ++ record = pi_buffer_new(DLP_BUF_SIZE); ++ if(record == NULL){ ++ pi_set_error(ctxt->dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return; ++ } ++#endif ++ + LOG(fprintf(stderr, "local_record_from_comp: calling dlp_ReadRecordById\n")); + if (dlp_ReadRecordById (ctxt->dbi->pilot_socket, + ctxt->dbi->db_handle, ++#ifdef PILOT_LINK_0_12 ++ local->local.ID, record, ++ NULL, NULL, &cat) > 0) { ++ local->local.category = cat; ++ memset (&memo, 0, sizeof (struct Memo)); ++ unpack_Memo (&memo, record, memo_v1); ++ local->memo->text = strdup (memo.text); ++ free_Memo (&memo); ++ } ++ pi_buffer_free (record); ++#else + local->local.ID, &record, + NULL, NULL, NULL, &cat) > 0) { + local->local.category = cat; +- } ++ } ++#endif + LOG(fprintf(stderr, "local_record_from_comp: done calling dlp_ReadRecordById\n")); + } + +@@ -704,11 +763,27 @@ + char *txt, *txt2, *txt3; + char *category; + int i; +- ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + g_return_val_if_fail (remote != NULL, NULL); + ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ return NULL; ++ } ++ ++ if(pi_buffer_append(buffer, remote->record, remote->length)==NULL){ ++ return NULL; ++ } ++ ++ unpack_Memo (&memo, buffer, memo_v1); ++ pi_buffer_free(buffer); ++#else + memset (&memo, 0, sizeof (struct Memo)); + unpack_Memo (&memo, remote->record, remote->length); ++#endif + + utc_zone = icaltimezone_get_utc_timezone (); + now = icaltime_from_timet_with_zone (time (NULL), FALSE, +@@ -840,6 +915,9 @@ + char *filename, *change_id; + icalcomponent *icalcomp; + gint num_records, add_records = 0, mod_records = 0, del_records = 0; ++#ifdef PILOT_LINK_0_12 ++ pi_buffer_t * buffer; ++#endif + + abs_conduit = GNOME_PILOT_CONDUIT_SYNC_ABS (conduit); + +@@ -929,10 +1007,21 @@ + g_message("num_records: %d\nadd_records: %d\nmod_records: %d\ndel_records: %d\n", + num_records, add_records, mod_records, del_records); + ++#ifdef PILOT_LINK_0_12 ++ buffer = pi_buffer_new(DLP_BUF_SIZE); ++ if(buffer == NULL){ ++ pi_set_error(dbi->pilot_socket, PI_ERR_GENERIC_MEMORY); ++ return -1; ++ } ++ ++ len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, ++ DLP_BUF_SIZE, ++ buffer); ++#else + buf = (unsigned char*)g_malloc (0xffff); + len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0, + (unsigned char *)buf, 0xffff); +- ++#endif + if (len < 0) { + WARN (_("Could not read pilot's Memo application block")); + WARN ("dlp_ReadAppBlock(...) = %d", len); +@@ -940,7 +1029,15 @@ + _("Could not read pilot's Memo application block")); + return -1; + } ++#ifdef PILOT_LINK_0_12 ++ buf = g_new0 (unsigned char,buffer->used); ++ memcpy(buf, buffer->data, buffer->used); ++ unpack_MemoAppInfo (&(ctxt->ai), buf, len); ++ pi_buffer_free(buffer); ++#else + unpack_MemoAppInfo (&(ctxt->ai), buf, len); ++#endif ++ + g_free (buf); + + lastDesktopUniqueID = 128; -- 2.44.0