int list_config_entries(const char *section, const char ***names);
   int i, n;
   char const **sections = NULL;
   char const **entries = NULL;
   
   /* List all entries not in any section. */
   n = list_config_entries(NULL, &entries);
   for (i = 0; i 
      printf(" %s=\"%s\"\n", entries[i], get_config_string(
             NULL, entries[i], "-"));
   
   /* List all sections (and entries in them). */
   n = list_config_sections(§ions);
   /* loop through all section names */
   for (i = 0; i 
   {
      int j, m;
      printf("%s\n", sections[i]);
      m = list_config_entries(sections[i], &entries);
      /* loop through all entries in the section */
      for (j = 0; j 
      {
          printf(" %s=\"%s\"\n", entries[j], get_config_string(
             sections[i], entries[j], "-"));
      }
   }
   /* It is enough to free the arrays once at the end. */
   free_config_entries(§ions);
   free_config_entries(&entries);