- return;
- }
-
- /*
- * Search list of context/profile entries for
- * this key, and replace its value if found.
- */
- for (np = m_defs;; np = np->n_next) {
- if (!strcasecmp (np->n_name, key)) {
- if (strcmp (value, np->n_field)) {
- if (!np->n_context)
- admonish (NULL, "bug: context_replace(key=\"%s\",value=\"%s\")", key, value);
- if (np->n_field)
- free (np->n_field);
- np->n_field = getcpy (value);
- ctxflags |= CTXMOD;
- }
- return;
- }
- if (!np->n_next)
- break;
- }
-
- /*
- * Else add this new entry at the end
- */
- np->n_next = (struct node *) malloc (sizeof(*np));
- if (!np->n_next)
- adios (NULL, "unable to allocate profile storage");
-
- np = np->n_next;
- np->n_name = getcpy (key);
- np->n_field = getcpy (value);
- np->n_context = 1;
- np->n_next = NULL;
- ctxflags |= CTXMOD;