annotate sbr/m_replace.c @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /* m_replace.c - replace an entry in the profile */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 #include "../h/mh.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 #include <stdio.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 void m_replace (key, value)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 register char *key,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 *value;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 register struct node *np;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 m_getdefs ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 if (m_defs == NULL) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 np = m_defs = (struct node *) malloc (sizeof *np);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 if (np == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 adios (NULLCP, "unable to allocate profile storage");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 np -> n_name = getcpy (key);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 np -> n_field = getcpy (value);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 np -> n_context = 1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 np -> n_next = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 ctxflags |= CTXMOD;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 return;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 for (np = m_defs;; np = np -> n_next) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 if (uleq (np -> n_name, key)) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 if (strcmp (value, np -> n_field) != 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 if (!np -> n_context)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 admonish (NULLCP, "bug: m_replace(key=\"%s\",value=\"%s\")",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 key, value);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 if (np -> n_field)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 free (np -> n_field);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 np -> n_field = getcpy (value);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 ctxflags |= CTXMOD;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 return;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 if (!np -> n_next)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 np -> n_next = (struct node *) malloc (sizeof *np);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 if (np -> n_next == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 adios (NULLCP, "unable to allocate profile storage");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 np = np -> n_next;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 np -> n_name = getcpy (key);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 np -> n_field = getcpy (value);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 np -> n_context = 1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 np -> n_next = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 ctxflags |= CTXMOD;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 }