From a49955fbe8ad6169da6272330220f6fcc3d7f4d5 Mon Sep 17 00:00:00 2001 From: Veerapuram Varadhan Date: Mon, 8 Jan 2007 15:14:25 +0000 Subject: Fix for 389664 - Adding pilot-link 0.12 compatibility. * Fix for 389664 - Adding pilot-link 0.12 compatibility. svn path=/trunk/; revision=33125 --- calendar/ChangeLog | 10 +++ calendar/conduits/calendar/calendar-conduit.c | 106 +++++++++++++++++++++++-- calendar/conduits/memo/memo-conduit.c | 107 ++++++++++++++++++++++++-- calendar/conduits/todo/todo-conduit.c | 96 +++++++++++++++++++++-- 4 files changed, 301 insertions(+), 18 deletions(-) (limited to 'calendar') diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 562e2ddf27..b2cbdcd91d 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,13 @@ +2007-01-08 Veerapuram Varadhan + + Patch submitted by Nathan Owens and + Jerry Yu + + * conduits/calendar/calendar-conduit.c: + * conduits/todo/todo-conduit.c: + * conduits/memo/memo-conduit.c:Add pilot-link 0.12 + compatibility + 2007-01-08 Matthew Barnes Fixes #383027 diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c index 99b9832bd7..56dacdab9d 100644 --- a/calendar/conduits/calendar/calendar-conduit.c +++ b/calendar/conduits/calendar/calendar-conduit.c @@ -413,6 +413,9 @@ static char *print_remote (GnomePilotRecord *remote) { 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 @@ static char *print_remote (GnomePilotRecord *remote) } 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 @@ local_record_to_pilot_record (ECalLocalRecord *local, { 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 @@ local_record_to_pilot_record (ECalLocalRecord *local, 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 @@ local_record_from_comp (ECalLocalRecord *local, ECalComponent *comp, ECalConduit * 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 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, _("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); diff --git a/calendar/conduits/memo/memo-conduit.c b/calendar/conduits/memo/memo-conduit.c index 4ad5aab79b..7bd2e104c3 100644 --- a/calendar/conduits/memo/memo-conduit.c +++ b/calendar/conduits/memo/memo-conduit.c @@ -331,6 +331,9 @@ static char *print_remote (GnomePilotRecord *remote) { 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 @@ static char *print_remote (GnomePilotRecord *remote) } 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 @@ local_record_to_pilot_record (EMemoLocalRecord *local, { 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 @@ local_record_to_pilot_record (EMemoLocalRecord *local, 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 @@ local_record_from_comp (EMemoLocalRecord *local, ECalComponent *comp, EMemoCondu /* 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 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, _("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; diff --git a/calendar/conduits/todo/todo-conduit.c b/calendar/conduits/todo/todo-conduit.c index 9a00d46364..31d84c173b 100644 --- a/calendar/conduits/todo/todo-conduit.c +++ b/calendar/conduits/todo/todo-conduit.c @@ -402,15 +402,30 @@ static char *print_remote (GnomePilotRecord *remote) { 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 @@ local_record_to_pilot_record (EToDoLocalRecord *local, 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 ); @@ -608,9 +627,23 @@ local_record_to_pilot_record (EToDoLocalRecord *local, 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_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 @@ local_record_from_comp (EToDoLocalRecord *local, ECalComponent *comp, EToDoCondu /* 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 @@ comp_from_remote_record (GnomePilotConduitSyncAbs *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, 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 @@ pre_sync (GnomePilotConduit *conduit, _("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); -- cgit v1.2.3