r1147 - trunk/src/target/OM-2007/applications/openmoko-dialer/src

tony_guan at sita.openmoko.org tony_guan at sita.openmoko.org
Tue Feb 27 09:37:11 CET 2007


Author: tony_guan
Date: 2007-02-27 09:37:06 +0100 (Tue, 27 Feb 2007)
New Revision: 1147

Modified:
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/contacts.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c
Log:
to remove the segment fault on input panel


Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/contacts.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/contacts.c	2007-02-27 07:40:32 UTC (rev 1146)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/contacts.c	2007-02-27 08:37:06 UTC (rev 1147)
@@ -15,6 +15,7 @@
  *
  *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
  */
+#define LIBEBOOK1_2_5 1
 #include "contacts.h"
 
 /**
@@ -642,11 +643,15 @@
 
 if(photo)
   if (photo)
+  	{
+#ifndef LIBEBOOK1_2_5  	
    gdk_pixbuf_loader_write (loader, photo->data.inlined.data,
                             photo->data.inlined.length, NULL);
-    //gdk_pixbuf_loader_write (loader, photo->data, photo->length, NULL); //just temporaly modified.                           
+#else
+    gdk_pixbuf_loader_write (loader, photo->data, photo->length, NULL); //just temporaly modified.                           
+#endif
+  	}
 
-
   gdk_pixbuf_loader_close (loader, NULL);
 
   pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);

Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c	2007-02-27 07:40:32 UTC (rev 1146)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c	2007-02-27 08:37:06 UTC (rev 1147)
@@ -55,19 +55,30 @@
   {
     moko_dialer_textview_delete (appdata->moko_dialer_text_view);
 //refresh the autolist,but do not automaticall fill the textview
-    gchar *codesinput;
-    codesinput =g_strdup(moko_dialer_textview_get_input (appdata->moko_dialer_text_view, FALSE));
-    DBG_MESSAGE("input %s",codesinput);
-    if (g_utf8_strlen (codesinput, -1) >= MOKO_DIALER_MIN_SENSATIVE_LEN)
+    gchar *codesinput = 0;
+    codesinput =
+      g_strdup (moko_dialer_textview_get_input
+                (appdata->moko_dialer_text_view, FALSE));
+
+    if (codesinput)
     {
-      moko_dialer_autolist_refresh_by_string (appdata->moko_dialer_autolist,
-                                              codesinput, FALSE);
-      moko_dialer_textview_set_color (appdata->moko_dialer_text_view);
+      DBG_MESSAGE ("input %s", codesinput);
+      if (g_utf8_strlen (codesinput, -1) >= MOKO_DIALER_MIN_SENSATIVE_LEN)
+      {
+        moko_dialer_autolist_refresh_by_string (appdata->moko_dialer_autolist,
+                                                codesinput, FALSE);
+        moko_dialer_textview_set_color (appdata->moko_dialer_text_view);
+      }
+      else
+        moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
+      g_free (codesinput);
     }
     else
-      moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
-   g_free (codesinput);
+    {
+      DBG_WARN ("No input now.");
+    }
 
+
   }
 
 }
@@ -88,10 +99,15 @@
 {
   gchar *codesinput;
   //get the input digits
-  codesinput =g_strdup(moko_dialer_textview_get_input (appdata->moko_dialer_text_view,
-                                               FALSE));
+  codesinput =
+    g_strdup (moko_dialer_textview_get_input
+              (appdata->moko_dialer_text_view, FALSE));
+  if (!codesinput)
+    return;
+
   if (g_utf8_strlen (codesinput, -1) < 1)
   {
+    //user didn't input anything, maybe it's a redial, so we just insert the last dialed number and return this time.
     if (g_utf8_strlen (appdata->g_state.lastnumber, -1) > 0)
     {
       moko_dialer_textview_insert (appdata->moko_dialer_text_view,
@@ -100,8 +116,6 @@
                                               appdata->g_state.lastnumber,
                                               TRUE);
     }
-    //user didn't input anything, maybe it's a redial
-
     return;
   }
 //empty the textview
@@ -112,8 +126,8 @@
   moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
 
 //got the number;//FIXME:which function should I use if not g_strdup. & strcpy.
- //strcpy(appdata->g_peer_info.number, codesinput );
- g_stpcpy(appdata->g_peer_info.number, codesinput );
+  //strcpy(appdata->g_peer_info.number, codesinput );
+  g_stpcpy (appdata->g_peer_info.number, codesinput);
 
 //retrieve the contact information if any.
   contact_get_peer_info_from_number (appdata->g_contactlist.contacts,
@@ -231,7 +245,7 @@
   char input[2];
   input[0] = parac;
   input[1] = 0;
-  gchar *codesinput=NULL;
+  gchar *codesinput = NULL;
 
 //DBG_TRACE();
   MOKO_DIALER_APP_DATA *appdata = (MOKO_DIALER_APP_DATA *) user_data;
@@ -242,11 +256,9 @@
 //DBG_TRACE();
 
 
-  codesinput = g_strdup(moko_dialer_textview_get_input (moko_dialer_text_view, FALSE));
-//DBG_TRACE();
+  codesinput =
+    g_strdup (moko_dialer_textview_get_input (moko_dialer_text_view, FALSE));
 
-//DBG_MESSAGE("LEN=%d,MAX=%d",strlen(codesinput),MOKO_DIALER_MAX_NUMBER_LEN);
-
   if (g_utf8_strlen (codesinput, -1) >= MOKO_DIALER_MIN_SENSATIVE_LEN)
   {
     moko_dialer_autolist_refresh_by_string (appdata->moko_dialer_autolist,
@@ -256,9 +268,12 @@
   {
     moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
   }
-  g_free (codesinput);
 
+  if (codesinput)
+    g_free (codesinput);
+
 }
+
 void
 on_dialer_panel_user_hold (GtkWidget * widget, gchar parac,
                            gpointer user_data)
@@ -267,19 +282,17 @@
 }
 
 void
-on_window_dialer_hide                 (GtkWidget       *widget,
-                                        MOKO_DIALER_APP_DATA * appdata)
+on_window_dialer_hide (GtkWidget * widget, MOKO_DIALER_APP_DATA * appdata)
 {
-  appdata->window_present=0;
+  appdata->window_present = 0;
 }
 
 void
-on_window_dialer_show                  (GtkWidget       *widget,
-                                        MOKO_DIALER_APP_DATA * appdata)
+on_window_dialer_show (GtkWidget * widget, MOKO_DIALER_APP_DATA * appdata)
 {
-  DBG_ENTER();
-  appdata->window_present=widget;
-  DBG_LEAVE();
+  DBG_ENTER ();
+  appdata->window_present = widget;
+  DBG_LEAVE ();
 }
 
 
@@ -318,17 +331,15 @@
     gtk_menu_shell_append (GTK_MENU_SHELL (appmenu), GTK_WIDGET (hideitem));
 
 
-    moko_finger_window_set_application_menu (MOKO_FINGER_WINDOW (window), appmenu);
+    moko_finger_window_set_application_menu (MOKO_FINGER_WINDOW (window),
+                                             appmenu);
 
-    g_signal_connect(G_OBJECT (window), "delete_event",
-                     G_CALLBACK (gtk_widget_hide_on_delete),
-                     NULL);
-     g_signal_connect (G_OBJECT (window), "show",
-                       G_CALLBACK (on_window_dialer_show),
-                       p_dialer_data);
+    g_signal_connect (G_OBJECT (window), "delete_event",
+                      G_CALLBACK (gtk_widget_hide_on_delete), NULL);
+    g_signal_connect (G_OBJECT (window), "show",
+                      G_CALLBACK (on_window_dialer_show), p_dialer_data);
     g_signal_connect (G_OBJECT (window), "hide",
-                      G_CALLBACK (on_window_dialer_hide),
-                      p_dialer_data);
+                      G_CALLBACK (on_window_dialer_hide), p_dialer_data);
 
 
 
@@ -341,13 +352,13 @@
     gtk_widget_set_name (eventbox1, "gtkeventbox-black");
 
     GtkWidget *autolist = moko_dialer_autolist_new ();
-    moko_dialer_autolist_set_data (MOKO_DIALER_AUTOLIST (autolist), &(p_dialer_data->g_contactlist));
+    moko_dialer_autolist_set_data (MOKO_DIALER_AUTOLIST (autolist),
+                                   &(p_dialer_data->g_contactlist));
     p_dialer_data->moko_dialer_autolist = MOKO_DIALER_AUTOLIST (autolist);
 
     gtk_container_add (GTK_CONTAINER (eventbox1), autolist);
 //    gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(autolist), FALSE, FALSE, 5 );
-    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE,
-                        0);
+    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE, 0);
 
     gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
 
@@ -373,11 +384,11 @@
 //        gtk_widget_set_size_request (eventbox1, 480, 132);
 
     GtkWidget *mokotextview = moko_dialer_textview_new ();
-    p_dialer_data->moko_dialer_text_view = MOKO_DIALER_TEXTVIEW (mokotextview);
+    p_dialer_data->moko_dialer_text_view =
+      MOKO_DIALER_TEXTVIEW (mokotextview);
 
     gtk_container_add (GTK_CONTAINER (eventbox1), mokotextview);
-    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE,
-                        0);
+    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE, 0);
 //    gtk_box_pack_start( GTK_BOX(vbox), GTK_WIDGET(mokotextview), FALSE,FALSE, 5 );
 
 
@@ -393,8 +404,7 @@
     g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_hold",
                       G_CALLBACK (on_dialer_panel_user_hold), p_dialer_data);
 
-    gtk_box_pack_start (GTK_BOX (hbox), mokodialerpanel, TRUE,
-                        TRUE, 5);
+    gtk_box_pack_start (GTK_BOX (hbox), mokodialerpanel, TRUE, TRUE, 5);
 
 
 
@@ -405,27 +415,29 @@
     g_signal_connect (G_OBJECT (button1), "clicked",
                       G_CALLBACK (cb_delete_button_clicked), p_dialer_data);
     gtk_widget_set_name (button1, "mokofingerbutton-orange");
-    moko_pixmap_button_set_center_stock (MOKO_PIXMAP_BUTTON (button1), "gtk-delete");
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON (button1), "Delete");
+    moko_pixmap_button_set_center_stock (MOKO_PIXMAP_BUTTON (button1),
+                                         "gtk-delete");
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button1), "Delete");
     gtk_widget_set_size_request (button1, WINDOW_DIALER_BUTTON_SIZE_X,
                                  WINDOW_DIALER_BUTTON_SIZE_Y);
 
-    gtk_box_pack_start (GTK_BOX (vbox2), button1, FALSE, FALSE,
-                        5);
+    gtk_box_pack_start (GTK_BOX (vbox2), button1, FALSE, FALSE, 5);
 
     GtkWidget *button3 = moko_pixmap_button_new ();
     g_signal_connect (G_OBJECT (button3), "clicked",
                       G_CALLBACK (cb_history_button_clicked), p_dialer_data);
     gtk_widget_set_name (button3, "mokofingerbutton-orange");
 //moko_pixmap_button_set_center_stock(button3,"gtk-refresh");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image (MOKO_PIXMAP_BUTTON (button3),
+    moko_pixmap_button_set_finger_toolbox_btn_center_image (MOKO_PIXMAP_BUTTON
+                                                            (button3),
                                                             file_new_image_from_relative_path
                                                             ("all.png"));
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON (button3), "History");
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button3), "History");
     gtk_widget_set_size_request (button3, WINDOW_DIALER_BUTTON_SIZE_X,
                                  WINDOW_DIALER_BUTTON_SIZE_Y);
-    gtk_box_pack_start (GTK_BOX (vbox2), button3, FALSE, FALSE,
-                        5);
+    gtk_box_pack_start (GTK_BOX (vbox2), button3, FALSE, FALSE, 5);
 
 
     GtkWidget *button2 = moko_pixmap_button_new ();
@@ -433,15 +445,16 @@
     g_signal_connect (G_OBJECT (button2), "clicked",
                       G_CALLBACK (cb_dialer_button_clicked), p_dialer_data);
     gtk_widget_set_name (button2, "mokofingerbutton-black");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image (MOKO_PIXMAP_BUTTON (button2),
+    moko_pixmap_button_set_finger_toolbox_btn_center_image (MOKO_PIXMAP_BUTTON
+                                                            (button2),
                                                             file_new_image_from_relative_path
                                                             ("phone.png"));
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON (button2), "Dial");
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button2), "Dial");
     gtk_widget_set_size_request (button2, WINDOW_DIALER_BUTTON_SIZE_X + 20,
                                  WINDOW_DIALER_BUTTON_SIZE_Y + 80);
 
-    gtk_box_pack_start (GTK_BOX (vbox2), button2, FALSE, FALSE,
-                        20);
+    gtk_box_pack_start (GTK_BOX (vbox2), button2, FALSE, FALSE, 20);
 
 
     gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);

Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c	2007-02-27 07:40:32 UTC (rev 1146)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c	2007-02-27 08:37:06 UTC (rev 1147)
@@ -31,12 +31,12 @@
 void
 pin_delete_button_clicked (GtkButton * button, MOKO_DIALER_APP_DATA * appdata)
 {
-if(appdata->int_sim_pin_end_point)
-{
+  if (appdata->int_sim_pin_end_point)
+  {
     moko_dialer_textview_delete (appdata->moko_pin_text_view);
     appdata->int_sim_pin_end_point--;
-    appdata->str_sim_pin[appdata->int_sim_pin_end_point]=0;
-}  
+    appdata->str_sim_pin[appdata->int_sim_pin_end_point] = 0;
+  }
 
 }
 
@@ -44,72 +44,69 @@
 void
 pin_ok_button_clicked (GtkButton * button, MOKO_DIALER_APP_DATA * appdata)
 {
- //   gchar *codesinput;
+  //   gchar *codesinput;
 //    codesinput =g_strdup(moko_dialer_textview_get_input (appdata->moko_pin_text_view, TRUE));
 
-    if (g_utf8_strlen (appdata->str_sim_pin, -1) <1)
-    {
-       //user didn't input anything
-    DBG_MESSAGE("no input for pin"); 
-     }
-     else
-    {//here send the pin codes and hide our window.
-    
-    DBG_MESSAGE("here we send the pin:%s",appdata->str_sim_pin);
+  if (g_utf8_strlen (appdata->str_sim_pin, -1) < 1)
+  {
+    //user didn't input anything
+    DBG_MESSAGE ("no input for pin");
+  }
+  else
+  {                             //here send the pin codes and hide our window.
+
+    DBG_MESSAGE ("here we send the pin:%s", appdata->str_sim_pin);
     //FIXME:why this call will cause segment fault?
     lgsm_pin (appdata->lh, appdata->str_sim_pin);
     //lgsm_pin (appdata->lh, "1234");
-    DBG_MESSAGE("pin:%s sent",appdata->str_sim_pin);
-    gtk_widget_hide(appdata->window_pin);
-    }
-  
+    DBG_MESSAGE ("pin:%s sent", appdata->str_sim_pin);
+    gtk_widget_hide (appdata->window_pin);
+  }
+
 }
 
 
 
 
 void
-on_pin_panel_user_input (GtkWidget * widget, gchar parac,
-                            gpointer user_data)
+on_pin_panel_user_input (GtkWidget * widget, gchar parac, gpointer user_data)
 {
   char input[2];
   input[0] = parac;
   input[1] = 0;
-  
+
 //DBG_TRACE();
   MOKO_DIALER_APP_DATA *appdata = (MOKO_DIALER_APP_DATA *) user_data;
   MokoDialerTextview *moko_pin_text_view = appdata->moko_pin_text_view;
-if(appdata->int_sim_pin_end_point<MOKO_DIALER_MAX_NUMBER_LEN)
-{
-  appdata->str_sim_pin[appdata->int_sim_pin_end_point]=parac;
-  appdata->int_sim_pin_end_point++;
-  moko_dialer_textview_insert (moko_pin_text_view, "*");
-}
-else
-{
-  appdata->str_sim_pin[0]=parac;
-  appdata->int_sim_pin_end_point=1;
-}
+  if (appdata->int_sim_pin_end_point < MOKO_DIALER_MAX_NUMBER_LEN)
+  {
+    appdata->str_sim_pin[appdata->int_sim_pin_end_point] = parac;
+    appdata->int_sim_pin_end_point++;
+    moko_dialer_textview_insert (moko_pin_text_view, "*");
+  }
+  else
+  {
+    appdata->str_sim_pin[0] = parac;
+    appdata->int_sim_pin_end_point = 1;
+  }
 //DBG_TRACE();
 
 }
 
 void
-on_window_pin_hide                 (GtkWidget       *widget,
-                                        MOKO_DIALER_APP_DATA * appdata)
+on_window_pin_hide (GtkWidget * widget, MOKO_DIALER_APP_DATA * appdata)
 {
-appdata->window_present=0;
+  appdata->window_present = 0;
 
 }
 
 void
-on_window_pin_show                  (GtkWidget       *widget,
-                                        MOKO_DIALER_APP_DATA * appdata)
+on_window_pin_show (GtkWidget * widget, MOKO_DIALER_APP_DATA * appdata)
 {
-DBG_ENTER();
-appdata->window_present=widget;
+  DBG_ENTER ();
+  appdata->window_present = widget;
 
-DBG_LEAVE();
+  DBG_LEAVE ();
 }
 
 
@@ -122,8 +119,8 @@
   if (!p_dialer_data->window_pin)
   {
 
-    g_stpcpy(p_dialer_data->str_sim_pin,"");
-    p_dialer_data->int_sim_pin_end_point=0;
+    g_stpcpy (p_dialer_data->str_sim_pin, "");
+    p_dialer_data->int_sim_pin_end_point = 0;
     GdkColor color;
     gdk_color_parse ("black", &color);
 
@@ -131,12 +128,10 @@
 
 
     MokoFingerWindow *window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
-       g_signal_connect ((gpointer) window, "show",
-	                    G_CALLBACK (on_window_pin_show),
-	                    p_dialer_data);
+    g_signal_connect ((gpointer) window, "show",
+                      G_CALLBACK (on_window_pin_show), p_dialer_data);
     g_signal_connect ((gpointer) window, "hide",
-	                    G_CALLBACK (on_window_pin_hide),
-	                    p_dialer_data);
+                      G_CALLBACK (on_window_pin_hide), p_dialer_data);
 
 
     /* contents */
@@ -145,7 +140,7 @@
 
 
     GtkEventBox *eventbox1 = gtk_event_box_new ();
-     gtk_widget_show (eventbox1);
+    gtk_widget_show (eventbox1);
     
gtk_widget_set_name (GTK_WIDGET (eventbox1), "gtkeventbox-black");
     gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
 //        gtk_widget_set_size_request (eventbox1, 480, 132);
@@ -177,11 +172,13 @@
     GtkButton *button1 = moko_pixmap_button_new ();
     g_signal_connect (G_OBJECT (button1), "clicked",
                       G_CALLBACK (pin_delete_button_clicked), p_dialer_data);
-    gtk_widget_set_name (GTK_WIDGET(button1), "mokofingerbutton-orange");
-    moko_pixmap_button_set_center_stock (MOKO_PIXMAP_BUTTON (button1), "gtk-delete");
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON (button1), "Delete");
+    gtk_widget_set_name (GTK_WIDGET (button1), "mokofingerbutton-orange");
+    moko_pixmap_button_set_center_stock (MOKO_PIXMAP_BUTTON (button1),
+                                         "gtk-delete");
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button1), "Delete");
 //    gtk_widget_set_size_request (button1, WINDOW_DIALER_BUTTON_SIZE_X,
-   //                              WINDOW_DIALER_BUTTON_SIZE_Y);
+    //                              WINDOW_DIALER_BUTTON_SIZE_Y);
 
     gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (button1), FALSE, FALSE,
                         5);
@@ -191,12 +188,14 @@
     g_signal_connect (G_OBJECT (button2), "clicked",
                       G_CALLBACK (pin_ok_button_clicked), p_dialer_data);
     gtk_widget_set_name (GTK_WIDGET (button1), "mokofingerbutton-orange");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image (MOKO_PIXMAP_BUTTON (button2),
+    moko_pixmap_button_set_finger_toolbox_btn_center_image (MOKO_PIXMAP_BUTTON
+                                                            (button2),
                                                             file_new_image_from_relative_path
                                                             ("phone.png"));
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON (button2), "OK");
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button2), "OK");
     //gtk_widget_set_size_request (button2, WINDOW_DIALER_BUTTON_SIZE_X,
-        //                         WINDOW_DIALER_BUTTON_SIZE_Y);
+    //                         WINDOW_DIALER_BUTTON_SIZE_Y);
 
     gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (button2), FALSE, FALSE,
                         20);
@@ -211,12 +210,12 @@
     moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
 
 
-    p_dialer_data->window_pin= window;
+    p_dialer_data->window_pin = window;
 
     gtk_widget_show_all (GTK_WIDGET (window));
-    gtk_widget_hide(GTK_WIDGET (window));
-  
+    gtk_widget_hide (GTK_WIDGET (window));
 
+
   }
 
   return 1;





More information about the commitlog mailing list