add: if ( child_content ( categ_node, "parent" ) ) { gchar * parent_guid = child_content ( categ_node, "parent" ); GSList * liste_tmp = gnucash_categories;  while ( liste_tmp ) { struct gnucash_category * iter = liste_tmp -> data;  if ( !strcmp ( iter -> guid, parent_guid ) ) { categ -> name = g_strconcat ( iter -> name, " : ", categ -> name, NULL ); break; }  liste_tmp = liste_tmp -> next; } }
context: void recuperation_donnees_gnucash_categorie ( xmlNodePtr categ_node ){  struct gnucash_category * categ;  categ = calloc ( 1, sizeof ( struct gnucash_category ));  categ -> name = child_content ( categ_node, "name" );  categ -> guid = child_content ( categ_node, "id" );    if ( !strcmp ( child_content ( categ_node, "type" ), "INCOME" ) )    {      categ -> type = GNUCASH_CATEGORY_INCOME;    }  else     {      categ -> type = GNUCASH_CATEGORY_EXPENSE;    }  printf (">>> new categ: %s\n", categ -> name );  gnucash_categories = g_slist_append ( gnucash_categories, categ );}