+
+/* Returns an identifier that is is not currently in use as a dataset name.
+ The caller must free the returned identifier, with free(). */
+char *
+session_generate_dataset_name (struct session *s)
+{
+ for (;;)
+ {
+ char *name;
+
+ s->n_dataset_names++;
+ assert(s->n_dataset_names != 0);
+
+ name = xasprintf ("DataSet%u", s->n_dataset_names);
+ if (!session_lookup_dataset (s, name))
+ return name;
+ free (name);
+ }
+}