|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 1230 (0x4ce)
Types: TextFile
Names: »m_replace.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦3658e588a⟧ »EurOpenD3/mail/mh/mh-6.7.tar.Z«
└─⟦c75e36ecb⟧
└─⟦this⟧ »mh-6.7/sbr/m_replace.c«
/* m_replace.c - replace an entry in the profile */
#include "../h/mh.h"
#include <stdio.h>
void m_replace (key, value)
register char *key,
*value;
{
register struct node *np;
m_getdefs ();
if (m_defs == NULL) {
np = m_defs = (struct node *) malloc (sizeof *np);
if (np == NULL)
adios (NULLCP, "unable to allocate profile storage");
np -> n_name = getcpy (key);
np -> n_field = getcpy (value);
np -> n_context = 1;
np -> n_next = NULL;
ctxflags |= CTXMOD;
return;
}
for (np = m_defs;; np = np -> n_next) {
if (uleq (np -> n_name, key)) {
if (strcmp (value, np -> n_field) != 0) {
if (!np -> n_context)
admonish (NULLCP, "bug: m_replace(key=\"%s\",value=\"%s\")",
key, value);
if (np -> n_field)
free (np -> n_field);
np -> n_field = getcpy (value);
ctxflags |= CTXMOD;
}
return;
}
if (!np -> n_next)
break;
}
np -> n_next = (struct node *) malloc (sizeof *np);
if (np -> n_next == NULL)
adios (NULLCP, "unable to allocate profile storage");
np = np -> n_next;
np -> n_name = getcpy (key);
np -> n_field = getcpy (value);
np -> n_context = 1;
np -> n_next = NULL;
ctxflags |= CTXMOD;
}