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