rem: dialogue ( g_strdup_printf ( _("Error saving the file: %s\n\nError:\n%s"),
add: dialogue_error ( g_strdup_printf ( _("Cannot save file '%s': %s"),
context: gboolean enregistre_categ ( gchar *nom_categ ){  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_categ",			      NULL );  /* on commence  ajouter les generalites */  node = xmlNewChild ( doc->children,		       NULL,		       "Generalites",		       NULL );  xmlNewTextChild ( node,		    NULL,		    "Version_fichier_categ",		    VERSION_FICHIER_CATEG );  xmlNewTextChild ( node,		    NULL,		    "Version_grisbi",		    VERSION );  node = xmlNewChild ( doc->children,		       NULL,		       "Details_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,				 NULL,				 "Categorie",				 NULL );      xmlSetProp ( node_categ,		   "Nom",		   categ -> nom_categ );      xmlSetProp ( node_categ,		   "Type",		   itoa ( categ -> type_categ ));      xmlSetProp ( node_categ,		   "No_derniere_sous_cagegorie",		   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;    }  /* l'arbre est fait, on sauvegarde */  resultat = xmlSaveFile ( nom_categ,			   doc );  /* on libre la memoire */  xmlFreeDoc ( doc );  if ( resultat == -1 )    {      dialogue ( g_strdup_printf ( _("Error saving the file: %s\n\nError:\n%s"),				   nom_categ,				   latin2utf8 (strerror ( errno ) )));      return ( FALSE );    }  return ( TRUE );}