|
|
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 u
Length: 2440 (0x988)
Types: TextFile
Names: »ut_trace.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Lib/pp/ut_trace.c«
/* ut_trace.c: Deals trace structures */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/ut_trace.c,v 5.0 90/09/20 16:13:26 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/ut_trace.c,v 5.0 90/09/20 16:13:26 pp Exp Locker: pp $
*
* $Log: ut_trace.c,v $
* Revision 5.0 90/09/20 16:13:26 pp
* rcsforce : 5.0 public release
*
*/
#include "util.h"
#include "mta.h"
#include <sys/time.h>
extern char *loc_dom_mta;
Trace *trace_new ()
{
Trace *tp;
tp = (Trace *) smalloc (sizeof *tp);
bzero ((char *)tp, sizeof *tp);
tp -> trace_mta = strdup (loc_dom_mta);
GlobalDomId_new (&tp -> trace_DomId);
tp -> trace_DomSinfo.dsi_time = utcnow ();
return tp;
}
Trace *trace_dup(old)
Trace *old;
{
Trace *ret;
if (old == NULL)
return NULL;
ret = (Trace *) smalloc (sizeof *ret);
bzero ((char *)ret, sizeof *ret);
if (old->trace_mta)
ret->trace_mta = strdup(old->trace_mta);
GlobalDomId_dup(&ret->trace_DomId, &old -> trace_DomId);
ret->trace_DomSinfo.dsi_time = utcdup(old->trace_DomSinfo.dsi_time);
trace_add(&ret, trace_dup(old->trace_next));
return ret;
}
void trace_add (base, new)
Trace **base, *new;
{
Trace **tp;
for (tp = base; *tp; tp = &(*tp) -> trace_next)
continue;
*tp = new;
}
void trace_free (tp)
Trace *tp;
{
if (tp == NULL)
return;
if (tp -> trace_next)
trace_free (tp -> trace_next);
if (tp -> trace_mta)
free (tp -> trace_mta);
GlobalDomId_free (&tp -> trace_DomId);
DomSupInfo_free (&tp -> trace_DomSinfo);
free ((char *)tp);
}
int trace_equ(one, two)
Trace *one, *two;
{
if (one == NULL
|| two == NULL)
return 1;
if (one->trace_mta == NULLCP
|| two->trace_mta == NULLCP)
return 1;
if (one->trace_mta && two->trace_mta
&& lexequ (one->trace_mta, two->trace_mta) != 0)
return 1;
if (lexequ (one -> trace_DomId.global_Country,
two -> trace_DomId.global_Country) != 0)
return 1;
if (lexequ (one -> trace_DomId.global_Admin,
two -> trace_DomId.global_Admin) != 0)
return 1;
if (one -> trace_DomId.global_Private == NULLCP
&& two -> trace_DomId.global_Private == NULLCP)
return 0;
if (one -> trace_DomId.global_Private == NULLCP
|| two -> trace_DomId.global_Private == NULLCP)
return 1;
if (lexequ (one -> trace_DomId.global_Private,
two -> trace_DomId.global_Private) != 0)
return 1;
return 0;
}