[grisbi-cvs] [SCM] grisbi branch, master, updated. 071c333b3443b278ae37c042a7f9ee751fb0ec7f

Pierre Biava nobody at users.sourceforge.net
Sun Jul 4 21:12:21 CEST 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "grisbi".

The branch, master has been updated
       via  071c333b3443b278ae37c042a7f9ee751fb0ec7f (commit)
       via  c59b15b30e192b7e31f21d6bc7f937e30130cd6d (commit)
       via  ba899f1305645018b98ab721de55b52c2677ec11 (commit)
      from  21b73e746529243b3c7b14bf13c664e29e912c91 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 071c333b3443b278ae37c042a7f9ee751fb0ec7f
Author: pbiava <pierre.biava at nerim.net>
Date:   Sun Jul 4 20:21:23 2010 +0200

    Changing the management of categories for the new combofix

commit c59b15b30e192b7e31f21d6bc7f937e30130cd6d
Author: pbiava <pierre.biava at nerim.net>
Date:   Sun Jul 4 20:20:30 2010 +0200

    Changing the management of budgetary allocations for the new combofix

commit ba899f1305645018b98ab721de55b52c2677ec11
Author: pbiava <pierre.biava at nerim.net>
Date:   Sun Jul 4 19:54:33 2010 +0200

    Fix adding a payee in a  combofix

-----------------------------------------------------------------------

Changes:
diff --git a/src/gsb_account.c b/src/gsb_account.c
index fa3f890..b4dc8bf 100644
--- a/src/gsb_account.c
+++ b/src/gsb_account.c
@@ -116,7 +116,7 @@ gboolean gsb_account_new ( kind_account account_type,
     gsb_data_account_set_name (account_number, name);
 
     /* update the combofix for categ */ 
-    gsb_category_update_combofix ();
+    gsb_category_update_combofix ( FALSE );
 
     /* update the name of accounts in form */
     gsb_account_update_combo_list ( gsb_form_scheduler_get_element_widget (SCHEDULED_FORM_ACCOUNT),
diff --git a/src/gsb_category.c b/src/gsb_category.c
index e2838f4..4f6c399 100644
--- a/src/gsb_category.c
+++ b/src/gsb_category.c
@@ -276,14 +276,15 @@ gboolean gsb_category_assistant_create_categories ( GtkWidget *assistant )
  *
  * \return FALSE
  * */
-gboolean gsb_category_update_combofix ( void )
+gboolean gsb_category_update_combofix ( gboolean force )
 {
-    if ( gsb_data_form_check_for_value ( TRANSACTION_FORM_CATEGORY ))
-	gtk_combofix_set_list ( GTK_COMBOFIX ( gsb_form_widget_get_widget (TRANSACTION_FORM_CATEGORY)),
-				gsb_data_category_get_name_list ( TRUE,
-								  TRUE,
-								  TRUE,
-								  TRUE ));
+    if ( gsb_data_form_check_for_value ( TRANSACTION_FORM_CATEGORY ) || force )
+    {
+        gtk_combofix_set_list ( GTK_COMBOFIX ( gsb_form_widget_get_widget (
+                        TRANSACTION_FORM_CATEGORY ) ),
+                        gsb_data_category_get_name_list ( TRUE, TRUE, TRUE, TRUE ) );
+    }
+ 
     return FALSE;
 }
 
diff --git a/src/gsb_category.h b/src/gsb_category.h
index 29d40de..d6d8396 100644
--- a/src/gsb_category.h
+++ b/src/gsb_category.h
@@ -9,7 +9,7 @@
 /* START_DECLARATION */
 gboolean gsb_category_assistant_create_categories ( GtkWidget *assistant );
 GtkWidget *gsb_category_assistant_create_choice_page ( GtkWidget *assistant );
-gboolean gsb_category_update_combofix ( void );
+gboolean gsb_category_update_combofix ( gboolean force );
 /* END_DECLARATION */
 
 
diff --git a/src/gsb_data_budget.c b/src/gsb_data_budget.c
index 17e07c1..7415413 100644
--- a/src/gsb_data_budget.c
+++ b/src/gsb_data_budget.c
@@ -1,8 +1,9 @@
 /* ************************************************************************** */
 /*                                                                            */
-/*     Copyright (C)	2000-2008 Cédric Auger (cedric at grisbi.org)	      */
-/*			2003-2008 Benjamin Drieu (bdrieu at april.org)	      */
-/* 			http://www.grisbi.org				      */
+/*     Copyright (C)    2000-2008 Cédric Auger (cedric at grisbi.org)            */
+/*          2003-2008 Benjamin Drieu (bdrieu at april.org)                       */
+/*          2009-2010 Pierre Biava (grisbi at pierre.biava.name)                 */
+/*          http://www.grisbi.org                                             */
 /*                                                                            */
 /*  This program is free software; you can redistribute it and/or modify      */
 /*  it under the terms of the GNU General Public License as published by      */
@@ -32,13 +33,14 @@
 #include "gsb_data_budget.h"
 #include "meta_budgetary.h"
 #include "imputation_budgetaire.h"
+#include "gsb_data_form.h"
 #include "gsb_data_scheduled.h"
 #include "gsb_data_transaction.h"
+#include "gsb_form_widget.h"
 #include "gsb_real.h"
 #include "utils_str.h"
 #include "include.h"
 #include "structures.h"
-#include "gsb_real.h"
 #include "erreur.h"
 /*END_INCLUDE*/
 
@@ -86,18 +88,18 @@ typedef struct
 static void _gsb_data_budget_free ( struct_budget* budget );
 static void _gsb_data_sub_budget_free ( struct_sub_budget* sub_budget );
 static GSList *gsb_data_budget_append_sub_budget_to_list ( GSList *budget_list,
-						    GSList *sub_budget_list );
+                        GSList *sub_budget_list );
 static gint gsb_data_budget_get_pointer_from_name_in_glist ( struct_budget *budget,
-						      const gchar *name );
+                        const gchar *name );
 static gint gsb_data_budget_get_pointer_from_sub_name_in_glist ( struct_sub_budget *sub_budget,
-							  const gchar *name );
+                        const gchar *name );
 static gpointer gsb_data_budget_get_structure_in_list ( gint no_budget,
-						 GSList *list );
+                        GSList *list );
 static gint gsb_data_budget_max_number ( void );
 static gint gsb_data_budget_max_sub_budget_number ( gint budget_number );
 static gint gsb_data_budget_new ( const gchar *name );
 static gint gsb_data_budget_new_sub_budget ( gint budget_number,
-				      const gchar *name );
+                        const gchar *name );
 static void gsb_data_budget_reset_counters ( void );
 static gint gsb_data_sub_budget_compare ( struct_sub_budget * a, struct_sub_budget * b );
 /*END_STATIC*/
@@ -244,7 +246,7 @@ gpointer gsb_data_budget_get_empty_budget ( void )
  * \return the adr of the struct of the budget (NULL if doesn't exit)
  * */
 gpointer gsb_data_budget_get_structure_in_list ( gint no_budget,
-						 GSList *list )
+                        GSList *list )
 {
     GSList *tmp;
 
@@ -280,7 +282,7 @@ gpointer gsb_data_budget_get_structure_in_list ( gint no_budget,
  * \return the adr of the struct of the sub-budget (NULL if doesn't exit)
  * */
 gpointer gsb_data_budget_get_sub_budget_structure ( gint no_budget,
-						    gint no_sub_budget )
+                        gint no_sub_budget )
 {
     GSList *tmp;
     struct_budget *budget;
@@ -551,7 +553,7 @@ gboolean gsb_data_budget_remove ( gint no_budget )
  * \return TRUE ok
  * */
 gboolean gsb_data_budget_sub_budget_remove ( gint no_budget,
-					     gint no_sub_budget )
+                        gint no_sub_budget )
 {
     struct_budget *budget;
     struct_sub_budget *sub_budget;
@@ -584,7 +586,7 @@ gboolean gsb_data_budget_sub_budget_remove ( gint no_budget,
  * \return the number of the new sub-budget or 0 if problem
  * */
 gint gsb_data_budget_new_sub_budget ( gint budget_number,
-				      const gchar *name )
+                        const gchar *name )
 {
     gint sub_budget_number;
 
@@ -612,7 +614,7 @@ gint gsb_data_budget_new_sub_budget ( gint budget_number,
  * \return the number of the new sub-budget or 0 if problem
  * */
 gint gsb_data_budget_new_sub_budget_with_number ( gint number,
-						  gint budget_number)
+                        gint budget_number)
 {
     struct_budget *budget;
     struct_sub_budget *sub_budget;
@@ -647,8 +649,8 @@ gint gsb_data_budget_new_sub_budget_with_number ( gint number,
  * \return the number of the budget or FALSE if problem
  * */
 gint gsb_data_budget_get_number_by_name ( const gchar *name,
-					  gboolean create,
-					  gint budget_type )
+                        gboolean create,
+                        gint budget_type )
 {
     GSList *list_tmp;
     gint budget_number = 0;
@@ -675,9 +677,8 @@ gint gsb_data_budget_get_number_by_name ( const gchar *name,
 	if (create)
 	{
 	    budget_number = gsb_data_budget_new (name);
-	    gsb_data_budget_set_type ( budget_number,
-				       budget_type );
-	    gsb_budget_update_combofix ();
+	    gsb_data_budget_set_type ( budget_number, budget_type );
+	    gsb_budget_update_combofix ( FALSE );
 	}
     }
     return budget_number;
@@ -696,8 +697,8 @@ gint gsb_data_budget_get_number_by_name ( const gchar *name,
  * \return the number of the sub-budget or FALSE if problem
  * */
 gint gsb_data_budget_get_sub_budget_number_by_name ( gint budget_number,
-						     const gchar *name,
-						     gboolean create )
+                        const gchar *name,
+                        gboolean create )
 {
     GSList *list_tmp;
     struct_budget *budget;
@@ -744,7 +745,7 @@ gint gsb_data_budget_get_sub_budget_number_by_name ( gint budget_number,
  * \return 0 if it's the same name
  * */
 gint gsb_data_budget_get_pointer_from_name_in_glist ( struct_budget *budget,
-						      const gchar *name )
+                        const gchar *name )
 {
     return ( my_strcasecmp ( budget -> budget_name, name ) );
 }
@@ -760,7 +761,7 @@ gint gsb_data_budget_get_pointer_from_name_in_glist ( struct_budget *budget,
  * \return 0 if it's the same name
  * */
 gint gsb_data_budget_get_pointer_from_sub_name_in_glist ( struct_sub_budget *sub_budget,
-							  const gchar *name )
+                        const gchar *name )
 {
     return ( my_strcasecmp ( sub_budget -> sub_budget_name, name ));
 }
@@ -778,8 +779,8 @@ gint gsb_data_budget_get_pointer_from_sub_name_in_glist ( struct_sub_budget *sub
  * 	the returned value need to be freed
  * */
 gchar *gsb_data_budget_get_name ( gint no_budget,
-				  gint no_sub_budget,
-				  const gchar *return_value_error )
+                    gint no_sub_budget,
+                    const gchar *return_value_error )
 {
     struct_budget *budget;
     gchar *return_value;
@@ -820,27 +821,32 @@ gchar *gsb_data_budget_get_name ( gint no_budget,
  * \return TRUE if ok or FALSE if problem
  * */
 gboolean gsb_data_budget_set_name ( gint no_budget,
-				    const gchar *name )
+                    const gchar *name )
 {
     struct_budget *budget;
 
     budget = gsb_data_budget_get_structure ( no_budget );
 
     if (!budget)
-	return FALSE;
+        return FALSE;
 
     /* we free the last name */
 
     if ( budget -> budget_name )
-	g_free (budget -> budget_name);
+        g_free (budget -> budget_name);
 
     /* and copy the new one */
     if ( name )
-	budget -> budget_name = my_strdup (name);
-    else
-	budget -> budget_name = NULL;
+    {
+        GtkWidget *combofix;
 
-    gsb_budget_update_combofix ();
+        budget -> budget_name = my_strdup (name);
+        combofix = gsb_form_widget_get_widget ( TRANSACTION_FORM_PARTY );
+        if ( combofix )
+            gsb_budget_update_combofix ( TRUE );
+    }
+    else
+        budget -> budget_name = NULL;
 
     return TRUE;
 }
@@ -856,8 +862,8 @@ gboolean gsb_data_budget_set_name ( gint no_budget,
  * 		or return_value_error to be freed too
  * */
 gchar *gsb_data_budget_get_sub_budget_name ( gint no_budget,
-					     gint no_sub_budget,
-					     const gchar *return_value_error )
+                        gint no_sub_budget,
+                        const gchar *return_value_error )
 {
     struct_sub_budget *sub_budget;
 
@@ -882,8 +888,8 @@ gchar *gsb_data_budget_get_sub_budget_name ( gint no_budget,
  * \return TRUE if ok or FALSE if problem
  * */
 gboolean gsb_data_budget_set_sub_budget_name ( gint no_budget,
-					       gint no_sub_budget,
-					       const gchar *name )
+                        gint no_sub_budget,
+                        const gchar *name )
 {
     struct_sub_budget *sub_budget;
 
@@ -916,7 +922,7 @@ gboolean gsb_data_budget_set_sub_budget_name ( gint no_budget,
  * \return a g_slist of g_slist of gchar *
  * */
 GSList *gsb_data_budget_get_name_list ( gboolean set_debit,
-					gboolean set_credit )
+                        gboolean set_credit )
 {
     GSList *return_list;
     GSList *tmp_list;
@@ -981,7 +987,7 @@ GSList *gsb_data_budget_get_name_list ( gboolean set_debit,
  * \return the new budget_list (normally shouldn't changed
  * */
 GSList *gsb_data_budget_append_sub_budget_to_list ( GSList *budget_list,
-						    GSList *sub_budget_list )
+                        GSList *sub_budget_list )
 {
     GSList *tmp_list;
 
@@ -1040,7 +1046,7 @@ gint gsb_data_budget_get_type ( gint no_budget )
  * \return TRUE if ok or FALSE if problem
  * */
 gboolean gsb_data_budget_set_type ( gint no_budget,
-				    gint budget_type )
+                        gint budget_type )
 {
     struct_budget *budget;
 
@@ -1084,7 +1090,7 @@ gint gsb_data_budget_get_nb_transactions ( gint no_budget )
  * \return nb_transactions of the sub-budget or 0 if problem
  * */
 gint gsb_data_budget_get_sub_budget_nb_transactions ( gint no_budget,
-						      gint no_sub_budget )
+                        gint no_sub_budget )
 {
     struct_sub_budget *sub_budget;
 
@@ -1150,7 +1156,7 @@ gsb_real gsb_data_budget_get_balance ( gint no_budget )
  * \return balance of the sub-budget or 0 if problem
  * */
 gsb_real gsb_data_budget_get_sub_budget_balance ( gint no_budget,
-						  gint no_sub_budget )
+                        gint no_sub_budget )
 {
     struct_sub_budget *sub_budget;
 
@@ -1271,8 +1277,8 @@ void gsb_data_budget_update_counters ( void )
  * \param sub_budget_id		Sub-budget to add transaction into total.
  */
 void gsb_data_budget_add_transaction_to_budget ( gint transaction_number,
-						 gint budget_id,
-						 gint sub_budget_id )
+                        gint budget_id,
+                        gint sub_budget_id )
 {
     struct_budget *budget;
     struct_sub_budget *sub_budget;
@@ -1509,8 +1515,8 @@ gboolean gsb_debug_duplicate_budget_fix ()
  * \return
  * */
 void gsb_data_budget_set_budget_from_string ( gint transaction_number,
-					      const gchar *string,
-					      gboolean is_transaction )
+                        const gchar *string,
+                        gboolean is_transaction )
 {
     gchar **tab_char;
     gint budget_number;
diff --git a/src/gsb_data_category.c b/src/gsb_data_category.c
index fab973e..a7d26c6 100644
--- a/src/gsb_data_category.c
+++ b/src/gsb_data_category.c
@@ -1,6 +1,7 @@
 /* ************************************************************************** */
 /*                                                                            */
 /*     Copyright (C)    2000-2008 Cédric Auger (cedric at grisbi.org)            */
+/*          2009-2010 Pierre Biava (grisbi at pierre.biava.name)                 */
 /*          http://www.grisbi.org                                             */
 /*                                                                            */
 /*  This program is free software; you can redistribute it and/or modify      */
@@ -32,14 +33,15 @@
 #include "meta_categories.h"
 #include "gsb_category.h"
 #include "gsb_data_account.h"
+#include "gsb_data_form.h"
 #include "gsb_data_mix.h"
 #include "gsb_data_transaction.h"
+#include "gsb_form_widget.h"
 #include "gsb_real.h"
 #include "utils_str.h"
 #include "include.h"
 #include "erreur.h"
 #include "structures.h"
-#include "gsb_real.h"
 /*END_INCLUDE*/
 
 /**
@@ -725,9 +727,8 @@ gint gsb_data_category_get_number_by_name ( const gchar *name,
 	if (create)
 	{
 	    category_number = gsb_data_category_new (name);
-	    gsb_data_category_set_type ( category_number,
-					 category_type );
-	    gsb_category_update_combofix ();
+	    gsb_data_category_set_type ( category_number, category_type );
+	    gsb_category_update_combofix ( FALSE );
 	}
     }
     return category_number;
@@ -775,7 +776,7 @@ gint gsb_data_category_get_sub_category_number_by_name ( gint category_number,
 	{
 	    sub_category_number = gsb_data_category_new_sub_category ( category_number,
 								       name);
-	    gsb_category_update_combofix ();
+	    gsb_category_update_combofix ( FALSE );
 	}
     }
     return sub_category_number;
@@ -879,27 +880,32 @@ gchar *gsb_data_category_get_name ( gint no_category,
  * \return TRUE if ok or FALSE if problem
  * */
 gboolean gsb_data_category_set_name ( gint no_category,
-				      const gchar *name )
+                        const gchar *name )
 {
     struct_category *category;
-
+    
     category = gsb_data_category_get_structure ( no_category );
 
-    if (!category)
-	return FALSE;
+    if ( !category )
+        return FALSE;
 
-    /* we free the last name */
 
+    /* we free the last name */
     if ( category -> category_name )
-	g_free (category -> category_name);
+        g_free ( category -> category_name );
 
     /* and copy the new one */
     if ( name )
-	category -> category_name = my_strdup (name);
-    else
-	category -> category_name = NULL;
+    {
+        GtkWidget *combofix;
 
-    gsb_category_update_combofix ();
+        category -> category_name = my_strdup ( name );
+        combofix = gsb_form_widget_get_widget ( TRANSACTION_FORM_PARTY );
+        if ( combofix )
+            gsb_category_update_combofix ( TRUE );
+    }
+    else
+        category -> category_name = NULL;
 
     return TRUE;
 }
@@ -949,8 +955,8 @@ gboolean gsb_data_category_set_sub_category_name ( gint no_category,
     sub_category = gsb_data_category_get_sub_category_structure ( no_category,
 								  no_sub_category );
 
-    if (!sub_category)
-	return FALSE;
+    if ( !sub_category )
+        return FALSE;
 
     /* we free the last name */
 
@@ -959,11 +965,16 @@ gboolean gsb_data_category_set_sub_category_name ( gint no_category,
 
     /* and copy the new one */
     if ( name )
-	sub_category -> sub_category_name = my_strdup (name);
+    {
+        GtkWidget *combofix;
+        
+        sub_category -> sub_category_name = my_strdup ( name );
+        combofix = gsb_form_widget_get_widget ( TRANSACTION_FORM_PARTY );
+        if ( combofix )
+            gsb_category_update_combofix ( TRUE );
+    }
     else
-	sub_category -> sub_category_name = NULL;
-
-    gsb_category_update_combofix ();
+        sub_category -> sub_category_name = NULL;
 
     return TRUE;
 }
@@ -1647,7 +1658,7 @@ gint gsb_data_category_test_create_category ( gint no_category,
         {
             category_number = gsb_data_category_new (name);
             gsb_data_category_set_type ( category_number, category_type );
-            gsb_category_update_combofix ();
+            gsb_category_update_combofix ( FALSE );
         }
         return category_number;
     }
@@ -1683,7 +1694,7 @@ gboolean gsb_data_category_test_create_sub_category ( gint no_category,
         else
         {
             sub_category_number = gsb_data_category_new_sub_category ( no_category, name );
-            gsb_category_update_combofix ();
+            gsb_category_update_combofix ( FALSE );
         }
         return TRUE;
     }
diff --git a/src/gsb_data_payee.c b/src/gsb_data_payee.c
index 0eb5159..09d0165 100644
--- a/src/gsb_data_payee.c
+++ b/src/gsb_data_payee.c
@@ -454,9 +454,9 @@ gboolean gsb_data_payee_set_name ( gint no_payee,
     }
     
     /* and copy the new one or set NULL */
-    payee -> payee_name = my_strdup (name);
+    payee -> payee_name = my_strdup ( name );
 
-    if ( combofix )
+    if ( combofix && name && strlen ( name ) )
         gtk_combofix_append_text ( GTK_COMBOFIX ( combofix ), name );
 
     return TRUE;
diff --git a/src/imputation_budgetaire.c b/src/imputation_budgetaire.c
index 10911c1..65ff5d0 100644
--- a/src/imputation_budgetaire.c
+++ b/src/imputation_budgetaire.c
@@ -342,11 +342,12 @@ gboolean budgetary_line_drag_data_get ( GtkTreeDragSource * drag_source, GtkTree
  *
  * \return FALSE
  * */
-gboolean gsb_budget_update_combofix ( void )
+gboolean gsb_budget_update_combofix ( gboolean force )
 {
-    if ( gsb_data_form_check_for_value (TRANSACTION_FORM_BUDGET))
-	gtk_combofix_set_list ( GTK_COMBOFIX ( gsb_form_widget_get_widget (TRANSACTION_FORM_BUDGET)),
-				gsb_data_budget_get_name_list (TRUE, TRUE));
+    if ( gsb_data_form_check_for_value ( TRANSACTION_FORM_BUDGET ) || force )
+        gtk_combofix_set_list ( GTK_COMBOFIX ( gsb_form_widget_get_widget (
+                        TRANSACTION_FORM_BUDGET ) ),
+                        gsb_data_budget_get_name_list ( TRUE, TRUE ) );
 
     return FALSE;
 }
diff --git a/src/imputation_budgetaire.h b/src/imputation_budgetaire.h
index 187cacf..aec95a8 100644
--- a/src/imputation_budgetaire.h
+++ b/src/imputation_budgetaire.h
@@ -7,7 +7,7 @@
 /* START_DECLARATION */
 gboolean budgetary_hold_position_set_expand ( gboolean expand );
 gboolean budgetary_hold_position_set_path ( GtkTreePath *path );
-gboolean gsb_budget_update_combofix ( void );
+gboolean gsb_budget_update_combofix ( gboolean force );
 GtkWidget *onglet_imputations ( void );
 void remplit_arbre_imputation ( void );
 /* END_DECLARATION */
diff --git a/src/meta_budgetary.c b/src/meta_budgetary.c
index 306f2ad..47da4d4 100644
--- a/src/meta_budgetary.c
+++ b/src/meta_budgetary.c
@@ -222,7 +222,6 @@ gint budgetary_line_add_div ()
     }
 
     new_budget_number = gsb_data_budget_get_number_by_name ( name, TRUE, 0 );
-    gsb_budget_update_combofix ();
 
     return new_budget_number;
 }
@@ -254,8 +253,6 @@ gint budgetary_line_add_sub_div ( int div_id )
 
     new_sub_budget_number = gsb_data_budget_get_sub_budget_number_by_name ( div_id, name, TRUE );
 
-    gsb_budget_update_combofix ();
-
     return new_sub_budget_number;
 }
 
diff --git a/src/meta_categories.c b/src/meta_categories.c
index 7f2465e..048dac4 100644
--- a/src/meta_categories.c
+++ b/src/meta_categories.c
@@ -266,7 +266,7 @@ gboolean category_scheduled_set_div_id ( gint scheduled_number,
  *
  *
  */
-gint category_add_div ()
+gint category_add_div ( void )
 {
     gint new_category_number;
     gchar * name;
@@ -283,7 +283,6 @@ gint category_add_div ()
     }
 
     new_category_number = gsb_data_category_get_number_by_name ( name, TRUE, 0 );
-    gsb_category_update_combofix ();
 
     return new_category_number;
 }
@@ -315,8 +314,6 @@ gint category_add_sub_div ( int div_id )
 
     new_sub_category_number = gsb_data_category_get_sub_category_number_by_name ( div_id, name, TRUE );
 
-    gsb_category_update_combofix ();
-
     return new_sub_category_number;
 }
 


hooks/post-receive
-- 
grisbi


More information about the cvs mailing list