- if (!n->meta.linked)
- return 0;
-
- /* Link all names that aren't linked yet. */
-
- SET_FOREACH(t, n->meta.names, i)
- if (replace) {
- if ((r = hashmap_replace(n->meta.manager->names, t, n)) < 0)
- return r;
- } else {
- if ((r = hashmap_put(n->meta.manager->names, t, n)) < 0)
- return r;
- }
-
- return 0;
-}
-
-int name_link(Name *n) {
- int r;
-
- assert(n);
- assert(!set_isempty(n->meta.names));
- assert(!n->meta.linked);
-
- if ((r = name_sanitize(n)) < 0)
- return r;
-
- n->meta.linked = true;
-
- if ((r = name_link_names(n, false)) < 0) {
- char *t;
- Iterator i;
-
- /* Rollback the registered names */
- SET_FOREACH(t, n->meta.names, i)
- hashmap_remove_value(n->meta.manager->names, t, n);
-
- n->meta.linked = false;
- return r;
- }
-
- if (n->meta.load_state == NAME_STUB) {
- LIST_PREPEND(Meta, load_queue, n->meta.manager->load_queue, &n->meta);
- n->meta.in_load_queue = true;
- }