Annotation of 43BSD/contrib/mh/sbr/m_replace.c, revision 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.