X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fcontext_replace.c;h=bb49a90ab666474ba48c9778eccbee8fd98aea14;hb=ced6090a330d3d83d0bce709f756aa3d7d65fea4;hp=541253db66309398b6591db84ebe7124ad184fc2;hpb=6c42153ad9362cc676ea66563bf400d7511b3b68;p=mmh diff --git a/sbr/context_replace.c b/sbr/context_replace.c index 541253d..bb49a90 100644 --- a/sbr/context_replace.c +++ b/sbr/context_replace.c @@ -1,73 +1,64 @@ - /* - * context_replace.c -- add/replace an entry in the context/profile list - * - * $Id$ - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ +** context_replace.c -- add/replace an entry in the context/profile list +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ #include +#include void context_replace (char *key, char *value) { - register struct node *np; + register struct node *np; + + /* + ** If list is emtpy, allocate head of profile/context list. + */ + if (!m_defs) { + m_defs = (struct node *) mh_xmalloc (sizeof(*np)); - /* sanity check - check that context has been read */ - if (defpath == NULL) - adios (NULL, "oops, context hasn't been read yet"); + np = m_defs; + np->n_name = getcpy (key); + np->n_field = getcpy (value); + np->n_context = 1; + np->n_next = NULL; + ctxflags |= CTXMOD; + 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 (!mh_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; + } - /* - * If list is emtpy, allocate head of profile/context list. - */ - if (!m_defs) { - if (!(m_defs = (struct node *) malloc (sizeof(*np)))) - adios (NULL, "unable to allocate profile storage"); + /* + ** Else add this new entry at the end + */ + np->n_next = (struct node *) mh_xmalloc (sizeof(*np)); - np = m_defs; + np = np->n_next; np->n_name = getcpy (key); np->n_field = getcpy (value); np->n_context = 1; np->n_next = NULL; ctxflags |= CTXMOD; - 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; }