Annotation of 43BSD/contrib/mh/sbr/m_replace.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.