|
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: 8886 (0x22b6) Types: TextFile Names: »mta2txt.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Lib/pp/mta2txt.c«
/* mta2txt.c: handle text encoding of various mta structures */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/mta2txt.c,v 5.0 90/09/20 16:11:11 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/mta2txt.c,v 5.0 90/09/20 16:11:11 pp Exp Locker: pp $ * * $Log: mta2txt.c,v $ * Revision 5.0 90/09/20 16:11:11 pp * rcsforce : 5.0 public release * */ #include "util.h" #include <isode/cmd_srch.h> #include "mta.h" #include "tb_com.h" #include "tb_a.h" #include "tb_p1.h" extern char *genstore (); char *utctime (); char *int2txt (); extern void argv2fp (); static char *P1_rreq2txt (); #define crit2txt(n) rcmd_srch ((n), tbl_crit) extern CMD_TABLE p1tbl_mpduid [/* mpdu-identifier */], p1tbl_trace [/* trace-information */], p1tbl_globaldomid [/* global-domain-identifier */], p1tbl_domsinfo [/* domain-supplied-info */], p1tbl_action [/* domain-supplied-info-action */], p1tbl_encinfoset [/* encode-info-types-set */], tbl_crit [], atbl_addr [/* address-lines */], tbl_bool [], atbl_mtarreq [/* mta-report-request */], atbl_usrreq [/* user-report-request */]; /* --------------------- Memory->Text File ---------------------------- */ void globaldomid2txt (); void encodedinfo2txt (); void mpduid2txt (mp, argv, argcp) /* MPDUIdentifier->Txt */ MPDUid *mp; char *argv[]; int *argcp; { int n = *argcp; PP_DBG (("Lib/pp/mpduid2txt()")); if (mp->mpduid_string != NULL) { argv[n++] = "="; argv[n++] = rcmd_srch (MPDUID_STRING, p1tbl_mpduid); argv[n++] = mp->mpduid_string; *argcp = n; } globaldomid2txt (&mp->mpduid_DomId, argv, argcp); } void globaldomid2txt (gp, argv, argcp) /* GlobalDomainIdentifier->Txt */ GlobalDomId *gp; char *argv[]; int *argcp; { int n = *argcp; PP_DBG (("Lib/pp/golbaldomid2txt (c=%s, a=%s, p=%s)", gp->global_Country ? gp->global_Country : "notspecified", gp->global_Admin ? gp->global_Admin : "notspecified", gp->global_Private && isstr (gp->global_Private) ? gp->global_Private : "notspecified")); if (gp->global_Country != NULLCP) { argv[n++] = "="; argv[n++] = rcmd_srch (GLOBAL_COUNTRY, p1tbl_globaldomid); argv[n++] = gp->global_Country; } if (gp->global_Admin != NULLCP) { argv[n++] = "="; argv[n++] = rcmd_srch (GLOBAL_ADMIN, p1tbl_globaldomid); argv[n++] = gp->global_Admin; } if (gp->global_Private != NULLCP) { argv[n++] = "="; argv[n++] = rcmd_srch (GLOBAL_PRIVATE, p1tbl_globaldomid); argv[n++] = gp->global_Private; } *argcp = n; } extern char *time2txt (); void domsinfo2txt (sp, argv, argcp) /* DomainSuppliedInfo->Txt */ DomSupInfo *sp; char *argv[]; int *argcp; { int n = *argcp; PP_DBG (("Lib/pp/domsinfo2txt()")); if (sp->dsi_time != 0) { argv[n++] = "="; argv[n++] = rcmd_srch (DSI_TIME, p1tbl_domsinfo); argv[n++] = time2txt (sp->dsi_time); } if (sp->dsi_deferred != 0) { argv[n++] = "="; argv[n++] = rcmd_srch (DSI_DEFERRED, p1tbl_domsinfo); argv[n++] = time2txt (sp->dsi_deferred); } if (sp->dsi_action == ACTION_RELAYED || sp->dsi_action == ACTION_ROUTED) { argv[n++] = "="; argv[n++] = rcmd_srch (DSI_ACTION, p1tbl_domsinfo); argv[n++] = int2txt (sp->dsi_action); } if (sp->dsi_converted.eit_types != NULL || sp->dsi_converted.eit_g3parms != NULL || sp->dsi_converted.eit_tTXparms != NULL || sp->dsi_converted.eit_presentation != NULL) { argv[n++] = rcmd_srch (DSI_CONVERTED, p1tbl_domsinfo); encodedinfo2txt (&sp->dsi_converted, argv, &n); } if (sp->dsi_attempted_md.global_Country != NULLCP || sp->dsi_attempted_md.global_Admin != NULLCP || sp->dsi_attempted_md.global_Private != NULLCP) { argv[n++] = rcmd_srch (DSI_ATTEMPTED, p1tbl_domsinfo); globaldomid2txt (&sp->dsi_attempted_md, argv, &n); } *argcp = n; } void action2txt (fp, pvkey, action) /*DomainSuppliedInfo (action)->Txt */ FILE *fp; char *pvkey; int action; { char *keywd; PP_DBG (("Lib/pp/action2txt(%s %d)", pvkey, action)); keywd = rcmd_srch (action, p1tbl_action); (void) fprintf (fp, "%s%s\n", pvkey, keywd); } void encodedinfo2txt (ep, argv, argcp) /* EncodedInformationTypes->Txt */ EncodedIT *ep; char *argv[]; int *argcp; { char buf[LINESIZE]; int n = *argcp; extern char *listbpt2txt (); PP_DBG (("Lib/encodedinfo2txt('%d' '%d' '%d')", ep->eit_g3parms, ep->eit_tTXparms, ep->eit_presentation)); (void) listbpt2txt (ep -> eit_types, buf); if (buf[0]) { PP_DBG (("Lib/listbpt2txt ('%s')", buf)); argv[n++] = "="; argv[n++] = rcmd_srch (EI_BIT_STRING, p1tbl_encinfoset); argv[n++] = genstore(buf); } if (ep->eit_g3parms != 0){ argv[n++] = "="; argv[n++] = rcmd_srch (EI_G3NONBASIC, p1tbl_encinfoset); argv[n++] = int2txt ((int)ep -> eit_g3parms); } if (ep->eit_tTXparms != 0){ argv[n++] = "="; argv[n++] = rcmd_srch (EI_TELETEXNONBASIC, p1tbl_encinfoset); argv[n++] = int2txt ((int)ep -> eit_tTXparms); } if (ep->eit_presentation != 0){ argv[n++] = "="; argv[n++] = rcmd_srch (EI_PRESENTATION, p1tbl_encinfoset); argv[n++] = int2txt ((int)ep->eit_presentation); } *argcp = n; } char *listbpt2txt (bpt, buf) LIST_BPT *bpt; char *buf; { LIST_BPT *list; PP_DBG (("Lib/pp/listbpt2txt()")); buf[0] = 0; for (list = bpt; list; list = list->li_next) { if (list->li_name == NULLCP) continue; (void) strcat (buf, list->li_name); if (list->li_next) (void) strcat (buf, ","); } return buf; } void trace2txt (tp, argv, argcp) /* TraceInformation->Txt */ Trace *tp; char *argv[]; int *argcp; { int n = *argcp; PP_DBG (("Lib/pp/trace2txt()")); if (tp->trace_mta != NULLCP) { argv[n++] = "="; argv[n++] = rcmd_srch (TRACE_MTA, p1tbl_trace); argv[n++] = tp->trace_mta; *argcp = n; } globaldomid2txt (&tp->trace_DomId, argv, argcp); domsinfo2txt (&tp->trace_DomSinfo, argv, argcp); n = *argcp; argv[n++] = rcmd_srch (EOB, p1tbl_trace); *argcp = n; } /* ReportRequest->Txt */ void repreq2txt (resp, mta, usr, argv, argcp) int resp; int mta; int usr; char *argv[]; int *argcp; { char *p; int n = *argcp; if ((p = P1_rreq2txt (AD_RESPONSIBILITY, resp)) != NULLCP) { argv[n++] = "="; argv[n++] = rcmd_srch (AD_RESPONSIBILITY, atbl_addr); argv[n++] = p; } if ((p = P1_rreq2txt (AD_MTA_REP_REQ, mta)) != NULLCP) { argv[n++] = "="; argv[n++] = rcmd_srch (AD_MTA_REP_REQ, atbl_addr); argv[n++] = p; } if ((p = P1_rreq2txt (AD_USR_REP_REQ, usr)) != NULLCP) { argv[n++] = "="; argv[n++] = rcmd_srch (AD_USR_REP_REQ, atbl_addr); argv[n++] = p; } *argcp = n; } static char* P1_rreq2txt (type, val) /* ReportRequest->Txt */ int type; int val; { PP_DBG (("Lib/pp/P1_rreq2txt(%d %d)", type, val)); switch (type) { case AD_RESPONSIBILITY: switch (val) { case YES: case NO: return rcmd_srch (val, tbl_bool); default: return (NULLCP); } case AD_MTA_REP_REQ: switch (val) { case AD_MTA_NONE: case AD_MTA_BASIC: case AD_MTA_CONFIRM: case AD_MTA_AUDIT_CONFIRM: return rcmd_srch (val, atbl_mtarreq); default: return (NULLCP); } case AD_USR_REP_REQ: switch (val) { case AD_USR_NONE: case AD_USR_NOREPORT: case AD_USR_BASIC: case AD_USR_CONFIRM: return rcmd_srch (val, atbl_usrreq); default: return (NULLCP); } } return (NULLCP); } char *time2txt (t) UTC t; { static char buffer[LINESIZE]; UTC2rfc (t, buffer); return buffer; } char *int2txt (val) int val; { char buf[LINESIZE]; (void) sprintf (buf, "%ld", val); return genstore (buf); } char *qb2hex (qb) struct qbuf *qb; { char *hexbuf; char *str; hexbuf = smalloc (2 *qb -> qb_len + 1); str = qb2str(qb); hexbuf[explode (hexbuf, str, qb -> qb_len)] = 0; free (str); return hexbuf; } void dlexp2txt (dlp, argv, argcp) DLHistory *dlp; char *argv[]; int *argcp; { int n = *argcp; argv[n++] = dlp -> dlh_addr ? dlp -> dlh_addr : ""; argv[n++] = dlp -> dlh_dn ? dlp -> dlh_dn : ""; argv[n++] = dlp -> dlh_time ? time2txt (dlp -> dlh_time) : ""; *argcp = n; } void fname2txt (fn, crt, argv, argcp) FullName *fn; int crt; char *argv[]; int *argcp; { int n = *argcp; argv[n++] = fn -> fn_addr ? fn -> fn_addr : ""; argv[n++] = fn -> fn_dn ? fn -> fn_dn : ""; if (crt) argv[n++] = crit2txt (crt); *argcp = n; } void extension2txt (ext, fp, argv, argcp) Extension *ext; FILE *fp; char *argv[]; int *argcp; { int n = *argcp; argv[n++] = int2txt (ext -> ext_int); argv[n++] = ext -> ext_oid ? sprintoid (ext -> ext_oid) : ""; argv[n++] = qb2hex (ext -> ext_value); argv[n++] = rcmd_srch (ext -> ext_criticality, tbl_crit); argv[n++] = NULLCP; argv2fp (fp, argv); free (argv[2]); }