rem: resultat = xmlSaveFormatFile ( nom_ib,
add: resultat = utf8_xmlSaveFormatFile ( nom_ib,
context: gboolean enregistre_ib ( gchar *nom_ib ){    xmlDocPtr doc;    xmlNodePtr node;    gint resultat;    GSList *pointeur_liste;    /* creation de l'arbre xml en memoire */    doc = xmlNewDoc("1.0");    /* la racine est grisbi */    doc->children = xmlNewDocNode ( doc,				    NULL,				    "Grisbi_ib",				    NULL );    /* on commence à ajouter les generalites */    node = xmlNewChild ( doc->children,			 NULL,			 "Generalites",			 NULL );    xmlNewTextChild ( node,		      NULL,		      "Version_fichier_ib",		      VERSION_FICHIER_IB );    xmlNewTextChild ( node,		      NULL,		      "Version_grisbi",		      VERSION );    node = xmlNewChild ( doc->children,			 NULL,			 "Details_des_ib",			 NULL );    pointeur_liste = liste_struct_imputation;    while ( pointeur_liste )    {	struct struct_imputation *ib;	xmlNodePtr node_ib;	GSList *pointeur_sous_ib;	ib = pointeur_liste -> data;	node_ib = xmlNewChild ( node,				NULL,				"Imputation",				NULL );	xmlSetProp ( node_ib,		     "Nom",		     ib -> nom_imputation );	xmlSetProp ( node_ib,		     "Type",		     itoa ( ib -> type_imputation ));	xmlSetProp ( node_ib,		     "No_derniere_sous_imputation",		     itoa ( ib -> no_derniere_sous_imputation ));	/* on ajoute les sous ib */	pointeur_sous_ib = ib -> liste_sous_imputation;	while ( pointeur_sous_ib )	{	    struct struct_sous_imputation *sous_ib;	    xmlNodePtr node_sous_ib;	    sous_ib = pointeur_sous_ib -> data;	    node_sous_ib = xmlNewChild ( node_ib,					 NULL,					 "Sous-imputation",					 NULL );	    xmlSetProp ( node_sous_ib,			 "No",			 itoa ( sous_ib -> no_sous_imputation ));	    xmlSetProp ( node_sous_ib,			 "Nom",			 sous_ib -> nom_sous_imputation );	    pointeur_sous_ib = pointeur_sous_ib -> next;	}	pointeur_liste = pointeur_liste -> next;    }    /* l'arbre est fait, on sauvegarde */    resultat = xmlSaveFormatFile ( nom_ib,				   doc,				   1 );    /* on libère la memoire */    xmlFreeDoc ( doc );    if ( resultat == -1 )    {	dialogue_error ( g_strconcat ( _("Cannot save file '%s': %s"),				       nom_ib, latin2utf8 (strerror ( errno )) ));	return ( FALSE );    }    return ( TRUE );}