/*
** context_del.c -- delete an entry from 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 <h/mh.h>
#include <h/utils.h>

/*
** Delete a key/value pair from the context/profile list.
** Return 0 if key is found, else return 1.
*/

int
context_del(char *key)
{
	struct node *np, *pp;

	for (np = m_defs, pp = NULL; np; pp = np, np = np->n_next) {
		if (!mh_strcasecmp(np->n_name, key)) {
			if (!np->n_context)
				admonish(NULL, "bug: context_del(key=\"%s\")", np->n_name);
			if (pp)
				pp->n_next = np->n_next;
			else
				m_defs = np->n_next;
			mh_free0(&(np->n_name));
			if (np->n_field)
				mh_free0(&(np->n_field));
			mh_free0(&np);
			ctxflags |= CTXMOD;
			return 0;
		}
	}

	return 1;
}
