aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/conduit/address-conduit.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/conduit/address-conduit.c')
-rw-r--r--addressbook/conduit/address-conduit.c101
1 files changed, 95 insertions, 6 deletions
diff --git a/addressbook/conduit/address-conduit.c b/addressbook/conduit/address-conduit.c
index 65e64c4931..293df8c79d 100644
--- a/addressbook/conduit/address-conduit.c
+++ b/addressbook/conduit/address-conduit.c
@@ -462,6 +462,9 @@ static char *print_remote (GnomePilotRecord *remote)
{
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 @@ static char *print_remote (GnomePilotRecord *remote)
}
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 @@ local_record_to_pilot_record (EAddrLocalRecord *local,
{
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 @@ local_record_to_pilot_record (EAddrLocalRecord *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_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 @@ local_record_from_ecard (EAddrLocalRecord *local, EContact *contact, EAddrCondui
*/
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 @@ local_record_from_ecard (EAddrLocalRecord *local, EContact *contact, EAddrCondui
}
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 @@ ecard_from_remote_record(EAddrConduitContext *ctxt,
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 @@ pre_sync (GnomePilotConduit *conduit,
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 @@ 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){
+ 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 @@ pre_sync (GnomePilotConduit *conduit,
_("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)