|
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 q
Length: 9493 (0x2515) Types: TextFile Names: »q2txt.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Lib/pp/q2txt.c«
/* q2txt.c: converts qstruct into text encoding */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/q2txt.c,v 5.0 90/09/20 16:11:25 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Lib/pp/RCS/q2txt.c,v 5.0 90/09/20 16:11:25 pp Exp Locker: pp $ * * $Log: q2txt.c,v $ * Revision 5.0 90/09/20 16:11:25 pp * rcsforce : 5.0 public release * */ #include "util.h" #include <isode/cmd_srch.h> #include "q.h" #include "tb_com.h" #include "tb_q.h" #include "mta.h" #define crit2txt(n) rcmd_srch ((n), tbl_crit) #define txt2int(n) atoi (n) extern void genreset (); extern void argv2fp (); extern void encodedinfo2txt (); extern void extension2txt (); extern void mpduid2txt (); extern void trace2txt (); extern CMD_TABLE tbl_crit [], tbl_bool [], qtbl_que [/* message-envelope-parameters */], qtbl_mt_type [/* message-type */], qtbl_con_type [/* content-type */], qtbl_priority [/* message-priority */]; /* ------------------- Memory -> Text File ------------------------------ */ char *qb2hex (); static char *Q_msgtype2txt (), *Q_priority2txt (); void dlexp2txt (); void fname2txt (); extern char *int2txt (); extern char *time2txt (); int q2txt (fp, qp) FILE *fp; register Q_struct *qp; { char *argv[100]; int argc; Trace *trace; DLHistory *dlexp; genreset (); PP_DBG (("Lib/pp/q2txt(type=%d, size=%ld)", qp->msgtype, qp->msgsize)); argv[0] = rcmd_srch (Q_MSGTYPE, qtbl_que); argv[1] = Q_msgtype2txt (qp->msgtype); argv[2] = NULLCP; argv2fp (fp, argv); if (qp -> msgsize != 0) { argv[0] = rcmd_srch (Q_MSGSIZE, qtbl_que); argv[1] = int2txt ((int)qp->msgsize); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp->defertime != 0) { argv[0] = rcmd_srch (Q_DEFERREDTIME, qtbl_que); argv[1] = time2txt (qp->defertime); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> latest_time) { argv[0] = rcmd_srch (Q_LATESTTIME, qtbl_que); argv[1] = time2txt (qp -> latest_time); argv[2] = crit2txt (qp -> latest_time_crit); argv[3] = NULLCP; argv2fp (fp, argv); } if (qp -> nwarns != 0) { argv[0] = rcmd_srch (Q_NWARNS, qtbl_que); argv[1] = int2txt ((int)qp->nwarns); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> warninterval != 0) { argv[0] = rcmd_srch (Q_WARNINTERVAL, qtbl_que); argv[1] = int2txt (qp->warninterval); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> retinterval != 0) { argv[0] = rcmd_srch (Q_RETINTERVAL, qtbl_que); argv[1] = int2txt (qp->retinterval); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> cont_type != NULLCP) { argv[0] = rcmd_srch (Q_CONTENT_TYPE, qtbl_que); argv[1] = qp -> cont_type; argv[2] = NULLCP; argv2fp (fp, argv); } argv[0] = rcmd_srch (Q_ENCODED_INFO, qtbl_que); argc = 1; encodedinfo2txt (&qp->encodedinfo, argv, &argc); argv[argc] = NULLCP; if (argc != 1) argv2fp (fp, argv); argv[0] = rcmd_srch (Q_ORIG_ENCODED_INFO, qtbl_que); argc = 1; encodedinfo2txt (&qp->orig_encodedinfo, argv, &argc); argv[argc] = NULLCP; if (argc != 1) argv2fp (fp, argv); if (qp -> priority != PRIO_NORMAL) { argv[0] = rcmd_srch (Q_PRIORITY, qtbl_que); argv[1] = Q_priority2txt (qp->priority); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> disclose_recips) { argv[0] = rcmd_srch (Q_DISCLOSE_RECIPS, qtbl_que); argv[1] = rcmd_srch (TRUE, tbl_bool); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> implicit_conversion) { argv[0] = rcmd_srch (Q_IMPLICIT_CONVERSION, qtbl_que); argv[1] = rcmd_srch (TRUE, tbl_bool); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> alternate_recip_allowed) { argv[0] = rcmd_srch (Q_ALTERNATE_RECIP_ALLOWED, qtbl_que); argv[1] = rcmd_srch (TRUE, tbl_bool); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> content_return_request) { argv[0] = rcmd_srch (Q_CONTENT_RETURN_REQUEST, qtbl_que); argv[1] = rcmd_srch (TRUE, tbl_bool); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> recip_reassign_prohibited) { argv[0] = rcmd_srch (Q_RECIP_REASSIGN_PROHIBITED, qtbl_que); argv[1] = rcmd_srch (TRUE, tbl_bool); argv[2] = crit2txt (qp -> recip_reassign_crit); argv[3] = NULLCP; argv2fp (fp, argv); } if (qp -> dl_expansion_prohibited) { argv[0] = rcmd_srch (Q_DL_EXP_PROHIBITIED, qtbl_que); argv[1] = rcmd_srch (TRUE, tbl_bool); argv[2] = crit2txt (qp -> dl_expansion_crit); argv[3] = NULLCP; argv2fp (fp, argv); } if (qp -> conversion_with_loss_prohibited) { argv[0] = rcmd_srch (Q_CONV_WITH_LOSS, qtbl_que); argv[1] = rcmd_srch (TRUE, tbl_bool); argv[2] = crit2txt (qp -> conversion_with_loss_crit); argv[3] = NULLCP; argv2fp (fp, argv); } if (qp->ua_id != NULLCP) { argv[0] = rcmd_srch (Q_UA_ID, qtbl_que); argv[1] = qp -> ua_id; argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> pp_content_correlator) { argv[0] = rcmd_srch (Q_PP_CONT_CORR, qtbl_que); argv[1] = qp -> pp_content_correlator; argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> general_content_correlator) { argv[0] = rcmd_srch (Q_GEN_CONT_CORR, qtbl_que); argv[1] = qb2hex (qp -> general_content_correlator); argv[2] = crit2txt (qp -> content_correlator_crit); argv[3] = NULLCP; argv2fp (fp, argv); free (argv[1]); } if (qp -> originator_return_address) { argv[0] = rcmd_srch (Q_ORIG_RETURN_ADDRESS, qtbl_que); argc = 1; fname2txt (qp -> originator_return_address, qp -> originator_return_address_crit, argv, &argc); argv[argc] = NULLCP; argv2fp (fp, argv); } if (qp -> forwarding_request) { argv[0] = rcmd_srch (Q_FORWARDING_REQUEST, qtbl_que); argv[1] = int2txt (qp -> forwarding_request); argv[2] = crit2txt (qp -> forwarding_request_crit); argv[3] = NULLCP; argv2fp (fp, argv); } if (qp -> originator_certificate) { argv[0] = rcmd_srch (Q_ORIGINATOR_CERT, qtbl_que); argv[1] = qb2hex (qp -> originator_certificate); argv[2] = crit2txt (qp -> originator_certificate_crit); argv[3] = NULLCP; argv2fp (fp, argv); free (argv[1]); } if (qp -> algorithm_identifier) { argv[0] = rcmd_srch (Q_ALGORITHM_ID, qtbl_que); argv[1] = qb2hex (qp -> algorithm_identifier); argv[2] = crit2txt (qp -> algorithm_identifier_crit); argv[3] = NULLCP; argv2fp (fp, argv); free (argv[1]); } if (qp -> message_origin_auth_check) { argv[0] = rcmd_srch (Q_MESSAGE_ORIGIN_AUTH_CHECK, qtbl_que); argv[1] = qb2hex (qp -> message_origin_auth_check); argv[2] = crit2txt (qp -> message_origin_auth_check_crit); argv[3] = NULLCP; argv2fp (fp, argv); free (argv[1]); } if (qp -> security_label) { argv[0] = rcmd_srch (Q_SECURITY_LABEL, qtbl_que); argv[1] = qb2hex (qp -> security_label); argv[2] = crit2txt (qp -> security_label_crit); argv[3] = NULLCP; argv2fp (fp, argv); free (argv[1]); } if (qp -> proof_of_submission_request) { argv[0] = rcmd_srch (Q_PROOF_OF_SUB, qtbl_que); argv[1] = int2txt (qp -> proof_of_submission_request); argv[2] = crit2txt (qp -> proof_of_submission_crit); argv[3] = NULLCP; argv2fp (fp, argv); } argv[0] = rcmd_srch (Q_MESSAGE_EXTENSIONS, qtbl_que); if (qp -> per_message_extensions) { Extension *ext; for (ext = qp -> per_message_extensions; ext; ext = ext -> ext_next) { argc = 1; extension2txt (ext, fp, argv, &argc); } } if (qp -> inbound && qp -> inbound -> li_chan) { argv[0] = rcmd_srch (Q_INCHANNEL, qtbl_que); argv[1] = qp -> inbound -> li_chan -> ch_name; argv[2] = NULLCP; argv2fp (fp, argv); } if ( qp -> inbound && qp -> inbound -> li_mta) { argv[0] = rcmd_srch (Q_INHOST, qtbl_que); argv[1] = qp -> inbound -> li_mta; argv[2] = NULLCP; argv2fp (fp, argv); } argv[0] = rcmd_srch (Q_MSGID, qtbl_que); argc = 1; mpduid2txt (&qp->msgid, argv, &argc); if (argc > 1) { argv[argc] = NULLCP; argv2fp (fp, argv); } argv[0] = rcmd_srch (Q_TRACE, qtbl_que); for (trace = qp->trace; trace; trace = trace -> trace_next) { argc = 1; trace2txt (trace, argv, &argc); argv[argc] = NULLCP; argv2fp (fp, argv); } argv[0] = rcmd_srch (Q_DL_EXP_HISTORY, qtbl_que); for (dlexp = qp -> dl_expansion_history; dlexp; dlexp = dlexp -> dlh_next) { argc = 1; dlexp2txt (dlexp, argv, &argc); argv[argc] = NULLCP; argv2fp (fp, argv); } if (qp -> dl_expansion_history_crit) { argv[0] = rcmd_srch (Q_DL_EXP_HIST_CRIT, qtbl_que); argv[1] = crit2txt (qp -> dl_expansion_history_crit); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp -> queuetime != 0) { argv[0] = rcmd_srch (Q_QUEUETIME, qtbl_que); argv[1] = time2txt (qp->queuetime); argv[2] = NULLCP; argv2fp (fp, argv); } if (qp->departime != 0) { argv[0] = rcmd_srch (Q_DEPARTIME, qtbl_que); argv[1] = time2txt (qp->departime); argv[2] = NULLCP; argv2fp (fp, argv); } (void) fprintf (fp, "%s\n", rcmd_srch (Q_END, qtbl_que)); (void) fflush (fp); return (ferror (fp) ? NOTOK : OK); } static char *Q_msgtype2txt (type) /* Message-type -> Txt */ int type; { PP_DBG (("Lib/pp/Q_msgtype2txt (%d)", type)); switch (type) { case MT_UMPDU: case MT_PMPDU: case MT_DMPDU: return rcmd_srch (type, qtbl_mt_type); } return NULLCP; } static char *Q_priority2txt (type) /* Priority -> Txt */ int type; { PP_DBG (("Lib/pp/Q_priority2txt('%d')", type)); switch (type) { case PRIO_NORMAL: case PRIO_NONURGENT: case PRIO_URGENT: return rcmd_srch (type, qtbl_priority); } return NULLCP; }