rem: "Ordre_des_comptes", pointeur_char );  xmlNewTextChild ( node_1, NULL,
context: gboolean enregistre_fichier ( gchar *new_file ){    xmlDocPtr doc;    xmlNodePtr node;    xmlNodePtr node_1;    gint resultat;    gchar *pointeur_char;    GSList *pointeur_liste;    GList *pointeur_list;    gint i, j;    GSList *pointeur_liste_2;    struct stat buffer_stat;    gint mettre_permission;    GSList *list_tmp;    if ( DEBUG )	printf ( "enregistre_fichier : %s\n", new_file );    /*     on ne se préocupe plus des ouvertures et autre à ce niveau */    /*     cette fonction enregistre le fichier sans avertissement(écrasement, fichier déjà ouvert...) */    /* 	tout doit être fait avant */        /* on regarde ici si le fichier existe */    /*   s'il n'existe pas on mettre ses permissions à 600, sinon on les laisse comme ça */    if ( utf8_stat ( new_file,		&buffer_stat ) == -1 )	mettre_permission = 1;    else	mettre_permission = 0;    etat.en_train_de_sauvegarder = 1;    /* creation de l'arbre xml en memoire */    doc = xmlNewDoc("1.0");    /* la racine est grisbi */    doc->children = xmlNewDocNode ( doc,				    NULL,				    "Grisbi",				    NULL );    /* on commence à ajouter les generalites */    node = xmlNewChild ( doc->children,			 NULL,			 "Generalites",			 NULL );    xmlNewTextChild ( node,		      NULL,		      "Version_fichier",		      VERSION_FICHIER );    xmlNewTextChild ( node,		      NULL,		      "Version_grisbi",		      VERSION );    xmlNewTextChild ( node,		      NULL,		      "Backup",		      nom_fichier_backup );    xmlNewTextChild ( node,		      NULL,		      "Titre",		      titre_fichier);    xmlNewTextChild ( node,		      NULL,		      "Adresse_commune",		      adresse_commune);    xmlNewTextChild ( node,		      NULL,		      "Adresse_secondaire",		      adresse_secondaire);    xmlNewTextChild ( node,		      NULL,		      "Numero_devise_totaux_tiers",		      itoa ( no_devise_totaux_tiers));    xmlNewTextChild ( node,		      NULL,		      "Numero_devise_totaux_categ",		      itoa ( no_devise_totaux_categ));    xmlNewTextChild ( node,		      NULL,		      "Numero_devise_totaux_ib",		      itoa ( no_devise_totaux_ib));    xmlNewTextChild ( node,		      NULL,		      "Type_affichage_des_echeances",		      itoa (affichage_echeances));    xmlNewTextChild ( node,		      NULL,		      "Affichage_echeances_perso_nb_libre",		      itoa (affichage_echeances_perso_nb_libre));    xmlNewTextChild ( node,		      NULL,		      "Type_affichage_perso_echeances",		      itoa (affichage_echeances_perso_j_m_a));    xmlNewTextChild ( node,		      NULL,		      "Numero_derniere_operation",		      itoa ( no_derniere_operation));    xmlNewTextChild ( node,		      NULL,		      "Echelle_date_import",		      itoa (valeur_echelle_recherche_date_import ));    xmlNewTextChild ( node,		      NULL,		      "Utilise_logo",		      itoa (etat.utilise_logo ));    xmlNewTextChild ( node,		      NULL,		      "Chemin_logo",		      chemin_logo );    xmlNewChild ( node,		  NULL,		  "Caracteristiques_par_compte",		  itoa(etat.retient_affichage_par_compte));    /* creation de l'ordre de l'affichage des opés */    pointeur_char = NULL;    for ( i=0 ; i<4 ; i++ )	for ( j=0 ; j< 7 ; j++ )	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "-",					      itoa ( tab_affichage_ope[i][j] ),					      NULL );	    else		pointeur_char = itoa ( tab_affichage_ope[i][j] );    xmlNewTextChild ( node,		      NULL,		      "Affichage_opes",		      pointeur_char );    /* creation des rapport largeurs colonnes */    pointeur_char = NULL;    for ( i=0 ; i<7 ; i++ )	if ( pointeur_char )	    pointeur_char = g_strconcat ( pointeur_char,					  "-",					  itoa ( rapport_largeur_colonnes[i] ),					  NULL );	else	    pointeur_char = itoa ( rapport_largeur_colonnes[i] );    xmlNewTextChild ( node,		      NULL,		      "Rapport_largeur_col",		      pointeur_char );    /* creation des lignes affichées par caractéristiques */    xmlNewTextChild ( node,		      NULL,		      "Ligne_aff_une_ligne",		      itoa ( ligne_affichage_une_ligne ));    pointeur_char = g_strconcat ( itoa ( GPOINTER_TO_INT ( lignes_affichage_deux_lignes -> data )),				  "-",				  itoa ( GPOINTER_TO_INT ( lignes_affichage_deux_lignes -> next -> data )),				  NULL );    xmlNewTextChild ( node,		      NULL,		      "Lignes_aff_deux_lignes",		      pointeur_char );    pointeur_char = g_strconcat ( itoa ( GPOINTER_TO_INT ( lignes_affichage_trois_lignes -> data )),				  "-",				  itoa ( GPOINTER_TO_INT ( lignes_affichage_trois_lignes -> next -> data )),				  "-",				  itoa ( GPOINTER_TO_INT ( lignes_affichage_trois_lignes -> next -> next -> data )),				  NULL );    xmlNewTextChild ( node,		      NULL,		      "Lignes_aff_trois_lignes",		      pointeur_char );    /*     si on utilise un formulaire différent pour chaque compte */    xmlNewChild ( node,		  NULL,		  "Formulaire_distinct_par_compte",		  itoa(etat.formulaire_distinct_par_compte));    /* creation des rapport largeurs colonnes de l'échéancier */    pointeur_char = NULL;    for ( i=0 ; i<NB_COLS_SCHEDULER ; i++ )	if ( pointeur_char )	    pointeur_char = g_strconcat ( pointeur_char,					  "-",					  itoa ( scheduler_col_width[i] ),					  NULL );	else	    pointeur_char = itoa ( scheduler_col_width[i] );    xmlNewTextChild ( node,		      NULL,		      "Rapport_largeur_col_echeancier",		      pointeur_char );    /*   on commence la sauvegarde des comptes : 2 parties, les generalites */    /* puis les comptes 1 par 1 */    node = xmlNewChild ( doc->children,			 NULL,			 "Comptes",			 NULL );    /* c'est node_1 qui va contenir les generalites puis les comptes */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    /* creation de l'ordre des comptes */    pointeur_liste = ordre_comptes;    pointeur_char = NULL;    do    {	if ( pointeur_char )	    pointeur_char = g_strconcat ( pointeur_char,					  "-",					  itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					  NULL );	else	    pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	pointeur_liste = pointeur_liste -> next;    }    while ( pointeur_liste );    xmlNewTextChild ( node_1,		      NULL,		      "Ordre_des_comptes",		      pointeur_char );    xmlNewTextChild ( node_1,		      NULL,		      "Compte_courant",		      itoa ( compte_courant ) );    /* mise en place des comptes 1 par 1 */    list_tmp = list_struct_accounts;    while ( list_tmp )    {	gint i;	xmlNodePtr node_compte;	gint k;	i = gsb_account_get_no_account ( list_tmp -> data );	node_1 = xmlNewChild ( node,			       NULL,			       "Compte",			       NULL );	/* on met d'abord le detail du compte, les types puis les operations */	/* mise en forme de la date du dernier releve */	if ( gsb_account_get_current_reconcile_date (i) )	    pointeur_char = g_strconcat ( itoa ( g_date_day ( gsb_account_get_current_reconcile_date (i) ) ),					  "/",					  itoa ( g_date_month ( gsb_account_get_current_reconcile_date (i) ) ),					  "/",					  itoa ( g_date_year ( gsb_account_get_current_reconcile_date (i) ) ),					  NULL );	else	    pointeur_char = NULL;	node_compte = xmlNewChild ( node_1,				    NULL,				    "Details",				    NULL );	xmlNewTextChild ( node_compte,			  NULL,			  "Nom",			  gsb_account_get_name (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "Id_compte",			  gsb_account_get_id (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "No_de_compte",			  itoa ( i ));	xmlNewTextChild ( node_compte,			  NULL,			  "Titulaire",			  gsb_account_get_holder_name (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "Type_de_compte",			  itoa ( gsb_account_get_kind (i)));	xmlNewTextChild ( node_compte,			  NULL,			  "Devise",			  itoa ( gsb_account_get_currency (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Banque",			  itoa ( gsb_account_get_bank (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Guichet",			  gsb_account_get_bank_branch_code (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "No_compte_banque",			  gsb_account_get_bank_account_number (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "Cle_du_compte",			  gsb_account_get_bank_account_key (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "Solde_initial",			  g_strdup_printf ( "%4.7f",					    gsb_account_get_init_balance (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Solde_mini_voulu",			  g_strdup_printf ( "%4.7f",					    gsb_account_get_mini_balance_wanted (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Solde_mini_autorise",			  g_strdup_printf ( "%4.7f",					    gsb_account_get_mini_balance_authorized (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Date_dernier_releve",			  pointeur_char );	xmlNewTextChild ( node_compte,			  NULL,			  "Solde_dernier_releve",			  g_strdup_printf ( "%4.7f",					    gsb_account_get_reconcile_balance (i)));	xmlNewTextChild ( node_compte,			  NULL,			  "Dernier_no_de_rapprochement",			  itoa ( gsb_account_get_reconcile_last_number (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Compte_cloture",			  itoa ( gsb_account_get_closed_account (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Affichage_r",			  itoa ( gsb_account_get_r (i)));	xmlNewTextChild ( node_compte,			  NULL,			  "Nb_lignes_ope",			  itoa ( gsb_account_get_nb_rows (i)));	xmlNewTextChild ( node_compte,			  NULL,			  "Commentaires",			  gsb_account_get_comment (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "Adresse_du_titulaire",			  gsb_account_get_holder_address (i) );	xmlNewTextChild ( node_compte,			  NULL,			  "Nombre_de_types",			  itoa ( g_slist_length ( gsb_account_get_method_payment_list (i) ) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Type_defaut_debit",			  itoa ( gsb_account_get_default_debit (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Type_defaut_credit",			  itoa ( gsb_account_get_default_credit (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Tri_par_type",			  itoa ( gsb_account_get_reconcile_sort_type (i) ));	xmlNewTextChild ( node_compte,			  NULL,			  "Neutres_inclus",			  itoa ( gsb_account_get_split_neutral_payment (i) ));	/* mise en place de l'ordre du tri */	pointeur_liste = gsb_account_get_sort_list (i);	pointeur_char = NULL;	while ( pointeur_liste )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_compte,			  NULL,			  "Ordre_du_tri",			  pointeur_char );	xmlNewTextChild ( node_compte,			  NULL,			  "Classement_croissant",			  itoa ( gsb_account_get_sort_type (i) ));	/* 	on sauvegarde l'agencement du formulaire */	xmlNewTextChild ( node_compte,			  NULL,			  "Nb_colonnes_formulaire",			  itoa ( gsb_account_get_form_organization (i) -> nb_colonnes ));	xmlNewTextChild ( node_compte,			  NULL,			  "Nb_lignes_formulaire",			  itoa ( gsb_account_get_form_organization (i) -> nb_lignes ));	pointeur_char = NULL;	for ( k=0 ; k<4 ; k++ )	    for ( j=0 ; j< 6 ; j++ )		if ( pointeur_char )		    pointeur_char = g_strconcat ( pointeur_char,						  "-",						  itoa ( gsb_account_get_form_organization (i) -> tab_remplissage_formulaire [k][j] ),						  NULL );		else		    pointeur_char = itoa ( gsb_account_get_form_organization (i) -> tab_remplissage_formulaire [k][j] );	xmlNewTextChild ( node_compte,			  NULL,			  "Organisation_formulaire",			  pointeur_char );	pointeur_char = NULL;	for ( k=0 ; k<6 ; k++ )	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "-",					      itoa ( gsb_account_get_form_organization (i) -> taille_colonne_pourcent [k] ),					      NULL );	    else		pointeur_char = itoa ( gsb_account_get_form_organization (i) -> taille_colonne_pourcent [k] );	xmlNewTextChild ( node_compte,			  NULL,			  "Largeur_col_formulaire",			  pointeur_char );		/* mise en place des types */	node_compte = xmlNewChild ( node_1,				    NULL,				    "Detail_de_Types",				    NULL );	pointeur_liste = gsb_account_get_method_payment_list (i);	while ( pointeur_liste )	{	    struct struct_type_ope *type;	    xmlNodePtr node_type;	    node_type = xmlNewChild ( node_compte,				      NULL,				      "Type",				      NULL );	    type = pointeur_liste -> data;	    xmlSetProp ( node_type,			 "No",			 itoa ( type -> no_type ));	    xmlSetProp ( node_type,			 "Nom",			 type -> nom_type );	    xmlSetProp ( node_type,			 "Signe",			 itoa ( type -> signe_type ));	    xmlSetProp ( node_type,			 "Affiche_entree",			 itoa ( type -> affiche_entree ));	    xmlSetProp ( node_type,			 "Numerotation_auto",			 itoa ( type -> numerotation_auto ));	    xmlSetProp ( node_type,			 "No_en_cours",			 itoa ( type -> no_en_cours ));	    pointeur_liste = pointeur_liste -> next;	}	/* mise en place des operations */	node_compte = xmlNewChild ( node_1,				    NULL,				    "Detail_des_operations",				    NULL );	pointeur_liste = gsb_account_get_transactions_list (i);	while ( pointeur_liste )	{	    struct structure_operation *operation;	    xmlNodePtr node_ope;	    operation = pointeur_liste -> data;	    node_ope = xmlNewChild ( node_compte,				     NULL,				     "Operation",				     NULL );	    xmlSetProp ( node_ope,			 "No",			 itoa ( operation -> no_operation ));	    xmlSetProp ( node_ope,			 "Id",			 operation -> id_operation );	    xmlSetProp ( node_ope,			 "D",			 g_strdup_printf ( "%d/%d/%d",					   operation -> jour,					   operation -> mois,					   operation -> annee ));	    /* GDC : Ecriture de la date bancaire */	    xmlSetProp ( node_ope,			 "Db",			 g_strdup_printf ( "%d/%d/%d",					   operation -> jour_bancaire,					   operation -> mois_bancaire,					   operation -> annee_bancaire ));	    /* GDCFin */	    xmlSetProp ( node_ope,			 "M",			 g_strdup_printf ( "%4.7f",					   operation -> montant ));	    xmlSetProp ( node_ope,			 "De",			 itoa ( operation -> devise ));	    xmlSetProp ( node_ope,			 "Rdc",			 itoa ( operation -> une_devise_compte_egale_x_devise_ope ));	    xmlSetProp ( node_ope,			 "Tc",			 g_strdup_printf ( "%4.7f",					   operation -> taux_change ));	    xmlSetProp ( node_ope,			 "Fc",			 g_strdup_printf ( "%4.7f",					   operation -> frais_change ));	    xmlSetProp ( node_ope,			 "T",			 itoa ( operation -> tiers ));	    xmlSetProp ( node_ope,			 "C",			 itoa ( operation -> categorie ));	    xmlSetProp ( node_ope,			 "Sc",			 itoa ( operation -> sous_categorie ));	    xmlSetProp ( node_ope,			 "Ov",			 itoa ( operation -> operation_ventilee ));	    xmlSetProp ( node_ope,			 "N",			 operation -> notes );	    xmlSetProp ( node_ope,			 "Ty",			 itoa ( operation -> type_ope ));	    xmlSetProp ( node_ope,			 "Ct",			 operation -> contenu_type );	    xmlSetProp ( node_ope,			 "P",			 itoa ( operation -> pointe ));	    xmlSetProp ( node_ope,			 "A",			 itoa ( operation -> auto_man ));	    xmlSetProp ( node_ope,			 "R",			 itoa ( operation -> no_rapprochement ));	    xmlSetProp ( node_ope,			 "E",			 itoa ( operation -> no_exercice ));	    xmlSetProp ( node_ope,			 "I",			 itoa ( operation -> imputation ));	    xmlSetProp ( node_ope,			 "Si",			 itoa ( operation -> sous_imputation ));	    xmlSetProp ( node_ope,			 "Pc",			 operation -> no_piece_comptable );	    xmlSetProp ( node_ope,			 "Ibg",			 operation -> info_banque_guichet );	    xmlSetProp ( node_ope,			 "Ro",			 itoa ( operation -> relation_no_operation ));	    xmlSetProp ( node_ope,			 "Rc",			 itoa ( operation -> relation_no_compte ));	    xmlSetProp ( node_ope,			 "Va",			 itoa ( operation -> no_operation_ventilee_associee ));	    pointeur_liste = pointeur_liste -> next;	}	list_tmp = list_tmp -> next;    }    /* on sauvegarde maintenant les echeances : generalites puis liste des echeances */    node = xmlNewChild ( doc->children,			 NULL,			 "Echeances",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "Nb_echeances",		      itoa ( nb_echeances ));    xmlNewTextChild ( node_1,		      NULL,		      "No_derniere_echeance",		      itoa ( no_derniere_echeance ));    /* on met les echeances */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_echeances",			   NULL );    pointeur_liste = liste_struct_echeances;    while ( pointeur_liste )    {	struct operation_echeance *echeance;	xmlNodePtr node_echeance;	echeance = pointeur_liste -> data;	node_echeance = xmlNewChild ( node_1,				      NULL,				      "Echeance",				      NULL );	xmlSetProp ( node_echeance,		     "No",		     itoa ( echeance -> no_operation ));	xmlSetProp ( node_echeance,		     "Date",		     g_strdup_printf ( "%d/%d/%d",				       echeance -> jour,				       echeance -> mois,				       echeance -> annee ));	xmlSetProp ( node_echeance,		     "Compte",		     itoa ( echeance -> compte ));	xmlSetProp ( node_echeance,		     "Montant",		     g_strdup_printf ( "%4.7f",				       echeance -> montant ));	xmlSetProp ( node_echeance,		     "Devise",		     itoa ( echeance -> devise ));	xmlSetProp ( node_echeance,		     "Tiers",		     itoa ( echeance -> tiers ));	xmlSetProp ( node_echeance,		     "Categorie",		     itoa ( echeance -> categorie ));	xmlSetProp ( node_echeance,		     "Sous-categorie",		     itoa ( echeance -> sous_categorie ));	xmlSetProp ( node_echeance,		     "Virement_compte",		     itoa ( echeance -> compte_virement ));	xmlSetProp ( node_echeance,		     "Type",		     itoa ( echeance -> type_ope ));	xmlSetProp ( node_echeance,		     "Type_contre_ope",		     itoa ( echeance -> type_contre_ope ));	xmlSetProp ( node_echeance,		     "Contenu_du_type",		     echeance -> contenu_type );	xmlSetProp ( node_echeance,		     "Exercice",		     itoa ( echeance -> no_exercice ));	xmlSetProp ( node_echeance,		     "Imputation",		     itoa ( echeance -> imputation ));	xmlSetProp ( node_echeance,		     "Sous-imputation",		     itoa ( echeance -> sous_imputation ));	xmlSetProp ( node_echeance,		     "Notes",		     echeance -> notes );	xmlSetProp ( node_echeance,		     "Automatique",		     itoa ( echeance -> auto_man ));	xmlSetProp ( node_echeance,		     "Periodicite",		     itoa ( echeance -> periodicite ));	xmlSetProp ( node_echeance,		     "Intervalle_periodicite",		     itoa ( echeance -> intervalle_periodicite_personnalisee ));	xmlSetProp ( node_echeance,		     "Periodicite_personnalisee",		     itoa ( echeance -> periodicite_personnalisee ));	if ( echeance -> jour_limite )	    xmlSetProp ( node_echeance,			 "Date_limite",			 g_strdup_printf ( "%d/%d/%d",					   echeance -> jour_limite,					   echeance -> mois_limite,					   echeance -> annee_limite ));	else	    xmlSetProp ( node_echeance,			 "Date_limite",			 NULL );	xmlSetProp ( node_echeance,		     "Ech_ventilee",		     itoa ( echeance -> operation_ventilee ));	xmlSetProp ( node_echeance,		     "No_ech_associee",		     itoa ( echeance -> no_operation_ventilee_associee ));	pointeur_liste = pointeur_liste -> next;    }    /* mise en place des tiers : generalites puis liste */    node = xmlNewChild ( doc->children,			 NULL,			 "Tiers",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "Nb_tiers",		      itoa ( nb_enregistrements_tiers ));    xmlNewTextChild ( node_1,		      NULL,		      "No_dernier_tiers",		      itoa ( no_dernier_tiers ));    /* on met les tiers */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_tiers",			   NULL );    pointeur_liste = liste_struct_tiers;    while ( pointeur_liste )    {	struct struct_tiers *tiers;	xmlNodePtr node_tiers;	tiers = pointeur_liste -> data;	node_tiers = xmlNewChild ( node_1,				   NULL,				   "Tiers",				   NULL );	xmlSetProp ( node_tiers,		     "No",		     itoa ( tiers -> no_tiers ));	xmlSetProp ( node_tiers,		     "Nom",		     tiers -> nom_tiers );	xmlSetProp ( node_tiers,		     "Informations",		     tiers -> texte );	xmlSetProp ( node_tiers,		     "Liaison",		     itoa ( tiers -> liaison ));	pointeur_liste = pointeur_liste -> next;    }    /* mise en place des categories : generalites puis liste */    node = xmlNewChild ( doc->children,			 NULL,			 "Categories",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "Nb_categories",		      itoa ( nb_enregistrements_categories ));    xmlNewTextChild ( node_1,		      NULL,		      "No_derniere_categorie",		      itoa ( no_derniere_categorie ));    /* on met les categories */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_categories",			   NULL );    pointeur_liste = liste_struct_categories;    while ( pointeur_liste )    {	struct struct_categ *categ;	xmlNodePtr node_categ;	GSList *pointeur_sous_categ;	categ = pointeur_liste -> data;	node_categ = xmlNewChild ( node_1,				   NULL,				   "Categorie",				   NULL );	xmlSetProp ( node_categ,		     "No",		     itoa ( categ -> no_categ ));	xmlSetProp ( node_categ,		     "Nom",		     categ -> nom_categ );	xmlSetProp ( node_categ,		     "Type",		     itoa ( categ -> type_categ ));	xmlSetProp ( node_categ,		     "No_derniere_sous_categorie",		     itoa ( categ -> no_derniere_sous_categ ));	/* on ajoute les sous categories */	pointeur_sous_categ = categ -> liste_sous_categ;	while ( pointeur_sous_categ )	{	    struct struct_sous_categ *sous_categ;	    xmlNodePtr node_sous_categ;	    sous_categ = pointeur_sous_categ -> data;	    node_sous_categ = xmlNewChild ( node_categ,					    NULL,					    "Sous-categorie",					    NULL );	    xmlSetProp ( node_sous_categ,			 "No",			 itoa ( sous_categ -> no_sous_categ ));	    xmlSetProp ( node_sous_categ,			 "Nom",			 sous_categ -> nom_sous_categ );	    pointeur_sous_categ = pointeur_sous_categ -> next;	}	pointeur_liste = pointeur_liste -> next;    }    /* mise en place des imputations budgetaires : generalites puis liste */    node = xmlNewChild ( doc->children,			 NULL,			 "Imputations",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "Nb_imputations",		      itoa ( nb_enregistrements_imputations ));    xmlNewTextChild ( node_1,		      NULL,		      "No_derniere_imputation",		      itoa ( no_derniere_imputation ));    /* on met les categories */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_imputations",			   NULL );    pointeur_liste = liste_struct_imputation;    while ( pointeur_liste )    {	struct struct_imputation *imputation;	xmlNodePtr node_imputation;	GSList *pointeur_sous_imputation;	imputation = pointeur_liste -> data;	node_imputation = xmlNewChild ( node_1,					NULL,					"Imputation",					NULL );	xmlSetProp ( node_imputation,		     "No",		     itoa ( imputation -> no_imputation ));	xmlSetProp ( node_imputation,		     "Nom",		     imputation -> nom_imputation );	xmlSetProp ( node_imputation,		     "Type",		     itoa ( imputation -> type_imputation ));	xmlSetProp ( node_imputation,		     "No_derniere_sous_imputation",		     itoa ( imputation -> no_derniere_sous_imputation ));	/* on ajoute les sous ib */	pointeur_sous_imputation = imputation -> liste_sous_imputation;	while ( pointeur_sous_imputation )	{	    struct struct_sous_imputation *sous_imputation;	    xmlNodePtr node_sous_imputation;	    sous_imputation = pointeur_sous_imputation -> data;	    node_sous_imputation = xmlNewChild ( node_imputation,						 NULL,						 "Sous-imputation",						 NULL );	    xmlSetProp ( node_sous_imputation,			 "No",			 itoa ( sous_imputation -> no_sous_imputation ));	    xmlSetProp ( node_sous_imputation,			 "Nom",			 sous_imputation -> nom_sous_imputation );	    pointeur_sous_imputation = pointeur_sous_imputation -> next;	}	pointeur_liste = pointeur_liste -> next;    }    /* mise en place des devises : generalites puis liste */    node = xmlNewChild ( doc->children,			 NULL,			 "Devises",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "Nb_devises",		      itoa ( nb_devises ));    xmlNewTextChild ( node_1,		      NULL,		      "No_derniere_devise",		      itoa ( no_derniere_devise ));    /* on met les devises */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_devises",			   NULL );    pointeur_liste = liste_struct_devises;    while ( pointeur_liste )    {	struct struct_devise *devise;	xmlNodePtr node_devise;	devise = pointeur_liste -> data;	node_devise = xmlNewChild ( node_1,				    NULL,				    "Devise",				    NULL );	xmlSetProp ( node_devise,		     "No",		     itoa ( devise -> no_devise ));	xmlSetProp ( node_devise,		     "Nom",		     devise -> nom_devise );	xmlSetProp ( node_devise,		     "Code",		     devise -> code_devise );	xmlSetProp ( node_devise,		     "IsoCode",		     devise -> code_iso4217_devise );	xmlSetProp ( node_devise,		     "Passage_euro",		     itoa ( devise -> passage_euro ));	if ( devise -> date_dernier_change )	    xmlSetProp ( node_devise,			 "Date_dernier_change",			 g_strdup_printf (  "%d/%d/%d",					    g_date_day ( devise -> date_dernier_change ),					    g_date_month ( devise -> date_dernier_change ),					    g_date_year ( devise -> date_dernier_change )));	else	    xmlSetProp ( node_devise,			 "Date_dernier_change",			 NULL );	xmlSetProp ( node_devise,		     "Rapport_entre_devises",		     itoa ( devise -> une_devise_1_egale_x_devise_2 ));	xmlSetProp ( node_devise,		     "Devise_en_rapport",		     itoa ( devise -> no_devise_en_rapport ));	xmlSetProp ( node_devise,		     "Change",		     g_strdup_printf ( "%f",				       devise -> change ));	pointeur_liste = pointeur_liste -> next;    }    /* mise en place des banques : generalites puis liste */    node = xmlNewChild ( doc->children,			 NULL,			 "Banques",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "Nb_banques",		      itoa ( nb_banques ));    xmlNewTextChild ( node_1,		      NULL,		      "No_derniere_banque",		      itoa ( no_derniere_banque ));    /* on met les banques */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_banques",			   NULL );    pointeur_liste = liste_struct_banques;    while ( pointeur_liste )    {	struct struct_banque *banque;	xmlNodePtr node_banque;	banque = pointeur_liste -> data;	node_banque = xmlNewChild ( node_1,				    NULL,				    "Banque",				    NULL );	xmlSetProp ( node_banque,		     "No",		     itoa ( banque -> no_banque ));	xmlSetProp ( node_banque,		     "Nom",		     banque -> nom_banque );	xmlSetProp ( node_banque,		     "Code",		     banque -> code_banque );	xmlSetProp ( node_banque,		     "Adresse",		     banque -> adr_banque );	xmlSetProp ( node_banque,		     "Tel",		     banque -> tel_banque );	xmlSetProp ( node_banque,		     "Mail",		     banque -> email_banque );	xmlSetProp ( node_banque,		     "Web",		     banque -> web_banque );	xmlSetProp ( node_banque,		     "Nom_correspondant",		     banque -> nom_correspondant );	xmlSetProp ( node_banque,		     "Fax_correspondant",		     banque -> fax_correspondant );	xmlSetProp ( node_banque,		     "Tel_correspondant",		     banque -> tel_correspondant );	xmlSetProp ( node_banque,		     "Mail_correspondant",		     banque -> email_correspondant );	xmlSetProp ( node_banque,		     "Remarques",		     banque -> remarque_banque );	pointeur_liste = pointeur_liste -> next;    }    /* mise en place des exercices : generalites puis liste */    node = xmlNewChild ( doc->children,			 NULL,			 "Exercices",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "Nb_exercices",		      itoa ( nb_exercices ));    xmlNewTextChild ( node_1,		      NULL,		      "No_dernier_exercice",		      itoa ( no_derniere_exercice ));    /* on met les exercices */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_exercices",			   NULL );    pointeur_liste = liste_struct_exercices;    while ( pointeur_liste )    {	struct struct_exercice *exercice;	xmlNodePtr node_exercice;	exercice = pointeur_liste -> data;	node_exercice = xmlNewChild ( node_1,				      NULL,				      "Exercice",				      NULL );	xmlSetProp ( node_exercice,		     "No",		     itoa ( exercice -> no_exercice ));	xmlSetProp ( node_exercice,		     "Nom",		     exercice -> nom_exercice );	if ( exercice->date_debut )	    xmlSetProp ( node_exercice,			 "Date_debut",			 g_strdup_printf ( "%d/%d/%d",					   g_date_day ( exercice->date_debut ),					   g_date_month ( exercice->date_debut ),					   g_date_year ( exercice->date_debut )));	else	    xmlSetProp ( node_exercice,			 "Date_debut",			 NULL );	if ( exercice->date_fin )	    xmlSetProp ( node_exercice,			 "Date_fin",			 g_strdup_printf ( "%d/%d/%d",					   g_date_day ( exercice->date_fin ),					   g_date_month ( exercice->date_fin ),					   g_date_year ( exercice->date_fin )));	else	    xmlSetProp ( node_exercice,			 "Date_fin",			 NULL );	xmlSetProp ( node_exercice,		     "Affiche",		     itoa ( exercice -> affiche_dans_formulaire ));	pointeur_liste = pointeur_liste -> next;    }    /* mise en place des no de rapprochement : generalites puis liste */    node = xmlNewChild ( doc->children,			 NULL,			 "Rapprochements",			 NULL );    /* c'est node_1 qui va contenir les generalites */    /* on n'a pas de generalites, peut être un jour ... */    /*   node_1 = xmlNewChild ( node, */    /* 			 NULL, */    /* 			 "Generalites", */    /* 			 NULL ); */    /*   xmlNewTextChild ( node_1, */    /* 		    NULL, */    /* 		    "Nb_rapprochements", */    /* 		    itoa ( g_slist_length ( liste_struct_rapprochements ))); */    /* on met les rapprochements */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_rapprochements",			   NULL );    pointeur_liste = liste_struct_rapprochements;    while ( pointeur_liste )    {	struct struct_no_rapprochement *rapprochement;	xmlNodePtr node_rapprochement;	rapprochement = pointeur_liste -> data;	node_rapprochement = xmlNewChild ( node_1,					   NULL,					   "Rapprochement",					   NULL );	xmlSetProp ( node_rapprochement,		     "No",		     itoa ( rapprochement -> no_rapprochement ));	xmlSetProp ( node_rapprochement,		     "Nom",		     rapprochement -> nom_rapprochement );	pointeur_liste = pointeur_liste -> next;    }    /* sauvegarde des etats */    node = xmlNewChild ( doc->children,			 NULL,			 "Etats",			 NULL );    /* c'est node_1 qui va contenir les generalites */    node_1 = xmlNewChild ( node,			   NULL,			   "Generalites",			   NULL );    xmlNewTextChild ( node_1,		      NULL,		      "No_dernier_etat",		      itoa ( no_dernier_etat ));    /* on met les etats */    node_1 = xmlNewChild ( node,			   NULL,			   "Detail_des_etats",			   NULL );    pointeur_liste_2 = liste_struct_etats;    while ( pointeur_liste_2 )    {	struct struct_etat *etat;	xmlNodePtr node_etat;	xmlNodePtr node_2;	etat = pointeur_liste_2 -> data;	node_etat = xmlNewChild ( node_1,				  NULL,				  "Etat",				  NULL );	xmlNewTextChild ( node_etat,			  NULL,			  "No",			  itoa ( etat -> no_etat ));	xmlNewTextChild ( node_etat,			  NULL,			  "Nom",			  etat -> nom_etat );	pointeur_list = etat -> type_classement;	pointeur_char = NULL;	while ( pointeur_list )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_list -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_list -> data ));	    pointeur_list = pointeur_list -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "Type_classement",			  pointeur_char );	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_r",			  itoa ( etat -> afficher_r ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_ope",			  itoa ( etat -> afficher_opes ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_nb_ope",			  itoa ( etat -> afficher_nb_opes ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_no_ope",			  itoa ( etat -> afficher_no_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_date_ope",			  itoa ( etat -> afficher_date_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_tiers_ope",			  itoa ( etat -> afficher_tiers_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_categ_ope",			  itoa ( etat -> afficher_categ_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_ss_categ_ope",			  itoa ( etat -> afficher_sous_categ_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_type_ope",			  itoa ( etat -> afficher_type_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_ib_ope",			  itoa ( etat -> afficher_ib_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_ss_ib_ope",			  itoa ( etat -> afficher_sous_ib_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_cheque_ope",			  itoa ( etat -> afficher_cheque_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_notes_ope",			  itoa ( etat -> afficher_notes_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_pc_ope",			  itoa ( etat -> afficher_pc_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_rappr_ope",			  itoa ( etat -> afficher_rappr_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_infobd_ope",			  itoa ( etat -> afficher_infobd_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_exo_ope",			  itoa ( etat -> afficher_exo_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Class_ope",			  itoa ( etat -> type_classement_ope ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_titres_col",			  itoa ( etat -> afficher_titre_colonnes ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_titres_chgt",			  itoa ( etat -> type_affichage_titres ));	xmlNewTextChild ( node_etat,			  NULL,			  "Pas_detail_ventil",			  itoa ( etat -> pas_detailler_ventilation ));	xmlNewTextChild ( node_etat,			  NULL,			  "Sep_rev_dep",			  itoa ( etat -> separer_revenus_depenses ));	xmlNewTextChild ( node_etat,			  NULL,			  "Devise_gen",			  itoa ( etat -> devise_de_calcul_general ));	xmlNewTextChild ( node_etat,			  NULL,			  "Incl_tiers",			  itoa ( etat -> inclure_dans_tiers ));	xmlNewTextChild ( node_etat,			  NULL,			  "Ope_click",			  itoa ( etat -> ope_clickables ));	xmlNewTextChild ( node_etat,			  NULL,			  "Exo_date",			  itoa ( etat -> exo_date ));	xmlNewTextChild ( node_etat,			  NULL,			  "Detail_exo",			  itoa ( etat -> utilise_detail_exo ));	pointeur_liste = etat -> no_exercices;	pointeur_char = NULL;	while ( pointeur_liste )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "No_exo",			  pointeur_char );	xmlNewTextChild ( node_etat,			  NULL,			  "Plage_date",			  itoa ( etat -> no_plage_date ));	if ( etat->date_perso_debut )	    xmlNewTextChild ( node_etat,			      NULL,			      "Date_debut",			      g_strdup_printf ( "%d/%d/%d",						g_date_day ( etat->date_perso_debut ),						g_date_month ( etat->date_perso_debut ),						g_date_year ( etat->date_perso_debut )));	else	    xmlNewTextChild ( node_etat,			      NULL,			      "Date_debut",			      NULL );	if ( etat->date_perso_fin )	    xmlNewTextChild ( node_etat,			      NULL,			      "Date_fin",			      g_strdup_printf ( "%d/%d/%d",						g_date_day ( etat->date_perso_fin ),						g_date_month ( etat->date_perso_fin ),						g_date_year ( etat->date_perso_fin )));	else	    xmlNewTextChild ( node_etat,			      NULL,			      "Date_fin",			      NULL );	xmlNewTextChild ( node_etat,			  NULL,			  "Utilise_plages",			  itoa ( etat -> separation_par_plage ));	xmlNewTextChild ( node_etat,			  NULL,			  "Sep_plages",			  itoa ( etat -> type_separation_plage ));	xmlNewTextChild ( node_etat,			  NULL,			  "Sep_exo",			  itoa ( etat -> separation_par_exo ));	xmlNewTextChild ( node_etat,			  NULL,			  "Deb_sem_plages",			  itoa ( etat -> jour_debut_semaine ));	xmlNewTextChild ( node_etat,			  NULL,			  "Detail_comptes",			  itoa ( etat -> utilise_detail_comptes ));	pointeur_liste = etat -> no_comptes;	pointeur_char = NULL;	while ( pointeur_liste )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "No_comptes",			  pointeur_char );	xmlNewTextChild ( node_etat,			  NULL,			  "Grp_ope_compte",			  itoa ( etat -> regroupe_ope_par_compte ));	xmlNewTextChild ( node_etat,			  NULL,			  "Total_compte",			  itoa ( etat -> affiche_sous_total_compte ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_nom_compte",			  itoa ( etat -> afficher_nom_compte ));	xmlNewTextChild ( node_etat,			  NULL,			  "Type_vir",			  itoa ( etat -> type_virement ));	pointeur_liste = etat -> no_comptes_virements;	pointeur_char = NULL;	while ( pointeur_liste )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "No_comptes_virements",			  pointeur_char );	xmlNewTextChild ( node_etat,			  NULL,			  "Exclure_non_vir",			  itoa ( etat -> exclure_ope_non_virement ));	xmlNewTextChild ( node_etat,			  NULL,			  "Categ",			  itoa ( etat -> utilise_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "Detail_categ",			  itoa ( etat -> utilise_detail_categ ));	pointeur_liste = etat -> no_categ;	pointeur_char = NULL;	while ( pointeur_liste )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "No_categ",			  pointeur_char );	xmlNewTextChild ( node_etat,			  NULL,			  "Exclut_categ",			  itoa ( etat -> exclure_ope_sans_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "Total_categ",			  itoa ( etat -> affiche_sous_total_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_ss_categ",			  itoa ( etat -> afficher_sous_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_pas_ss_categ",			  itoa ( etat -> afficher_pas_de_sous_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "Total_ss_categ",			  itoa ( etat -> affiche_sous_total_sous_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "Devise_categ",			  itoa ( etat -> devise_de_calcul_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_nom_categ",			  itoa ( etat -> afficher_nom_categ ));	xmlNewTextChild ( node_etat,			  NULL,			  "IB",			  itoa ( etat -> utilise_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Detail_ib",			  itoa ( etat -> utilise_detail_ib ));	pointeur_liste = etat -> no_ib;	pointeur_char = NULL;	while ( pointeur_liste )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "No_ib",			  pointeur_char );	xmlNewTextChild ( node_etat,			  NULL,			  "Exclut_ib",			  itoa ( etat -> exclure_ope_sans_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Total_ib",			  itoa ( etat -> affiche_sous_total_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_ss_ib",			  itoa ( etat -> afficher_sous_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_pas_ss_ib",			  itoa ( etat -> afficher_pas_de_sous_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Total_ss_ib",			  itoa ( etat -> affiche_sous_total_sous_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Devise_ib",			  itoa ( etat -> devise_de_calcul_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_nom_ib",			  itoa ( etat -> afficher_nom_ib ));	xmlNewTextChild ( node_etat,			  NULL,			  "Tiers",			  itoa ( etat -> utilise_tiers ));	xmlNewTextChild ( node_etat,			  NULL,			  "Detail_tiers",			  itoa ( etat -> utilise_detail_tiers ));	pointeur_liste = etat -> no_tiers;	pointeur_char = NULL;	while ( pointeur_liste )	{	    if ( pointeur_char )		pointeur_char = g_strconcat ( pointeur_char,					      "/",					      itoa ( GPOINTER_TO_INT ( pointeur_liste -> data )),					      NULL );	    else		pointeur_char = itoa ( GPOINTER_TO_INT ( pointeur_liste -> data ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "No_tiers",			  pointeur_char );	xmlNewTextChild ( node_etat,			  NULL,			  "Total_tiers",			  itoa ( etat -> affiche_sous_total_tiers ));	xmlNewTextChild ( node_etat,			  NULL,			  "Devise_tiers",			  itoa ( etat -> devise_de_calcul_tiers ));	xmlNewTextChild ( node_etat,			  NULL,			  "Aff_nom_tiers",			  itoa ( etat -> afficher_nom_tiers ));	xmlNewTextChild ( node_etat,			  NULL,			  "Texte",			  itoa ( etat -> utilise_texte ));	node_2 = xmlNewChild ( node_etat,			       NULL,			       "Texte_comp",			       NULL );	pointeur_liste = etat -> liste_struct_comparaison_textes;	while ( pointeur_liste )	{	    struct struct_comparaison_textes_etat *textes_comp;	    xmlNodePtr node_3;	    textes_comp = pointeur_liste -> data;	    node_3 = xmlNewChild ( node_2,				   NULL,				   "Comp",				   NULL );	    xmlSetProp ( node_3,			 "Lien_struct",			 itoa ( textes_comp -> lien_struct_precedente ));	    xmlSetProp ( node_3,			 "Champ",			 itoa ( textes_comp -> champ ));	    xmlSetProp ( node_3,			 "Op",			 itoa ( textes_comp -> operateur ));	    xmlSetProp ( node_3,			 "Txt",			 textes_comp -> texte );	    xmlSetProp ( node_3,			 "Util_txt",			 itoa ( textes_comp -> utilise_txt ));	    xmlSetProp ( node_3,			 "Comp_1",			 itoa ( textes_comp -> comparateur_1 ));	    xmlSetProp ( node_3,			 "Lien_1_2",			 itoa ( textes_comp -> lien_1_2 ));	    xmlSetProp ( node_3,			 "Comp_2",			 itoa ( textes_comp -> comparateur_2 ));	    xmlSetProp ( node_3,			 "Mont_1",			 itoa ( textes_comp -> montant_1 ));	    xmlSetProp ( node_3,			 "Mont_2",			 itoa ( textes_comp -> montant_2 ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "Montant",			  itoa ( etat -> utilise_montant ));	xmlNewTextChild ( node_etat,			  NULL,			  "Montant_devise",			  itoa ( etat -> choix_devise_montant ));	node_2 = xmlNewChild ( node_etat,			       NULL,			       "Montant_comp",			       NULL );	pointeur_liste = etat -> liste_struct_comparaison_montants;	while ( pointeur_liste )	{	    struct struct_comparaison_montants_etat *montants_comp;	    xmlNodePtr node_3;	    montants_comp = pointeur_liste -> data;	    node_3 = xmlNewChild ( node_2,				   NULL,				   "Comp",				   NULL );	    xmlSetProp ( node_3,			 "Lien_struct",			 itoa ( montants_comp -> lien_struct_precedente ));	    xmlSetProp ( node_3,			 "Comp_1",			 itoa ( montants_comp -> comparateur_1 ));	    xmlSetProp ( node_3,			 "Lien_1_2",			 itoa ( montants_comp -> lien_1_2 ));	    xmlSetProp ( node_3,			 "Comp_2",			 itoa ( montants_comp -> comparateur_2 ));	    xmlSetProp ( node_3,			 "Mont_1",			 g_strdup_printf ( "%4.7f",					   montants_comp -> montant_1 ));	    xmlSetProp ( node_3,			 "Mont_2",			 g_strdup_printf ( "%4.7f",					   montants_comp -> montant_2 ));	    pointeur_liste = pointeur_liste -> next;	}	xmlNewTextChild ( node_etat,			  NULL,			  "Excl_nul",			  itoa ( etat -> exclure_montants_nuls ));	xmlNewTextChild ( node_etat,			  NULL,			  "Detail_mod_paie",			  itoa ( etat -> utilise_mode_paiement ));	node_2 = xmlNewChild ( node_etat,			       NULL,			       "Liste_mod_paie",			       NULL );	pointeur_liste = etat -> noms_modes_paiement;	pointeur_char = NULL;	while ( pointeur_liste )	{	    xmlNodePtr node_3;	    node_3 = xmlNewChild ( node_2,				   NULL,				   "Mode_paie",				   NULL );	    xmlSetProp ( node_3,			 "Nom",			 pointeur_liste -> data );	    pointeur_liste = pointeur_liste -> next;	}	pointeur_liste_2 = pointeur_liste_2 -> next;    }    /* l'arbre est fait, on sauvegarde */#ifndef _WIN32    xmlIndentTreeOutput = 1;#endif    resultat = utf8_xmlSaveFormatFile ( new_file, doc, 1 );    /* on libère la memoire */    xmlFreeDoc ( doc );    if ( resultat == -1 )    {	dialogue_error ( g_strdup_printf ( _("Cannot save file '%s': %s"),					   new_file, latin2utf8(strerror(errno)) ));	return ( FALSE );    }    /* si c'est un nouveau fichier, on met à 600 ses permissions */    if ( mettre_permission )	chmod ( new_file,		S_IRUSR | S_IWUSR );    etat.en_train_de_sauvegarder = 0;    return ( TRUE );}