rem: largeur_window = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Geometry/Width", NULL )); hauteur_window = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Geometry/Height", NULL ));  etat.r_modifiable = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/General/Modification_operations_rapprochees", NULL )); dernier_chemin_de_travail = gnome_config_get_string ( g_strconcat ( "/", FICHIER_CONF, "/General/Dernier_chemin_de_travail", NULL ));  if ( !dernier_chemin_de_travail ) dernier_chemin_de_travail = g_strconcat ( getenv ("HOME"), "/", NULL );  etat.entree = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/General/Fonction_touche_entree", NULL ));     etat.force_enregistrement = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/General/Force_enregistrement", NULL ));  if ( fonte_liste && !strlen( fonte_liste ) ) fonte_liste = NULL; if ( fonte_general && !strlen( fonte_general ) ) fonte_general = NULL;  etat.dernier_fichier_auto = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Chargement_auto_dernier_fichier", NULL )); nom_fichier_comptes = gnome_config_get_string ( g_strconcat ( "/", FICHIER_CONF, "/IO/Nom_dernier_fichier", NULL )); etat.sauvegarde_auto = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Enregistrement_automatique", NULL )); etat.sauvegarde_demarrage = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Enregistrement_au_demarrage", NULL ));  nb_max_derniers_fichiers_ouverts = gnome_config_get_int_with_default ( g_strconcat ( "/", FICHIER_CONF, "/IO/Nb_max_derniers_fichiers_ouverts", NULL ), &flag ); if ( flag ) nb_max_derniers_fichiers_ouverts = 3;  compression_fichier = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Compression_fichier", NULL )); compression_backup = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Compression_backup", NULL )); xmlSetCompressMode ( compression_fichier );  gnome_config_get_vector ( g_strconcat ( "/", FICHIER_CONF, "/IO/Liste_noms_derniers_fichiers_ouverts", NULL ), &nb_derniers_fichiers_ouverts, &tab_noms_derniers_fichiers_ouverts );     if ( nb_derniers_fichiers_ouverts == 1 && !strlen ( tab_noms_derniers_fichiers_ouverts[0])) { tab_noms_derniers_fichiers_ouverts[0] = NULL; nb_derniers_fichiers_ouverts = 0; }  decalage_echeance = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Echeances/Delai_rappel_echeances", NULL ));  gnome_config_get_vector ( g_strconcat ( "/", FICHIER_CONF, "/Applet/Fichiers_a_verifier", NULL ), &nb_fichiers_a_verifier, &tab_noms_fichiers );  etat.formulaire_toujours_affiche = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affichage_formulaire", NULL )); etat.formulaire_echeancier_toujours_affiche  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affichage_formulaire_echeancier", NULL ));  etat.affiche_tous_les_types = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affichage_tous_types", NULL )); etat.affiche_no_operation = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affiche_no_operation", NULL )); etat.affiche_date_bancaire = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affiche_date_bancaire", NULL )); etat.classement_par_date = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Tri_par_date", NULL )); etat.affiche_boutons_valider_annuler = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affiche_boutons_valider_annuler", NULL )); etat.largeur_auto_colonnes  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Largeur_auto_colonnes", NULL )); etat.retient_affichage_par_compte  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Caracteristiques_par_compte", NULL ));    etat.affichage_exercice_automatique  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Exercice/Affichage_exercice_automatique", NULL )); etat.affiche_nb_ecritures_listes  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Exercice/Affichage_nb_ecritures", NULL ));  for ( i=0 ; i<7 ; i++ ) taille_largeur_colonnes[i] = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Exercice/taille_largeur_colonne", itoa(i), NULL ));    fichier_a_verifier = NULL;  for ( i = 0 ; i < nb_fichiers_a_verifier ; i++ ) fichier_a_verifier = g_slist_append ( fichier_a_verifier, tab_noms_fichiers[i] );   etat.display_message_lock_active  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Messages/display_message_lock_active", NULL )); etat.display_message_file_readable  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Messages/display_message_file_readable", NULL )); etat.display_message_minimum_alert = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Messages/display_message_minimum_alert", NULL ));
add: 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 = atoi(xmlNodeGetContent ( node_geometry)); } if ( !strcmp ( node_geometry -> name,"Height" ) ) { hauteur_window = 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 = 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 ( getenv ("HOME"),"/",NULL ); } if ( !strcmp ( node_general -> name,"Affichage_alerte_permission" ) ) { etat.alerte_permission = atoi(xmlNodeGetContent ( node_general)); } if ( !strcmp ( node_general -> name,"Force_enregistrement" ) ) { etat.force_enregistrement = atoi(xmlNodeGetContent ( node_general)); } if ( !strcmp ( node_general -> name,"Fonction_touche_entree" ) ) { etat.entree = atoi(xmlNodeGetContent ( node_general)); } if ( !strcmp ( node_general -> name,"Affichage_messages_alertes" ) ) { etat.alerte_mini = atoi(xmlNodeGetContent ( node_general)); }  if ( !strcmp ( node_general -> name,"Fonte_des_listes" ) ) { fonte_liste = xmlNodeGetContent ( node_general); }  if ( !strcmp ( node_general -> name,"Fonte_generale" ) ) { fonte_general = xmlNodeGetContent ( node_general); } node_general = node_general->next; } } if ( fonte_liste && !strlen( fonte_liste ) ) { fonte_liste = NULL; } if ( fonte_general && !strlen( fonte_general ) ) { fonte_general = NULL; }  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 = 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 = atoi(xmlNodeGetContent ( node_io)); } if ( !strcmp ( node_io -> name,"Enregistrement_au_demarrage" ) ) { etat.sauvegarde_demarrage = atoi(xmlNodeGetContent ( node_io)); } if ( !strcmp ( node_io -> name,"Nb_max_derniers_fichiers_ouverts" ) ) { nb_max_derniers_fichiers_ouverts = atoi(xmlNodeGetContent ( node_io)); } if ( !strcmp ( node_io -> name,"Compression_fichier" ) ) { compression_fichier = atoi(xmlNodeGetContent ( node_io)); } if ( !strcmp ( node_io -> name,"Compression_backup" ) ) { compression_backup = 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 = atoi(xmlNodeGetContent ( node_echeances)); } node_echeances = node_echeances->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 = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Affichage_formulaire_echeancier" ) ) { etat.formulaire_echeancier_toujours_affiche = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Affichage_tous_types" ) ) { etat.affiche_tous_les_types = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Affiche_no_operation" ) ) { etat.affiche_no_operation = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Affiche_date_bancaire" ) ) { etat.affiche_date_bancaire = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Tri_par_date" ) ) { etat.classement_par_date = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Affiche_boutons_valider_annuler" ) ) { etat.affiche_boutons_valider_annuler = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Largeur_auto_colonnes" ) ) { etat.largeur_auto_colonnes = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Caracteristiques_par_compte" ) ) { etat.retient_affichage_par_compte = atoi( xmlNodeGetContent ( node_affichage)); }  if ( !strcmp ( node_affichage -> name,"taille_largeur_colonne" ) ) {   int numero_colonne = atoi(xmlGetProp ( node_affichage,"No")); int largeur_colonne = atoi(xmlNodeGetContent ( node_affichage)); taille_largeur_colonnes[numero_colonne] = largeur_colonne; } if ( !strcmp ( node_affichage -> name,"Affichage_exercice_automatique" ) ) { etat.affichage_exercice_automatique = atoi(xmlNodeGetContent ( node_affichage)); } if ( !strcmp ( node_affichage -> name,"Affichage_nb_ecritures" ) ) { etat.affiche_nb_ecritures_listes = 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 = atoi(xmlNodeGetContent ( node_messages)); } if ( !strcmp ( node_messages -> name,"display_message_file_readable" ) ) { etat.display_message_file_readable = atoi(xmlNodeGetContent ( node_messages)); } if ( !strcmp ( node_messages -> name,"display_message_minimum_alert" ) ) { etat.display_message_minimum_alert = atoi(xmlNodeGetContent ( node_messages)); } node_messages = node_messages->next; } } node = node -> next; }
context: void charge_configuration ( void ){  gint nb_fichiers_a_verifier;  gchar **tab_noms_fichiers;  gint i;  gint flag;  struct stat buffer_stat;  /*   on vrifie que le fichier de conf existe bien ; dans le cas contraire, on charge */  /* la conf par dfaut */  if ( stat ( g_strconcat ( getenv ("HOME"), "/.gnome2/", FICHIER_CONF, NULL ),	      &buffer_stat ) == -1 )    {      raz_configuration ();      return;    }  /* on rcupre la taille de la fentre  l'arrt prcdent */  largeur_window = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Geometry/Width", NULL ));  hauteur_window = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Geometry/Height", NULL ));  etat.r_modifiable = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/General/Modification_operations_rapprochees", NULL ));  dernier_chemin_de_travail = gnome_config_get_string ( g_strconcat ( "/", FICHIER_CONF, "/General/Dernier_chemin_de_travail", NULL ));  if ( !dernier_chemin_de_travail )    dernier_chemin_de_travail = g_strconcat ( getenv ("HOME"),					      "/",					      NULL );  etat.entree = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/General/Fonction_touche_entree", NULL ));  /* FIXME : do that with list_font_name & list_font_size *//*   fonte_liste = gnome_config_get_string ( g_strconcat ( "/", FICHIER_CONF, "/General/Fonte_des_listes", NULL )); *//*   fonte_general = gnome_config_get_string ( g_strconcat ( "/", FICHIER_CONF, "/General/Fonte_generale", NULL )); */  etat.force_enregistrement = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/General/Force_enregistrement", NULL ));  if ( fonte_liste && !strlen( fonte_liste ) )    fonte_liste = NULL;  if ( fonte_general && !strlen( fonte_general ) )    fonte_general = NULL;  etat.dernier_fichier_auto = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Chargement_auto_dernier_fichier", NULL ));  nom_fichier_comptes = gnome_config_get_string ( g_strconcat ( "/", FICHIER_CONF, "/IO/Nom_dernier_fichier", NULL ));  etat.sauvegarde_auto = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Enregistrement_automatique", NULL ));  etat.sauvegarde_demarrage = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Enregistrement_au_demarrage", NULL ));  nb_max_derniers_fichiers_ouverts = gnome_config_get_int_with_default ( g_strconcat ( "/", FICHIER_CONF, "/IO/Nb_max_derniers_fichiers_ouverts", NULL ),									 &flag );  if ( flag )    nb_max_derniers_fichiers_ouverts = 3;  compression_fichier = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Compression_fichier", NULL ));  compression_backup = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/IO/Compression_backup", NULL ));  xmlSetCompressMode ( compression_fichier );    gnome_config_get_vector ( g_strconcat ( "/", FICHIER_CONF, "/IO/Liste_noms_derniers_fichiers_ouverts", NULL ),			    &nb_derniers_fichiers_ouverts,			    &tab_noms_derniers_fichiers_ouverts );  /* quand il n'y a aucun dernier fichier ouvert, il en rcupre quand mme un vide */  /* ... on le vire ... */  if ( nb_derniers_fichiers_ouverts == 1       &&       !strlen ( tab_noms_derniers_fichiers_ouverts[0]))    {      tab_noms_derniers_fichiers_ouverts[0] = NULL;      nb_derniers_fichiers_ouverts = 0;    }  decalage_echeance = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Echeances/Delai_rappel_echeances", NULL ));  gnome_config_get_vector ( g_strconcat ( "/", FICHIER_CONF, "/Applet/Fichiers_a_verifier", NULL ),			    &nb_fichiers_a_verifier,			    &tab_noms_fichiers );  etat.formulaire_toujours_affiche = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affichage_formulaire", NULL ));  etat.formulaire_echeancier_toujours_affiche  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affichage_formulaire_echeancier", NULL ));  etat.affiche_tous_les_types = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affichage_tous_types", NULL ));  etat.affiche_no_operation = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affiche_no_operation", NULL ));  etat.affiche_date_bancaire = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affiche_date_bancaire", NULL ));  etat.classement_par_date = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Tri_par_date", NULL ));  etat.affiche_boutons_valider_annuler = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Affiche_boutons_valider_annuler", NULL ));  etat.largeur_auto_colonnes  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Largeur_auto_colonnes", NULL ));  etat.retient_affichage_par_compte  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Affichage/Caracteristiques_par_compte", NULL ));  etat.affichage_exercice_automatique  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Exercice/Affichage_exercice_automatique", NULL ));  etat.affiche_nb_ecritures_listes  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Exercice/Affichage_nb_ecritures", NULL ));  for ( i=0 ; i<7 ; i++ )    taille_largeur_colonnes[i] = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Exercice/taille_largeur_colonne", itoa(i), NULL ));  /* remplissage de la liste des fichiers  vrifier */  fichier_a_verifier = NULL;  for ( i = 0 ; i < nb_fichiers_a_verifier ; i++ )    fichier_a_verifier = g_slist_append ( fichier_a_verifier,					  tab_noms_fichiers[i] );  /* Messages */  etat.display_message_lock_active  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Messages/display_message_lock_active", NULL ));  etat.display_message_file_readable  = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Messages/display_message_file_readable", NULL ));  etat.display_message_minimum_alert = gnome_config_get_int ( g_strconcat ( "/", FICHIER_CONF, "/Messages/display_message_minimum_alert", NULL ));}