rem: xmlNodePtr node;
add: xmlNodePtr node, root;
context: void charge_configuration ( void ){    xmlDocPtr doc;    xmlNodePtr node;    struct stat buffer_stat;    raz_configuration ();    if ( stat ( g_strconcat ( my_get_grisbirc_dir(), C_GRISBIRC, NULL ),&buffer_stat ) == -1 )    {#ifndef _WIN32 /* No old configuration under Windows */	if (  stat ( g_strconcat ( my_get_grisbirc_dir(), "/.gnome/Grisbi", NULL ),&buffer_stat ) != -1 )	    charge_configuration_ancien();#endif	return;    }    doc = xmlParseFile ( g_strconcat ( my_get_grisbirc_dir(), C_GRISBIRC, NULL ) );    /* vrifications d'usage */    xmlNodePtr root = xmlDocGetRootElement(doc);    if ( !root	 ||	 !root->name	 ||	 g_strcasecmp ( root->name,			"Configuration" ))    {	xmlFreeDoc ( doc );	return;    }    /* On se place sur Generalite*/    node = root -> children;    while (node) {	if ( !strcmp ( node -> name, "Geometry" ) )	{	    xmlNodePtr node_geometry;	    node_geometry = node -> children;	    while (node_geometry) {		if ( !strcmp ( node_geometry -> name, "Width" ) ) {		    largeur_window = my_atoi(xmlNodeGetContent ( node_geometry));		}		if ( !strcmp ( node_geometry -> name, "Height" ) ) {		    hauteur_window = my_atoi(xmlNodeGetContent ( node_geometry));		}		node_geometry = node_geometry->next;	    }	}	if ( !strcmp ( node -> name, "General" ) )	{	    xmlNodePtr node_general;	    node_general = node -> children;	    while (node_general) {		if ( !strcmp ( node_general -> name, "Modification_operations_rapprochees" ) ) {		    etat.r_modifiable = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Dernier_chemin_de_travail" ) ) {		    dernier_chemin_de_travail = xmlNodeGetContent ( node_general);		    if ( !dernier_chemin_de_travail )			dernier_chemin_de_travail = g_strconcat ( my_get_gsb_file_default_dir(), C_DIRECTORY_SEPARATOR,NULL );		}		if ( !strcmp ( node_general -> name, "Affichage_alerte_permission" ) ) {		    etat.alerte_permission = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Force_enregistrement" ) ) {		    etat.force_enregistrement = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Fonction_touche_entree" ) ) {		    etat.entree = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Affichage_messages_alertes" ) ) {		    etat.alerte_mini = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Utilise_fonte_des_listes" ) ) {		    etat.utilise_fonte_listes = my_atoi (xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Fonte_des_listes" ) ) {		    pango_desc_fonte_liste = pango_font_description_from_string (xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Navigateur_web" ) ) {		    etat.browser_command = my_strdelimit ( xmlNodeGetContent ( node_general),							  "\\e",							  "&" );		}		if ( !strcmp ( node_general -> name, "Latex_command" ) ) {		    etat.latex_command = xmlNodeGetContent ( node_general);		}		if ( !strcmp ( node_general -> name, "Dvips_command" ) ) {		    etat.dvips_command = xmlNodeGetContent ( node_general);		}		if ( !strcmp ( node_general -> name, "Animation_attente" ) ) {		    etat.fichier_animation_attente = xmlNodeGetContent ( node_general);		}		if ( !strcmp ( node_general -> name, "Largeur_colonne_comptes_operation" ) ) {		    etat.largeur_colonne_comptes_operation = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Largeur_colonne_echeancier" ) ) {		    etat.largeur_colonne_echeancier = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Largeur_colonne_comptes_comptes" ) ) {		    etat.largeur_colonne_comptes_comptes = my_atoi(xmlNodeGetContent ( node_general));		}		if ( !strcmp ( node_general -> name, "Largeur_colonne_etats" ) ) {		    etat.largeur_colonne_etat = my_atoi(xmlNodeGetContent ( node_general));		}		node_general = node_general->next;	    }	}	if ( !strcmp ( node -> name, "IO" ) )	{	    xmlNodePtr node_io;	    node_io = node -> children;	    while (node_io) {		if ( !strcmp ( node_io -> name, "Chargement_auto_dernier_fichier" ) ) {		    etat.dernier_fichier_auto = my_atoi(xmlNodeGetContent ( node_io));		}		if ( !strcmp ( node_io -> name, "Nom_dernier_fichier" ) ) {		    nom_fichier_comptes = xmlNodeGetContent ( node_io);		}		if ( !strcmp ( node_io -> name, "Enregistrement_automatique" ) ) {		    etat.sauvegarde_auto = my_atoi(xmlNodeGetContent ( node_io));		}		if ( !strcmp ( node_io -> name, "Enregistrement_au_demarrage" ) ) {		    etat.sauvegarde_demarrage = my_atoi(xmlNodeGetContent ( node_io));		}		if ( !strcmp ( node_io -> name, "Nb_max_derniers_fichiers_ouverts" ) ) {		    nb_max_derniers_fichiers_ouverts = my_atoi(xmlNodeGetContent ( node_io));		}		if ( !strcmp ( node_io -> name, "Compression_fichier" ) ) {		    compression_fichier = my_atoi(xmlNodeGetContent ( node_io));		}		if ( !strcmp ( node_io -> name, "Compression_backup" ) ) {		    compression_backup = my_atoi(xmlNodeGetContent ( node_io));		}		if ( !strcmp ( node_io->name, "Liste_noms_derniers_fichiers_ouverts" ) ) {		    nb_derniers_fichiers_ouverts = 0;		    xmlNodePtr node_filename = node_io -> children;		    tab_noms_derniers_fichiers_ouverts = malloc ( nb_max_derniers_fichiers_ouverts * sizeof(gchar *) );		    while ( node_filename ) {			if ( !strcmp ( node_filename -> name, "fichier" ) ) {			    tab_noms_derniers_fichiers_ouverts[nb_derniers_fichiers_ouverts] = xmlNodeGetContent ( node_filename );			    nb_derniers_fichiers_ouverts++;			}			node_filename = node_filename->next;		    }		}		node_io = node_io->next;	    }	}	if ( !strcmp ( node -> name, "Echeances" ) )	{	    xmlNodePtr node_echeances;	    node_echeances = node -> children;	    while (node_echeances) {		if ( !strcmp ( node_echeances -> name, "Delai_rappel_echeances" ) ) {		    decalage_echeance = my_atoi(xmlNodeGetContent ( node_echeances));		}		node_echeances = node_echeances->next;	    }	}	/*if ( !strcmp ( node -> name, "Applet" ) )	  {	  xmlNodePtr node_io;	  node_io = node -> children;	  while (node_io) {	  if ( !strcmp ( node_io -> name, "Chargement_auto_dernier_fichier" ) ) {	  etat.dernier_fichier_auto = my_atoi(xmlNodeGetContent ( node_io));	  }	  if ( !strcmp ( node_io -> name, "Nom_dernier_fichier" ) ) {	  nom_fichier_comptes = xmlNodeGetContent ( node_io);	  }	  if ( !strcmp ( node_io -> name, "Enregistrement_automatique" ) ) {	  etat.sauvegarde_auto = my_atoi(xmlNodeGetContent ( node_io));	  }	  if ( !strcmp ( node_io -> name, "Enregistrement_au_demarrage" ) ) {	  etat.sauvegarde_demarrage = my_atoi(xmlNodeGetContent ( node_io));	  }	  if ( !strcmp ( node_io -> name, "Nb_max_derniers_fichiers_ouverts" ) ) {	  nb_max_derniers_fichiers_ouverts = my_atoi(xmlNodeGetContent ( node_io));	  }	  if ( !strcmp ( node_io -> name, "Compression_fichier" ) ) {	  compression_fichier = my_atoi(xmlNodeGetContent ( node_io));	  }	  if ( !strcmp ( node_io -> name, "Compression_backup" ) ) {	  variable = xmlNodeGetContent ( node_io);	  }	// boucler pour avoir la liste des derniers fichiers.	node_io = node_io->next;	}	}*/	if ( !strcmp ( node -> name, "Affichage" ) )	{	    xmlNodePtr node_affichage;	    node_affichage = node -> children;	    while (node_affichage) {		if ( !strcmp ( node_affichage -> name, "Affichage_formulaire" ) ) {		    etat.formulaire_toujours_affiche = my_atoi(xmlNodeGetContent ( node_affichage));		}		if ( !strcmp ( node_affichage -> name, "Affichage_formulaire_echeancier" ) ) {		    etat.formulaire_echeancier_toujours_affiche = my_atoi(xmlNodeGetContent ( node_affichage));		}		if ( !strcmp ( node_affichage -> name, "Tri_par_date" ) ) {		    etat.classement_par_date = my_atoi(xmlNodeGetContent ( node_affichage));		}		if ( !strcmp ( node_affichage -> name, "Affiche_boutons_valider_annuler" ) ) {		    etat.affiche_boutons_valider_annuler = my_atoi(xmlNodeGetContent ( node_affichage));		}		if ( !strcmp ( node_affichage -> name, "Largeur_auto_colonnes" ) ) {		    etat.largeur_auto_colonnes = my_atoi(xmlNodeGetContent ( node_affichage));		}		// boucler pour avoir les tailles des diffrentes colonnes		if ( !strcmp ( node_affichage -> name, "taille_largeur_colonne" ) ) {		    //int numero_colonne;		    //int largeur_colonne;		    int numero_colonne = my_atoi(xmlGetProp ( node_affichage, "No"));		    int largeur_colonne = my_atoi(xmlNodeGetContent ( node_affichage));		    taille_largeur_colonnes[numero_colonne] = largeur_colonne;		}		if ( !strcmp ( node_affichage -> name, "Affichage_exercice_automatique" ) ) {		    etat.affichage_exercice_automatique = my_atoi(xmlNodeGetContent ( node_affichage));		}		if ( !strcmp ( node_affichage -> name, "Affichage_nb_ecritures" ) ) {		    etat.affiche_nb_ecritures_listes = my_atoi(xmlNodeGetContent ( node_affichage));		}		if ( !strcmp ( node_affichage -> name, "Affichage_grille" ) ) {		    etat.affichage_grille = my_atoi(xmlNodeGetContent ( node_affichage));		}		node_affichage = node_affichage->next;	    }	}	if ( !strcmp ( node -> name, "Exercice" ) )	{	    xmlNodePtr node_exercice;	    node_exercice = node -> children;	    while (node_exercice) {		node_exercice = node_exercice->next;	    }	}	if ( !strcmp ( node -> name, "Messages" ) )	{	    xmlNodePtr node_messages;	    node_messages = node -> children;	    while (node_messages) {		if ( !strcmp ( node_messages -> name, "display_message_lock_active" ) ) {		    etat.display_message_lock_active = my_atoi(xmlNodeGetContent ( node_messages));		}    /* On Windows, the chmod feature does not work: FAT does not have right access permission notions ,      * on NTFS it to complicated to implement => the feature is removed from the Windows version :     * for that the corresponding parameter check box is not displayed and the paramater is forced to not display msg */#ifndef _WIN32		if ( !strcmp ( node_messages -> name, "display_message_file_readable" ) ) {		    etat.display_message_file_readable = my_atoi(xmlNodeGetContent ( node_messages));		}#else                    etat.display_message_file_readable = 1;#endif		if ( !strcmp ( node_messages -> name, "display_message_minimum_alert" ) ) {		    etat.display_message_minimum_alert = my_atoi(xmlNodeGetContent ( node_messages));		}		node_messages = node_messages->next;	    }	}	if ( !strcmp ( node -> name, "Print_config" ) )	{	    xmlNodePtr node_print;	    node_print = node -> children;	    while (node_print) {		if ( !strcmp ( node_print -> name, "printer" ) ) {		    etat.print_config.printer = my_atoi(xmlNodeGetContent (node_print));		}		if ( !strcmp ( node_print -> name, "printer_name" ) ) {		    etat.print_config.printer_name = xmlNodeGetContent (node_print);		}		if ( !strcmp ( node_print -> name, "printer_filename" ) ) {		    etat.print_config.printer_filename = xmlNodeGetContent (node_print);		}		if ( !strcmp ( node_print -> name, "filetype" ) ) {		    etat.print_config.filetype = my_atoi(xmlNodeGetContent (node_print));		}		if ( !strcmp ( node_print -> name, "orientation" ) ) {		    etat.print_config.orientation = my_atoi(xmlNodeGetContent (node_print));		}		if ( !strcmp ( node_print -> name, "paper_config" ) ) {		    etat.print_config.paper_config.width = my_atoi(xmlGetProp (node_print, "width"));		    etat.print_config.paper_config.height = my_atoi(xmlGetProp (node_print, "height"));		    etat.print_config.paper_config.name = xmlGetProp (node_print, "name");		}		node_print = node_print->next;	    }	}	node = node -> next;    }}