+static int exec_base (struct ccl_token *list)
+{
+ struct ccl_token *li = list;
+ int len = 0;
+
+ if (list->kind == CCL_TOK_EOL)
+ return -1;
+ free (info.databases);
+ while (li->kind != CCL_TOK_EOL)
+ {
+ len += li->len + 1;
+ li = li->next;
+ if (li->kind == CCL_TOK_COMMA)
+ li = li->next;
+ }
+ info.databases = malloc (len);
+ assert (info.databases);
+ len = 0;
+ li = list;
+ while (li->kind != CCL_TOK_EOL)
+ {
+ memcpy (info.databases+len, li->name, li->len);
+ len += li->len;
+ info.databases[len++] = ',';
+ li = li->next;
+ if (li->kind == CCL_TOK_COMMA)
+ li = li->next;
+ }
+ info.databases[len-1] = '\0';
+ return 0;
+}
+