+ strcpy(r->val, a);
+ return r;
+}
+
+struct ao_scheme_string *
+ao_scheme_atom_to_string(struct ao_scheme_atom *a)
+{
+ int alen = strlen(a->name);
+ struct ao_scheme_string *r;
+
+ ao_scheme_atom_stash(a);
+ r = ao_scheme_string_alloc(alen);
+ a = ao_scheme_atom_fetch();
+ if (!r)
+ return NULL;
+ strcpy(r->val, a->name);
+ return r;
+}
+
+struct ao_scheme_string *
+ao_scheme_string_cat(struct ao_scheme_string *a, struct ao_scheme_string *b)
+{
+ int alen = strlen(a->val);
+ int blen = strlen(b->val);
+ struct ao_scheme_string *r;
+
+ ao_scheme_string_stash(a);
+ ao_scheme_string_stash(b);
+ r = ao_scheme_string_alloc(alen + blen);
+ b = ao_scheme_string_fetch();
+ a = ao_scheme_string_fetch();
+ if (!r)
+ return NULL;
+ strcpy(r->val, a->val);
+ strcpy(r->val+alen, b->val);