|
|
1.1 root 1: /* m_replace.c - replace an entry in the profile */
2:
3: #include "../h/mh.h"
4: #include <stdio.h>
5:
6:
7: void m_replace (key, value)
8: register char *key,
9: *value;
10: {
11: register struct node *np;
12:
13: m_getdefs ();
14: if (m_defs == NULL) {
15: np = m_defs = (struct node *) malloc (sizeof *np);
16: if (np == NULL)
17: adios (NULLCP, "unable to allocate profile storage");
18:
19: np -> n_name = getcpy (key);
20: np -> n_field = getcpy (value);
21: np -> n_context = 1;
22: np -> n_next = NULL;
23: ctxflags |= CTXMOD;
24: return;
25: }
26:
27: for (np = m_defs;; np = np -> n_next) {
28: if (uleq (np -> n_name, key)) {
29: if (strcmp (value, np -> n_field) != 0) {
30: if (!np -> n_context)
31: admonish (NULLCP, "bug: m_replace(key=\"%s\",value=\"%s\")",
32: key, value);
33: if (np -> n_field)
34: free (np -> n_field);
35: np -> n_field = getcpy (value);
36: ctxflags |= CTXMOD;
37: }
38: return;
39: }
40: if (!np -> n_next)
41: break;
42: }
43: np -> n_next = (struct node *) malloc (sizeof *np);
44: if (np -> n_next == NULL)
45: adios (NULLCP, "unable to allocate profile storage");
46:
47: np = np -> n_next;
48: np -> n_name = getcpy (key);
49: np -> n_field = getcpy (value);
50: np -> n_context = 1;
51: np -> n_next = NULL;
52: ctxflags |= CTXMOD;
53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.