--- Begin Message ---
- From: Matt Davey <matt corvil com>
- To: vR movingparts net, L rs-w de, Todd_Hought echostar com, mike markley org, thongsia dso org sg, dagmar speakeasy net, jim sngcworld com, dcvet i2ce com
- Subject: gnome-pilot memo-file fix
- Date: Thu, 28 Aug 2003 10:22:04 +0100
Hi,
>From your past postings to the gnome-pilot list, I thought you might be
interested to know that there is now a patch for the memo-file conduit
bug. See the recent thread, and apply the attached patches (patch
against 2.0.10). One patch is to partially reverse bogus changes made
to memo_file_conduit.c in 2.0.10. This caused the conduit to terminate
(gracefully) in the absence of local categories/memos. Obviously, this
always happens when using memo-file for the first time.
All the best,
Matt
diff -Naur gnome-pilot-2.0.10-dist/gpilotd/gnome-pilot-conduit-standard-abs.c gnome-pilot-2.0.10/gpilotd/gnome-pilot-conduit-standard-abs.c
--- gnome-pilot-2.0.10-dist/gpilotd/gnome-pilot-conduit-standard-abs.c 2002-11-22 16:03:59.000000000 +0000
+++ gnome-pilot-2.0.10/gpilotd/gnome-pilot-conduit-standard-abs.c 2003-08-28 08:42:02.000000000 +0000
@@ -28,6 +28,7 @@
#include <pi-socket.h>
#include <pi-dlp.h>
#include "gnome-pilot-conduit-standard-abs.h"
+#include "gpmarshal.h"
#include "manager.h"
enum {
@@ -142,87 +143,6 @@
return retval;
}
-/* We have a bunch of marshalling functions that we need to declare.
- * We do so here */
-typedef gint (*GtkSignal_INT__POINTER_POINTER) (GtkObject * object,
- gpointer arg1,
- gpointer arg2,
- gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_POINTER (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__POINTER_POINTER rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[2]);
- rfunc = (GtkSignal_INT__POINTER_POINTER) func;
- *return_val = (*rfunc) (object,
- GTK_VALUE_POINTER (args[0]),
- GTK_VALUE_POINTER (args[1]),
- func_data);
-}
-
-typedef gint (*GtkSignal_INT__POINTER_INT) (GtkObject * object,
- gpointer arg1,
- gint arg2,
- gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_INT (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__POINTER_INT rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[2]);
- rfunc = (GtkSignal_INT__POINTER_INT) func;
- *return_val = (*rfunc) (object,
- GTK_VALUE_POINTER (args[0]),
- GTK_VALUE_INT (args[1]),
- func_data);
-}
-
-typedef gint (*GtkSignal_INT__POINTER_INT_INT) (GtkObject * object,
- gpointer arg1,
- gint arg2,
- gint arg3,
- gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_INT_INT (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__POINTER_INT_INT rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[3]);
- rfunc = (GtkSignal_INT__POINTER_INT_INT) func;
- *return_val = (*rfunc) (object,
- GTK_VALUE_POINTER (args[0]),
- GTK_VALUE_INT (args[1]),
- GTK_VALUE_INT (args[2]),
- func_data);
-}
-
-
-typedef gint (*GtkSignal_INT__NONE) (GtkObject * object,
- gpointer user_data);
-static void
-gtk_marshal_INT__NONE (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__NONE rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[0]);
- rfunc = (GtkSignal_INT__NONE) func;
- *return_val = (*rfunc) (object,
- func_data);
-}
-
static void
gnome_pilot_conduit_standard_abs_class_init (GnomePilotConduitStandardAbsClass *klass)
{
@@ -239,7 +159,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, match_record),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[FREE_MATCH] =
@@ -247,7 +167,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, free_match),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[ARCHIVE_LOCAL] =
@@ -255,7 +175,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, archive_local),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[ARCHIVE_REMOTE] =
@@ -263,7 +183,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, archive_remote),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[STORE_REMOTE] =
@@ -271,7 +191,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, store_remote),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[ITERATE] =
@@ -279,7 +199,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, iterate),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[ITERATE_SPECIFIC] =
@@ -287,7 +207,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, iterate_specific),
- gtk_marshal_INT__POINTER_INT_INT,
+ gp_marshal_INT__POINTER_INT_INT,
GTK_TYPE_INT, 3, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_INT);
pilot_conduit_standard_abs_signals[PURGE] =
@@ -295,7 +215,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, purge),
- gtk_marshal_INT__NONE,
+ gp_marshal_INT__NONE,
GTK_TYPE_INT, 0);
pilot_conduit_standard_abs_signals[SET_STATUS] =
@@ -303,7 +223,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, set_status),
- gtk_marshal_INT__POINTER_INT,
+ gp_marshal_INT__POINTER_INT,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
pilot_conduit_standard_abs_signals[SET_PILOT_ID] =
@@ -311,7 +231,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, set_pilot_id),
- gtk_marshal_INT__POINTER_INT,
+ gp_marshal_INT__POINTER_INT,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
pilot_conduit_standard_abs_signals[COMPARE] =
@@ -319,7 +239,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, compare),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[COMPARE_BACKUP] =
@@ -327,7 +247,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, compare_backup),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[FREE_TRANSMIT] =
@@ -335,7 +255,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, free_transmit),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[DELETE_ALL] =
@@ -343,7 +263,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, delete_all),
- gtk_marshal_INT__NONE,
+ gp_marshal_INT__NONE,
GTK_TYPE_INT, 0);
pilot_conduit_standard_abs_signals[TRANSMIT] =
@@ -351,7 +271,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, transmit),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
pilot_conduit_standard_abs_signals[PRE_SYNC] =
@@ -359,7 +279,7 @@
GTK_RUN_LAST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, pre_sync),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
conduit_standard_class->copy_to_pilot = gnome_pilot_conduit_standard_real_copy_to_pilot;
diff -Naur gnome-pilot-2.0.10-dist/gpilotd/gpmarshal.c gnome-pilot-2.0.10/gpilotd/gpmarshal.c
--- gnome-pilot-2.0.10-dist/gpilotd/gpmarshal.c 2003-07-14 17:32:23.000000000 +0000
+++ gnome-pilot-2.0.10/gpilotd/gpmarshal.c 2003-08-28 08:41:28.000000000 +0000
@@ -208,3 +208,122 @@
g_value_set_int (return_value, v_return);
}
+/* INT:POINTER,INT,INT (./gpmarshal.list:5) */
+void
+gp_marshal_INT__POINTER_INT_INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gint (*GMarshalFunc_INT__POINTER_INT_INT) (gpointer data1,
+ gpointer arg_1,
+ gint arg_2,
+ gint arg_3,
+ gpointer data2);
+ register GMarshalFunc_INT__POINTER_INT_INT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gint v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_INT__POINTER_INT_INT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_pointer (param_values + 1),
+ g_marshal_value_peek_int (param_values + 2),
+ g_marshal_value_peek_int (param_values + 3),
+ data2);
+
+ g_value_set_int (return_value, v_return);
+}
+
+/* INT:POINTER (./gpmarshal.list:6) */
+void
+gp_marshal_INT__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gint (*GMarshalFunc_INT__POINTER) (gpointer data1,
+ gpointer arg_1,
+ gpointer data2);
+ register GMarshalFunc_INT__POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gint v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_INT__POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_pointer (param_values + 1),
+ data2);
+
+ g_value_set_int (return_value, v_return);
+}
+
+/* INT:NONE (./gpmarshal.list:7) */
+void
+gp_marshal_INT__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gint (*GMarshalFunc_INT__VOID) (gpointer data1,
+ gpointer data2);
+ register GMarshalFunc_INT__VOID callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gint v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 1);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_INT__VOID) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ data2);
+
+ g_value_set_int (return_value, v_return);
+}
+
diff -Naur gnome-pilot-2.0.10-dist/gpilotd/gpmarshal.h gnome-pilot-2.0.10/gpilotd/gpmarshal.h
--- gnome-pilot-2.0.10-dist/gpilotd/gpmarshal.h 2003-07-14 17:32:23.000000000 +0000
+++ gnome-pilot-2.0.10/gpilotd/gpmarshal.h 2003-08-28 08:41:28.000000000 +0000
@@ -6,7 +6,7 @@
G_BEGIN_DECLS
-/* VOID:INT,POINTER (./gpmarshal.list:1) */
+/* VOID:INT,POINTER (gpmarshal.list:1) */
extern void gp_marshal_VOID__INT_POINTER (GClosure *closure,
GValue *return_value,
guint n_param_values,
@@ -14,7 +14,7 @@
gpointer invocation_hint,
gpointer marshal_data);
-/* INT:POINTER,INT (./gpmarshal.list:2) */
+/* INT:POINTER,INT (gpmarshal.list:2) */
extern void gp_marshal_INT__POINTER_INT (GClosure *closure,
GValue *return_value,
guint n_param_values,
@@ -22,7 +22,7 @@
gpointer invocation_hint,
gpointer marshal_data);
-/* INT:POINTER,POINTER (./gpmarshal.list:3) */
+/* INT:POINTER,POINTER (gpmarshal.list:3) */
extern void gp_marshal_INT__POINTER_POINTER (GClosure *closure,
GValue *return_value,
guint n_param_values,
@@ -30,7 +30,7 @@
gpointer invocation_hint,
gpointer marshal_data);
-/* INT:POINTER,BOOL (./gpmarshal.list:4) */
+/* INT:POINTER,BOOL (gpmarshal.list:4) */
extern void gp_marshal_INT__POINTER_BOOLEAN (GClosure *closure,
GValue *return_value,
guint n_param_values,
@@ -39,6 +39,31 @@
gpointer marshal_data);
#define gp_marshal_INT__POINTER_BOOL gp_marshal_INT__POINTER_BOOLEAN
+/* INT:POINTER,INT,INT (gpmarshal.list:5) */
+extern void gp_marshal_INT__POINTER_INT_INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* INT:POINTER (gpmarshal.list:6) */
+extern void gp_marshal_INT__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* INT:NONE (gpmarshal.list:7) */
+extern void gp_marshal_INT__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+#define gp_marshal_INT__NONE gp_marshal_INT__VOID
+
G_END_DECLS
#endif /* __gp_marshal_MARSHAL_H__ */
diff -Naur gnome-pilot-2.0.10-dist/gpilotd/gpmarshal.list gnome-pilot-2.0.10/gpilotd/gpmarshal.list
--- gnome-pilot-2.0.10-dist/gpilotd/gpmarshal.list 2002-12-03 22:57:12.000000000 +0000
+++ gnome-pilot-2.0.10/gpilotd/gpmarshal.list 2003-08-28 08:41:28.000000000 +0000
@@ -2,3 +2,6 @@
INT:POINTER,INT
INT:POINTER,POINTER
INT:POINTER,BOOL
+INT:POINTER,INT,INT
+INT:POINTER
+INT:NONE
--- ../orig/gnome-pilot-conduits-2.0.10/memo_file/memo_file_conduit.c 2003-07-03 17:04:22.000000000 -0400
+++ memo_file/memo_file_conduit.c 2003-08-27 00:33:35.000000000 -0400
@@ -725,7 +725,7 @@ free_loadinfo_foreach (LoadInfo *info, g
}
/** loads the records into the abs structure */
-static gboolean
+static void
load_records (GnomePilotConduitStandardAbs *abs)
{
FILE *idfile;
@@ -743,12 +743,12 @@ load_records (GnomePilotConduitStandardA
if ((dir=opendir (GET_CONDUIT_CFG (abs)->dir))==NULL) {
LOG ("load_records cannot open %s", GET_CONDUIT_CFG (abs)->dir);
- return FALSE;
+ return;
}
if ((categories = load_categories (abs))==NULL) {
LOG ("no categories, no records");
closedir (dir);
- return FALSE;
+ return;
}
while ((de=readdir (dir))) {
GHashTable *loadinfo;
@@ -857,7 +857,7 @@ load_records (GnomePilotConduitStandardA
LOG ("records: total = %d updated = %d new = %d deleted = %d", total, updated, newrecs, deleted);
- return TRUE;
+ return;
}
@@ -886,8 +886,7 @@ pre_sync (GnomePilotConduit *c, GnomePil
return -1;
}
- if (!load_records ((GnomePilotConduitStandardAbs*)c))
- return -1;
+ load_records ((GnomePilotConduitStandardAbs*)c);
/* If local store is empty force the slow sync. */
if (g_list_length (GET_CONDUIT_DATA (c)->records)==0){
--- End Message ---