rem: xmlNewChild ( node,NULL, "Utilise_fonte_des_listes",itoa (etat.utilise_fonte_listes));  xmlNewChild ( node,NULL, "Fonte_des_listes",pango_font_description_to_string (pango_desc_fonte_liste));
add: if (pango_desc_fonte_liste) { xmlNewChild ( node,NULL, "Utilise_fonte_des_listes",itoa (etat.utilise_fonte_listes)); xmlNewChild ( node,NULL, "Fonte_des_listes",pango_font_description_to_string (pango_desc_fonte_liste)); } else { xmlNewChild ( node,NULL, "Utilise_fonte_des_listes",itoa (0)); xmlNewChild ( node,NULL, "Fonte_des_listes",""); }
context: void sauve_configuration(void){    gint i;    // document XML (voir fichiers_io.c l.4000)    xmlDocPtr doc;    xmlNodePtr node;    xmlNodePtr node_1;    xmlNodePtr node_2;    // resultat de la sauvegarde    gint resultat;    if ( DEBUG )	printf ( "sauve_configuration\n" );    /*     on récupère les largeurs des colonnes de la liste d'opés */    /*     seulement si un fichier est encore en mémoire */    if ( nb_comptes )    {	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant;	for ( i=0 ; i<TRANSACTION_LIST_COL_NB ; i++ )	    if ( GTK_IS_TREE_VIEW_COLUMN ( COLONNE_LISTE_OPERATIONS(i)))		 taille_largeur_colonnes[i] = gtk_tree_view_column_get_width ( COLONNE_LISTE_OPERATIONS(i) );    }    /* creation de l'arbre xml en memoire */    doc = xmlNewDoc("1.0");    /* la racine est "configuration" */    doc->children = xmlNewDocNode ( doc,NULL, "Configuration",NULL );    /*   sauvegarde de la géométrie */    if ( GTK_WIDGET ( window) -> window )     {	gtk_window_get_size (GTK_WINDOW ( window ),			     &largeur_window,&hauteur_window); // gtk2 ???    }     else     {	largeur_window = 0;	hauteur_window = 0;    }    node = xmlNewChild ( doc->children,NULL, "Geometry",NULL );    xmlNewChild ( node,NULL, "Width",		  itoa(largeur_window));    xmlNewChild ( node,NULL, "Height",		  itoa(hauteur_window));    /* sauvegarde de l'onglet général */    node = xmlNewChild ( doc->children,NULL, "General",NULL );    xmlNewChild ( node,NULL, "Modification_operations_rapprochees",		  itoa(etat.r_modifiable));    xmlNewChild ( node,NULL, "Dernier_chemin_de_travail",dernier_chemin_de_travail);    xmlNewChild ( node,NULL, "Affichage_alerte_permission",		  itoa(etat.alerte_permission));    xmlNewChild ( node,NULL, "Force_enregistrement",		  itoa(etat.force_enregistrement));    xmlNewChild ( node,NULL, "Fonction_touche_entree",		  itoa(etat.entree));    xmlNewChild ( node,NULL, "Affichage_messages_alertes",		  itoa(etat.alerte_mini));    xmlNewChild ( node,NULL, "Utilise_fonte_des_listes",itoa (etat.utilise_fonte_listes));    xmlNewChild ( node,NULL, "Fonte_des_listes",pango_font_description_to_string (pango_desc_fonte_liste));    xmlNewChild ( node,NULL, "Animation_attente",etat.fichier_animation_attente);/*     on modifie la chaine si Ã§a contient &, il semblerait que la libxml n'apprécie pas... */        xmlNewChild ( node,NULL, "Navigateur_web",my_strdelimit ( etat.browser_command,							      "&",							      "\\e" ));/*     on ne fait la sauvegarde que si les colonnes existent (compte non fermé) */	    if ( nb_comptes )    {	xmlNewChild ( node,NULL, "Largeur_colonne_comptes_operation",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_operations))));	xmlNewChild ( node,NULL, "Largeur_colonne_echeancier",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_echeancier))));	xmlNewChild ( node,NULL, "Largeur_colonne_comptes_comptes",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_comptes))));	xmlNewChild ( node,NULL, "Largeur_colonne_etats",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_etats))));    }/*     on ne fait la sauvegarde que si les colonnes existent (compte non fermé) */	    if ( nb_comptes )    {	xmlNewChild ( node,NULL, "Largeur_colonne_comptes_operation",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_operations))));	xmlNewChild ( node,NULL, "Largeur_colonne_echeancier",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_echeancier))));	xmlNewChild ( node,NULL, "Largeur_colonne_comptes_comptes",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_comptes))));	xmlNewChild ( node,NULL, "Largeur_colonne_etats",		      itoa(gtk_paned_get_position (GTK_PANED (paned_onglet_etats))));    }    /* sauvegarde de l'onglet I/O */    node = xmlNewChild ( doc->children,NULL, "IO",NULL );    xmlNewChild ( node,NULL, "Chargement_auto_dernier_fichier",		  itoa(etat.dernier_fichier_auto));    xmlNewChild ( node,NULL, "Nom_dernier_fichier",nom_fichier_comptes);    xmlNewChild ( node,NULL, "Enregistrement_automatique",		  itoa(etat.sauvegarde_auto));    xmlNewChild ( node,NULL, "Enregistrement_au_demarrage",		  itoa(etat.sauvegarde_demarrage));    xmlNewChild ( node,NULL, "Nb_max_derniers_fichiers_ouverts",		  itoa(nb_max_derniers_fichiers_ouverts));    xmlNewChild ( node,NULL, "Compression_fichier",		  itoa(compression_fichier));    xmlNewChild ( node,NULL, "Compression_backup",		  itoa(compression_backup));    node_1 = xmlNewChild ( node,NULL, "Liste_noms_derniers_fichiers_ouverts",NULL);    for (i=0;i<nb_derniers_fichiers_ouverts;i++) {	// ajout des noeuds de la forme fichier1,fichier2,fichier3...	//sprintf(buff, "fichier%i",i);	node_2 = xmlNewChild ( node_1,NULL, "fichier",tab_noms_derniers_fichiers_ouverts[i]);	xmlSetProp ( node_2, "No", itoa (i));    }    /* sauvegarde de l'onglet échéances */    node = xmlNewChild ( doc->children,NULL, "Echeances",NULL );    xmlNewChild ( node,NULL, "Delai_rappel_echeances",		  itoa(decalage_echeance));    /* sauvegarde de l'onglet affichage */    node = xmlNewChild ( doc->children,NULL, "Affichage",NULL );    xmlNewChild ( node,NULL, "Affichage_formulaire",		  itoa(etat.formulaire_toujours_affiche));    xmlNewChild ( node,NULL, "Affichage_formulaire_echeancier",		  itoa(etat.formulaire_echeancier_toujours_affiche));    xmlNewChild ( node,NULL, "Tri_par_date",		  itoa(etat.classement_par_date));    xmlNewChild ( node,NULL, "Affiche_boutons_valider_annuler",		  itoa(etat.affiche_boutons_valider_annuler));    xmlNewChild ( node,NULL, "Largeur_auto_colonnes",		  itoa(etat.largeur_auto_colonnes));    for ( i=0 ; i<7 ; i++ ) {	node_2 = xmlNewChild ( node,NULL, "taille_largeur_colonne",			       itoa(taille_largeur_colonnes[i]));	xmlSetProp ( node_2, "No", itoa (i));    }    xmlNewChild ( node,NULL, "Affichage_nb_ecritures",		  itoa(etat.affichage_exercice_automatique));     xmlNewChild ( node,NULL, "Affichage_grille",		  itoa(etat.affichage_grille));   xmlNewChild ( node,NULL, "Affichage_exercice_automatique",		  itoa(etat.affichage_exercice_automatique));    /*   sauvegarde de l'onglet d'exercice */    node = xmlNewChild ( doc->children,NULL, "Exercice",NULL );    /* sauvegarde des messages */    node = xmlNewChild ( doc->children,NULL, "Messages",NULL );    xmlNewChild ( node,NULL, "display_message_lock_active",		  itoa(etat.display_message_lock_active));    xmlNewChild ( node,NULL, "display_message_file_readable",		  itoa(etat.display_message_file_readable));    xmlNewChild ( node,NULL, "display_message_minimum_alert",		  itoa(etat.display_message_minimum_alert));    xmlNewChild ( node,NULL, "display_message_no_budgetary_line",		  itoa(etat.display_message_no_budgetary_line));    /* Sauvegarde des tips */    xmlNewChild ( node,NULL, "last_tip", itoa(etat.last_tip));    xmlNewChild ( node,NULL, "show_tip", itoa(etat.show_tip));    /* sauvegarde des messages */    node = xmlNewChild ( doc->children, NULL, "Print_config", NULL );    xmlNewChild ( node, NULL, "printer", itoa(etat.print_config.printer));    xmlNewChild ( node, NULL, "printer_name", etat.print_config.printer_name);    xmlNewChild ( node, NULL, "printer_filename", etat.print_config.printer_filename);    xmlNewChild ( node, NULL, "filetype", itoa(etat.print_config.filetype));    xmlNewChild ( node, NULL, "orientation", itoa(etat.print_config.orientation));    node = xmlNewChild ( node, NULL, "paper_config", NULL);    xmlSetProp ( node, "name", etat.print_config.paper_config.name);    xmlSetProp ( node, "width", itoa(etat.print_config.paper_config.width));    xmlSetProp ( node, "height", itoa(etat.print_config.paper_config.height));    /* Enregistre dans le ~/.grisbirc */    resultat = xmlSaveFormatFile ( g_strconcat ( my_get_grisbirc_dir(), C_GRISBIRC,						 NULL), doc, 1 );    /* on libère la memoire */    xmlFreeDoc ( doc );    if ( resultat == -1 )     {	dialogue_error ( g_strdup_printf ( _("Error saving file '%s': %s"), 					   g_strconcat ( my_get_grisbirc_dir(), C_GRISBIRC, NULL), 					   latin2utf8(strerror(errno)) ));    }}